TAB(选项卡)效果是网页中常见的页面效果 实现它也有N种方式,在给大家推荐一款 基于jQuery 的TAB插件
其特色是可以较为自由的设置各种选项,达到自己需要的效果。样式没有写,只写了够实现功能的,至于美好就自己去写CSS去美化一下好了。
主要功能:
实现选项卡切换
内置五种切换方式 可以通过参数设置来设定
可以选择触发方式 是点击还是划过
是否自动切换
点击查看DEMO
点击下载JS(备用下载)
使用方式:
$("#testtab").tab({ tabId:"#tabtag", //切换控制器的ID tabTag:"li", //切换控制器标签 conId:"#tabcon", //内容容器ID conTag:"div", //容器标签 act:"click", //点击触发 也可以不设置 默认就为click 设置为 mouseover则为划过 effact: "scrolly" //效果为纵向滚动 , scrollx: 横向滚动 , "slow" : slow效果 auto:true, //自动滚动,默认false dft:2 //设置起始显示序列 })
DOM 结构:
<div class="testtab" id="testtab"> <div id="tabtag" class="tabtag" style="position:relative;"> <ul> <li class="cur">项目一</li> <li>项目二</li> <li>项目三</li> <li>项目四</li> </ul> </div> <div id="tabcon" class="tabcon"> <div> <ul> <li><a href="#nogo">内容一</a></li> <li><a href="#nogo">内容一</a></li> <li><a href="#nogo">内容一</a></li> </ul> </div> <div> <ul> <li><a href="#nogo">内容二</a></li> <li><a href="#nogo">内容二</a></li> <li><a href="#nogo">内容二</a></li> </ul> </div> <div> <ul> <li><a href="#nogo">内容三</a></li> <li><a href="#nogo">内容三</a></li> <li><a href="#nogo">内容三</a></li> </ul> </div> <div> <ul> <li><a href="#nogo">内容四</a></li> <li><a href="#nogo">内容四</a></li> <li><a href="#nogo">内容四</a></li> </ul> </div> </div> </div>
实例:
$("#testtab").tab({ tabId:"#tabtag", //切换控制器的ID tabTag:"li", //切换控制器标签 conId:"#tabcon", //内容容器ID conTag:"div", //容器标签 act:"click", //点击触发 也可以不设置 默认就为click 设置为 mouseover则为划过 effact: "scrolly" //效果为纵向滚动 dft:0 })
插件代码:
function cur(ele,currentClass,tag){ //标记当前函数 ele= $(ele)? $(ele):ele; if(!tag){ ele.addClass(currentClass).siblings().removeClass(currentClass); }else{ ele.addClass(currentClass).siblings(tag).removeClass(currentClass); } } $.fn.tab=function(options){ //插件开始 var org={ //原始设置 tabId: "", tabTag: "", conId: "", conTag: "", curClass: "cur", act: "click", dft: 0, effact: null, auto: false, autotime: 3000, aniSpeed: 500 } $.extend(org,options); //合并自定义设置 var t=false; //自动开始定时器 var k=0; //切换序列 默认为0 var _this=$(this); //取得当前元素 var tagwrp=$(org.tabId); //切换控制器容器 var conwrp=$(org.conId); //切换控制器标签 var tag=tagwrp.find(org.tabTag); //切换容器的容器 var con=conwrp.find(org.conTag); //切换内容的容器 var len=tag.length; //有多少个项目 var taght=parseInt(tagwrp.css("height")); //得到控制器高度 var conwh=conwrp.get(0).offsetWidth; //得到控制器宽度 var conht=conwrp.get(0).offsetHeight; //以及高度 var curtag=tag.eq(org.dft); //初始控制器标签 //初始化tab cur(curtag,org.curClass); //标记默认序列 con.eq(org.dft).show().siblings(org.conTag).hide(); //显示默认项目 if(org.effact=="scrollx"){ //如果使用 横向滚动 则准备CSS 条件 var padding=parseInt(con.css("padding-left"))+parseInt(con.css("padding-right")); _this.css({ "position" :"relative", "height" :taght+conht+"px", "overflow" :"hidden" }); conwrp.css({ "width" :len*conwh+"px", "height" :conht+"px", "position" :"absolute", "top" :taght+"px" }); con.css({ "float" :"left", "width" :conwh-padding+"px", "display" :"block" }); } if(org.effact=="scrolly"){ //如果使用 纵向滚动 则准备CSS 条件 var padding=parseInt(con.css("padding-top"))+parseInt(con.css("padding-bottom")); _this.css({ "position" :"relative", "height" :taght+conht+"px", "overflow" :"hidden" }); tagwrp.css({ "z-index" :100 }) conwrp.css({ "width" :"100%", "height" :len*conht+"px", "position" :"absolute", "z-index" :99 }) con.css({ "height" :conht-padding+"px", "float" :"none", "display" :"block" }); } tag.css({"cursor":"pointer"}) //切换控制标签用手性鼠标 .each(function(i){ //循环切换 tag.eq(i).bind(org.act,function(){ //绑定到鼠标动作 cur(this,org.curClass); //标记当前 k=i; //传递序列 switch(org.effact){ //根据设定的切换效果去转换切换方式 case "slow" : con.eq(i).show("slow").siblings(org.conTag).hide("slow"); //slow 效果 break; case "fast" : con.eq(i).show("fast").siblings(org.conTag).hide("fast"); //fast 效果 break; case "scrollx" : conwrp.animate({left:-i*conwh+"px"},org.aniSpeed); //横向滚动效果 break; case "scrolly" : conwrp.animate({top:-i*conht+taght+"px"},org.aniSpeed); //纵向滚动效果 break; default : con.eq(i).show().siblings(org.conTag).hide(); //默认切换 break; //End of switch } } ) }) if(org.auto){ //自动切换 var drive=function(){ if(org.act=="mouseover"){ tag.eq(k).mouseover(); }else if(org.act=="click"){ tag.eq(k).click(); } k++; if(k==len) k=0; } t=setInterval(drive,org.autotime); } //End of $.fn.tab
Via:http://mengqing.org/archives/jquery-tab-support-auto-play.html
声明:本文采用 BY-NC-SA 协议进行授权,如无注明均为原创,转载请注明转自 你好!刘
本文地址:基于jQuery插件的Tab选项卡效果 自由设置切换效果 支持自动播放
本文地址:基于jQuery插件的Tab选项卡效果 自由设置切换效果 支持自动播放
发表评论