javascript实现tabs选项卡切换效果(扩展版)


Posted in Javascript onMarch 19, 2013

前段时间写了个tabs 选项卡切换效果,今天抽空在原有的基础上进行了扩展,加入了自动轮播,这样就变成了类似图片轮播的效果了。
html 代码:

<!DOCTYPE HTML> 
<html lang="en-US"> 
<head> 
<meta charset="UTF-8"> 
<title>js-tabs</title> 
<link rel="stylesheet" type="text/css" href="../css/base.css" media="all"/> 
<style type="text/css"> 
a{color:#a0b3d6;} 
.tabs{border:1px solid #a0b3d6;margin:100px;width:300px;} 
.tabs-nav a{background:#eaf0fd;line-height:30px;padding:0 20px;display:inline-block;border-right:1px solid #a0b3d6;border-bottom:1px solid #a0b3d6;float:left;} 
.tabs-nav .select1,.tabs-nav .select2,.tabs-nav .select3,.tabs-nav .select4{background:white;border-bottom:1px solid white;_position:relative;} 
.tabs-content{padding:20px;border-top:1px solid #a0b3d6;margin-top:-1px;} 
</style> 
</head> 
<body> 
<div class="tabs" id="tabs"> 
<h2 class="tabs-nav clearfix"> 
<a href="javascript:;">首页</a> 
<a href="javascript:;">技术</a> 
<a href="javascript:;">生活</a> 
<a href="javascript:;">作品</a> 
</h2> 
<p class="tabs-content">首页首页首页首页首页首页首页首页首页首页</p> 
<p class="tabs-content">技术技术技术技术技术技术技术技术技术技术</p> 
<p class="tabs-content">生活生活生活生活生活生活生活生活生活生活</p> 
<p class="tabs-content">作品作品作品作品作品作品作品作品作品作品</p> 
</div> 
<br/><br/> 
<div class="tabs" id="tabs2"> 
<h2 class="tabs-nav clearfix"> 
<a href="javascript:;">11111</a> 
<a href="javascript:;">22222</a> 
<a href="javascript:;">33333</a> 
</h2> 
<p class="tabs-content">11111111111111111111111111111111111</p> 
<p class="tabs-content ">222222222222222222222222222222222222</p> 
<p class="tabs-content ">333333333333333333333333333333333333333</p> 
</div> 
</body> 
</html> 
<script type="text/javascript" src="tabs.js"></script> 
<script type="text/javascript"> 
window.onload = function(){ 
tabs('tabs','click',true,1000); 
tabs('tabs2','mouseover'); 
} 
</script>

tabs.js 代码:
function tabs(id,trigger,autoplay,time){ 
var tabsWrap = document.getElementById(id); 
var tabsBtn = tabsWrap.getElementsByTagName('h2')[0].getElementsByTagName('a'); 
var tabsContent = getClass('tabs-content',tabsWrap); 
var timer = null; 
var current = 0; 
show(0); 
for(var i = 0,len = tabsBtn.length; i < len; i++){ 
tabsBtn[i].index = i; 
if(trigger == 'click'){ 
tabsBtn[i].onclick = function(){ 
show(this.index); 
} 
}else if(trigger == 'mouseover'){ 
tabsBtn[i].onmouseover = function(){ 
show(this.index); 
} 
} 
} 
if(autoplay){ 
autoPlay(); 
tabsWrap.onmouseover = function(){ 
clearInterval(timer); 
} 
tabsWrap.onmouseout = function(){ 
autoPlay(); 
} 
} 
function autoPlay(){ 
timer = setInterval(function(){ 
show(current); 
current++; 
if(current >= tabsBtn.length){ 
current = 0; 
} 
},time); 
} 
function show(n){ 
current = n; 
for(var i = 0,len = tabsBtn.length; i < len; i++){ 
tabsBtn[i].className = ''; 
tabsContent[i].style.display = 'none'; 
} 
tabsBtn[current].className = 'select' + (current + 1); 
tabsContent[current].style.display = 'block'; 
} 
function getClass(classname,obj){ 
var results = []; 
var elems = obj.getElementsByTagName('*'); 
for(var i = 0; i < elems.length; i++){ 
if(elems[i].className.indexOf(classname) != -1){ 
results[results.length] = elems[i]; 
} 
} 
return results; 
} 
}

PS:这是本人闲着无聊,通过自己所学的 javascript 知识,随意写的一些效果。
Javascript 相关文章推荐
爆炸式的JS圆形浮动菜单特效代码
Mar 03 Javascript
JS不间断向上滚动效果代码
Dec 25 Javascript
jquery实现ajax提交form表单的方法总结
Mar 03 Javascript
浅谈在js传递参数中含加号(+)的处理方式
Oct 11 Javascript
Vue.JS入门教程之列表渲染
Dec 01 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
Feb 14 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
May 04 Javascript
详解解决使用axios发送json后台接收不到的问题
Jun 27 Javascript
vue中组件的过渡动画及实现代码
Nov 21 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
Mar 05 Javascript
vue 对axios get pust put delete封装的实例代码
Jan 05 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
Sep 21 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
Mar 19 #Javascript
jquery写个checkbox——类似邮箱全选功能
Mar 19 #Javascript
借助script进行Http跨域请求:JSONP实现原理及代码
Mar 19 #Javascript
DIV+CSS+JS不间断横向滚动实现代码
Mar 19 #Javascript
下载文件个别浏览器文件名乱码解决办法
Mar 19 #Javascript
jQuery点击tr实现checkbox选中的方法
Mar 19 #Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
Mar 19 #Javascript
You might like
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
PHP获取访问设备信息的方法示例
2019/02/20 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
2012/08/09 Javascript
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
jQuery 跨域访问解决原理案例详解
2016/07/09 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
Vue数据驱动模拟实现1
2017/01/11 Javascript
浅谈javascript的闭包
2017/01/23 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
Django中url的反向查询的方法
2018/03/14 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
如何使用Python进行PDF图片识别OCR
2021/01/22 Python
如何用Python徒手写线性回归
2021/01/25 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
原生 JS+CSS+HTML 实现时序图的方法
2019/07/31 HTML / CSS
VSCode 自定义html5模板的实现
2019/12/05 HTML / CSS
乌克兰的第一家手表店:Deka
2020/03/05 全球购物
计算机专业推荐信范文
2013/11/27 职场文书
医药专业应届毕业生求职信范文
2014/01/01 职场文书
个人收入证明范本
2014/01/12 职场文书
料理师求职信
2014/01/30 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
任命书格式模板
2015/09/22 职场文书
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis