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 相关文章推荐
利用XMLHTTP传递参数在另一页面执行并刷新本页
Oct 26 Javascript
jQuery层次选择器选择元素使用介绍
Apr 18 Javascript
js二级地域选择的实现方法
Jun 17 Javascript
往光标所在位置插入值的js代码
Sep 22 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
Feb 19 Javascript
原生js实现放大镜效果
Jan 11 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
Jun 05 Javascript
解决vue数组中对象属性变化页面不渲染问题
Aug 09 Javascript
详解Ubuntu安装angular-cli遇到的坑
Sep 08 Javascript
layui实现三级联动效果
Jul 26 Javascript
TypeScript类型声明书写详解
Aug 28 Javascript
javascript简单实现深浅拷贝过程详解
Oct 08 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
PHP字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
2016/06/06 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
2017/01/16 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
firefox插件Firebug的使用教程
2010/01/02 Javascript
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
js全选实现和判断是否有复选框选中的方法
2015/02/17 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
vue2里面ref的具体使用方法
2017/10/27 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
Python读取网页内容的方法
2015/07/30 Python
tensorflow TFRecords文件的生成和读取的方法
2018/02/06 Python
Python实现string字符串连接的方法总结【8种方式】
2018/07/06 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
python标记语句块使用方法总结
2019/08/05 Python
使用pyecharts生成Echarts网页的实例
2019/08/12 Python
利用PyTorch实现VGG16教程
2020/06/24 Python
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
J2EE模式面试题
2016/10/11 面试题
《第一次抱母亲》教学反思
2014/04/16 职场文书
大学毕业生管理学求职信
2014/09/01 职场文书
管理人员岗位职责
2015/02/14 职场文书
小兵张嘎观后感300字
2015/06/03 职场文书
《鲁班学艺》读后感3篇
2019/11/27 职场文书
如何理解及使用Python闭包
2021/06/01 Python
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android
分享node.js实现简单登录注册的具体代码
2022/04/26 NodeJs
ant design vue的form表单取值方法
2022/06/01 Vue.js