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 相关文章推荐
jquery用get实现ajax在ie里面刷新不进入后台解决方法
Aug 12 Javascript
js中数组Array的一些常用方法总结
Aug 12 Javascript
Firefox和IE兼容性问题及解决方法总结
Oct 08 Javascript
JS简单实现元素复制示例附图
Nov 19 Javascript
改变状态栏文字的js代码
Jun 13 Javascript
jQuery使用$.ajax进行即时验证实例详解
Dec 11 Javascript
webpack 4.0.0-beta.0版本新特性介绍
Feb 10 Javascript
vue-router配合ElementUI实现导航的实例
Feb 11 Javascript
微信小程序开发背景图显示功能
Aug 08 Javascript
js实现同一个页面,多个enter事件绑定的示例
Oct 10 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
Sep 12 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
Jan 05 Vue.js
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中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
详解php用static方法的原因
2018/09/12 PHP
对xmlHttp对象方法和属性的理解
2011/01/17 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
javascript禁用键盘功能键让右击及其他键无效
2013/10/09 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
js进行表单验证实例分析
2015/02/10 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
JS函数多个参数默认值指定方法分析
2016/11/28 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
centos 上快速搭建ghost博客方法分享
2018/05/23 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
JS+CSS实现过渡特效
2021/01/02 Javascript
Python常用模块用法分析
2014/09/08 Python
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
python生成九宫格图片
2018/11/19 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
Python 调用有道翻译接口实现翻译
2020/03/02 Python
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
自我介绍演讲稿
2014/01/15 职场文书
小学社会实践活动总结
2014/07/03 职场文书
国庆65周年演讲稿:回首往昔,展望未来
2014/09/21 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
酒店保洁员岗位职责
2015/02/26 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
骆驼祥子读书笔记
2015/06/26 职场文书