搜索 |
<!-- 支持嵌套tab切换,嵌套的时候最外层换一个样式名称再调用一次既可! -->
<!-- html结构 -->
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>tab切换</title>
<style type="text/css">
body{background: #323232; margin: 0;padding: 0; color: #000}
a{ color: #fff;font-size: 14px; text-decoration: none;}
.tabmain{width: 600px;height: 400px; margin:100px 200px; display: inline-block;
vertical-align: top;
zoom: 1; /* Fix for IE7 */
*display: inline; /* Fix for IE7 */ margin-right: 30px;}
.tabitem{height: 40px; line-height: 40px; font-size: 0px;}
.tabitem a{
display: inline-block; vertical-align: top; zoom: 1; /* Fix for IE7 */
*display: inline; /* Fix for IE7 */ padding: 0 30px; text-align: center;
margin-right: 10px; border-radius: 4px 4px 0 0; background: #777
}
.tabitem a.active{background: #fff;color: #000; }
.tabcontent{
width: 600px; height: 460px; background: #fff; overflow: hidden;
position: relative;}
.tabcontent .contentitem{
width: 100%;height: 100%; display: none;position: absolute;
left: 0; top: 0; background: #fff
}
.tabcontent .current{display: block}
</style>
</head>
<body>
<div class="tabmain" data-arg='{"type":"slide","index":4,"auto":true,"fun":"click"}'>
<div class="tabitem">
<a href="javascript:;" class="active">新闻</a>
<a href="javascript:;">娱乐</a>
<a href="javascript:;">游戏</a>
<a href="javascript:;">工作</a>
</div>
<div class="tabcontent">
<div class="contentitem current" style="background: red">新闻内容</div>
<div class="contentitem" style="background:yellow">娱乐内容</div>
<div class="contentitem" style="background:pink">游戏内容</div>
<div class="contentitem" style="background:purple">工作内容</div>
</div>
</div>
?
<div class="tabmain">
<div class="tabitem">
<a href="javascript:;" class="active">新闻</a>
<a href="javascript:;">娱乐</a>
<a href="javascript:;">游戏</a>
<a href="javascript:;">工作</a>
</div>
<div class="tabcontent">
<div class="contentitem current">新闻内容</div>
<div class="contentitem">娱乐内容</div>
<div class="contentitem">游戏内容</div>
<div class="contentitem">工作内容</div>
</div>
</div>
<script type="text/javascript" src="/wskin/js/jquery.js"></script>
<script type="text/javascript" src="/wskin/js/tab.js"></script>
<script type="text/javascript">
$(function(){
// Tab.init($(".tabmain"));
$(".tabmain").xstab();
})
</script>
</body>
</html>
// tab.js
;(function($){
var Tab=function(el){
var mytab=this;
this.el=el;
// 定义默认的配置参数
this.config={
"type":"default",//采用什么形式展示内容div
"index":0,//默认显示第几个
"auto":false,//是否自动切换
"fun":"mouseover",//切换方式
};
?
//合并配置参数
$.extend(this.config,this.getConfig());
// console.log(this.config)
?
// 调度切换
el.find(">.tabitem a").on(this.config.fun,function(){
mytab.myswitch($(this).index())
})
?
// 如果传了默认显示第几个就加载时切换一次
if(this.config.index>1){
mytab.myswitch(this.config.index-1);
}
?
// 是不是配置了自动切换
if(this.config.auto){
var timer="",nowindex=0;
if(this.config.index>1){
nowindex=this.config.index+1;
}
timer=mytab.autoPlay(nowindex);
this.el.hover(function(){
window.clearInterval(timer)
},function(){
nowindex=$(this).find(">.tabitem a.active").index();
timer=mytab.autoPlay(nowindex+1)
})
}
}
?
Tab.prototype={
autoPlay:function(index){
var _this_=this,mylen=this.el.find(">.tabitem a").length;
return window.setInterval(function(){
if(index>=mylen){
index=0;
}
_this_.myswitch(index)
index+=1;
},3000)
},
?
getConfig:function(){
var args=this.el.data('arg');
var mylen=this.el.find(">.tabitem a").length
if(args && args.fun!="click"){
args.fun="mouseover";
}
if(args){
if(!isNaN(parseInt(args.index)) && parseInt(args.index)<=mylen){
args.index=parseInt(args.index);
}else{
args.index=0;
}
}
return args;
},
myswitch:function(index){
this.el.find(">.tabitem a:eq("+index+")").addClass('active')
.siblings().removeClass('active');
//_this_表示的是寻找到的那个内容div
var _this_=this.el.find(">div.tabcontent > div.contentitem:eq("+index+")");
if(this.config['type']=="fade"){
_this_.stop(true,true).fadeIn().siblings().fadeOut();
}else if(this.config['type']=="slide"){
_this_.stop(true,true).slideDown().siblings().slideUp();
}else{
_this_.stop(true,true).addClass("current").siblings()
.removeClass("current");
}
}
}
// 用Tab.init($(".tabmain"))形式调用的方法
Tab.init=function(els){
var _this_=this;
els.each(function(){
new _this_($(this))
})
};
// 用jquery链式调用的方法
$.fn.extend({
xstab:function(){
// this表示的是jquery对象$(".tabmain")
this.each(function(){
new Tab($(this));
})
}
});
window.Tab=Tab;
})(jQuery);