1//使用 

  var t1=new Tab({
etype:'onmou',//默认点击触发,如果事件写错了,当作单击
autoplay:2000,//有时间值(按照事件自动播放)和false(不自动播放)
invoke:3,//默认是第一项。
});

 
//插件的基本结构
;(function(){
function Tab(options){//options:配置参数
this.tab=document.querySelector('.tab');
this.tabBtn=document.querySelector('.tab_btn');
this.btns=this.tabBtn.getElementsByTagName('li');
this.divs=this.tab.querySelectorAll('.tab_item');
this.num=0;
this.timer=null;
this.options=options;
this.settings={//默认参数
etype:'onclick',//默认点击触发,如果事件写错了,当作单击
autoplay:3000,//有时间值(按照事件自动播放)和false(不自动播放)
invoke:1,//默认是第一项。
effect:'display'//display/opacity
}
this.init();
} Tab.prototype.init=function(){
var that=this;
extend(this.settings,this.options);
if(this.settings.etype=='onclick' || this.settings.etype!='onmouseover'){
this.tabSwitch('onclick');
}else if(this.settings.etype=='onmouseover'){
this.tabSwitch(this.settings.etype);
}
if(this.settings.autoplay){//如果配置参数传入一个时间,允许自动轮播,轮播的时间传过去
this.autoplay(this.settings.autoplay);
}
if(this.settings.invoke>1 && this.settings.invoke<=this.btns.length){
this.num=this.settings.invoke-1;
this.tabchange();
}
this.tab.onmouseover=function(){
clearInterval(that.timer);
}
this.tab.onmouseout=function(){
that.autoplay(that.settings.autoplay);
}
} Tab.prototype.tabSwitch=function(e){
var that=this;
for(var i=0;i<this.btns.length;i++){
this.btns[i].index=i;
this.btns[i][e]=function(){
that.num=this.index;
that.tabchange();
}
}
}
Tab.prototype.tabchange=function(){
for(var i=0;i<this.btns.length;i++){
this.btns[i].className='';
this.divs[i].className='hide';
if(this.settings.effect=='opacity'){
buffermove(this.divs[i],{opacity:0});
this.divs[i].style.display='none';
}
}
this.btns[this.num].className='active';
if(this.settings.effect=='display' || this.settings.effect!='opacity'){
this.divs[this.num].className='show';
}else if(this.settings.effect=='opacity'){
this.divs[this.num].style.display='block';
buffermove(this.divs[this.num],{opacity:100});
}
}
Tab.prototype.autoplay=function(time){
var that=this;
this.timer=setInterval(function(){
that.num++;
if(that.num>=that.btns.length){
that.num=0;
}
that.tabchange();
},time);
} function extend(obj1,obj2){
for(var i in obj2){
obj1[i]=obj2[i];
}
return obj1;
}
window.Tab=Tab;
})();

一个小的tab切换插件的更多相关文章

  1. jquery做一个小的轮播插件---有BUG,后续修改

    //首页无缝轮播 ; (function($, window, document, undefined) { $.fn.slider = function(options) { var default ...

  2. 微信小程序tab切换,可滑动切换,导航栏跟随滚动实现

    简介 看到今日头条小程序页面可以滑动切换,而且tab导航条也会跟着滚动,点击tab导航,页面滑动,切导航栏也会跟着滚动,就想着要怎么实现这个功能 像商城类商品类目如果做成左右滑动切换类目用户体验应该会 ...

  3. iTabs Tab切换插件

    最近项目中使用到Tab切换,切换的页面不变,内容发生变化,随手写了份简单的插件,附带源码.先看样子: 本人也考虑到是否使用jquery ui tab,但是还是热衷于自己写一份,首先好处之一是易于培训, ...

  4. 根据id来实现小程序tab切换,

    本例根据绑定id来实现tab切换,但本例仍有缺陷,用for循环数据,无法实现切换.如有大神能够有更好方法,欢迎留言更正 WXML: <view class="tab"> ...

  5. 编写tab切换插件

    html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  6. 小程序tab切换 点击左右滑动

    wxml <scroll-view scroll-x="true" class="navbar-box"> <block wx:for=&qu ...

  7. 关于一个页面的tab切换整体页面刷新而tab标签处是同一个文件怎么做焦点的问题

    解决方法,不能直接写点击效果就要在超链接中加一个参数,根据参数的值去给变焦点的效果,实现方法如下: <div class="vip_search">           ...

  8. 从一个简单的Tab切换开始——与AJAX的结合

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 小程序——Tab切换

    <view class="body"> <view class="nav bc_white"> <view class=" ...

随机推荐

  1. redis新手入门,摸不着头脑可以看看<一>

    公司在用redis,但我并不会.所以需求就来了.. redis的好处坏处自己百度就好我也不去复制黏贴了. ----------------------------------------------- ...

  2. caffe中Makefile.config详解

    ## Refer to http://caffe.berkeleyvision.org/installation.html # Contributions simplifying and improv ...

  3. 给Ocelot做一个Docker 镜像

    写在前面 在微服务架构中,ApiGateway起到了承前启后,不仅可以根据客户端进行分类,也可以根据功能业务进行分类,而且对于服务调用服务也起到了很好的接口作用.目前在各个云端中,基本上都提供了Api ...

  4. CentOS下安装XAMPP详细教程(转)

    [原文]http://blog.csdn.net/hel12he/article/details/49781813 现在PHP的集成运行环境越来越多,个人比较喜欢XAMPP,更新速度快,好用,安装便捷 ...

  5. CSS中可以继承和不可继承的常见属性

    一.无继承性的属性 1.display:规定元素应该生成的框的类型 2.文本属性: vertical-align:垂直文本对齐 text-decoration:规定添加到文本的装饰 text-shad ...

  6. JavaScript数据迭代方法差别

    js有很多总接待方法,ES6之后又新增了几个: 这里主要讨论数组迭代遍历的方法所以不会细讲for...in... ES5.ES6数组迭代方法有: forEach map filter some eve ...

  7. Spring 中出现Element : property Bean definitions can have zero or more properties. Property elements correspond to JavaBean setter methods exposed by the bean classes. Spring supports primitives, refer

    在这个ApplicationContext.xml文件中出现 如下报错 Element : property Bean definitions can have zero or more proper ...

  8. 2道acm编程题(2014):1.编写一个浏览器输入输出(hdu acm1088);2.encoding(hdu1020)

    //1088(参考博客:http://blog.csdn.net/libin56842/article/details/8950688)//1.编写一个浏览器输入输出(hdu acm1088)://思 ...

  9. 3.2 while 循环

    Python 编程中 while 语句用于循环执行程序,即在条件满足的情况下,循环执行某段代码.所以就需要在循环的代码块中设计一种使代码块循环执行一定次数后是while语句的条件不满足,从而中止whi ...

  10. mysql 导出每张表中的100条数据..............

    windows下配好MYSQL 环境变量,cmd 然后: mysqldump -uroot -p123 [数据库名]--where "1=1 limit 100" --lock-a ...