面向对象版Tab栏切换

<div class="wrapper" id="wrapper">
    <ul class="tab" id="tab-menu">
        <li class="tab-item active">国际大牌<span>◆</span></li>
        <li class="tab-item">国妆名牌<span>◆</span></li>
        <li class="tab-item">清洁用品<span>◆</span></li>
        <li class="tab-item">男士精品</li>
    </ul>
    <div class="products" id="tab-main">
        <div class="main selected">
            <a href="###"><img src="imgs/guojidapai.jpg" alt=""/></a>
        </div>
        <div class="main">
            <a href="###"><img src="imgs/guozhuangmingpin.jpg" alt=""/></a>
        </div>
        <div class="main">
            <a href="###"><img src="imgs/qingjieyongpin.jpg" alt=""/></a>
        </div>
        <div class="main">
            <a href="###"><img src="imgs/nanshijingpin.jpg" alt=""/></a>
        </div>
    </div>
</div>
var tb = new Tab({
        tabMenu: "tab-menu",    // 指定tab栏菜单id
        tabMain: "tab-main",    // 指定tab栏内容id
        auto: true           // 是否自动播放
    });

面向对象封装

function Tab(obj) {
    this.tabMenus = null;
    this.tabMains = null;
    if(obj) {
        this._init(obj);
    }
}
Tab.prototype = {
    constructor: Tab,
    timer : null,
    _init:function(obj){
        this.initEle(obj);
        this.click();
        if(obj.auto){
            this.autoPlay();
        }

    },
    initEle:function(obj){
        var tabMenu = document.getElementById(obj.tabMenu);
        var tabMain = document.getElementById(obj.tabMain);
        this.tabMenus = tabMenu.children;
        this.tabMains = tabMain.children;
    },
    click: function() {
        var that = this;
        for(var i=0,len=this.tabMenus.length;i<len;i++) {
            this.tabMenus[i].onclick = function(){
                that.show(this);
                that.autoPlay(this.index);
            }
        }
    },
    show: function(currentLi) {
        for(var i=0,len=this.tabMenus.length;i<len;i++) {
            this.tabMenus[i].index = i;
            this.tabMenus[i].className = "tab-item";
            this.tabMains[i].style.display = "none";
        }
        currentLi.className += " active";
        this.tabMains[currentLi.index].style.display = "block";
    },
    autoPlay: function(currentIndex){
        var that = this;
        var index = 0;
        if(currentIndex !== undefined && currentIndex !== ""){
            index = currentIndex;
        }
        clearInterval(this.timer);
        this.timer = setInterval(function(){
            index++;
            if(index == that.tabMenus.length){
                index = 0;
            }
            that.show(that.tabMenus[index]);
        },2000);
    }
}

注意事项:

这里要注意timer的位置,如果将timer放在构造函数里如this.timer=null,则_init()方法要用新创建出的对象来调用timer才生效(tb._init())如果在构造函数里使用 this._init(obj);来初始化,则timer要放到原型对象里(timer:null)才生效这里的生效是指清除定时器时clearInterval(this.timer); this.timer为同一个对象   正常情况下this.timer值为null,未生效的情况下值为undefined
时间: 2024-10-10 08:07:13

面向对象版Tab栏切换的相关文章

227 面向对象版tab 栏切换

3.1 功能需求 点击 tab栏,可以切换效果. 点击 + 号, 可以添加 tab 项和内容项. 点击 x 号, 可以删除当前的tab项和内容项. 双击tab项文字或者内容项文字可以修改里面的文字内容 3.2 案例准备 获取到标题元素 获取到内容元素 获取到删除的小按钮 x号 新建js文件,定义类,添加需要的属性方法(切换,删除,增加,修改) 时刻注意this的指向问题 3.3 切换 为获取到的标题绑定点击事件,展示对应的内容区域,存储对应的索引 this.lis[i].index = i; t

ES6面向对象实现tab栏切换效果

面向对象实现tab栏切换效果 原文地址:https://www.cnblogs.com/malong1992/p/11517123.html

tab栏切换原型封装------彭记(013)

tab栏切换原型封装 <body> <div class="wrapper" id="wrapper"> <ul class="tab" id="tab-menu"> <li class="tab-item active">文字1<span>◆</span></li> <li class="tab-item&

jQuery带有定时器的tab栏切换

现在网上很多类似选项卡的切换,我们成为tab栏切换,比如下图: 新浪的tab栏切换 淘宝的tab栏切换 其中,新浪的tab栏鼠标放上去,可以快速的来回切换,但是如果采取ajax异步传输,不停去加载服务器压力较大,而淘宝的是当鼠标放上去2秒左右,才切换,这样,防止不断的来回切换,这个效果我们需要带定时器来控制就好了. 小强老师今天就以淘宝的tab栏切换,利用jquery定时器来做这个效果. 首先先把html 结构书写如下: <div class="r-hd">        

Android实现连续并排的若干个TextView单击改变背景颜色达到选项卡Tab栏切换效果

<Android实现连续并排的若干个TextView单击改变背景颜色达到选项卡Tab栏切换效果> 实现的组件交互目的很简单,就是要达到类似tab选项卡的导航栏一样,当用户点击了连续并排的若干个TextView其中之一时候,要产生一定的交互效果(背景颜色改变等).这种实现的方式有不少可选方案,现在通过背景的selector.xml实现. 效果如下: A.初始状态: B.当用户单击了TextView 2,但此时用户的手指一直在按下并未松开的状态,(注意交互设计效果!TextView 2的背景颜色变

tab栏切换2

采用jquery.js,通过添加类名和show().hide()方法实现tab栏切换: 简单案例如下: HTML部分 <style> li{list-style: none;} #wrap{width: 500px;height: 400px;border: 1px solid #000;} #resourcesTab li{width: 100px;height: 40px;line-height: 40px;font-size: 18px;font-weight: bold; cursor

jQuery实现tab栏切换效果

jQuery实现tab栏切换效果: 用jQuery做tab的效果就是点击或者鼠标悬浮在tab上时显示对应的内容,并且tab栏也会发生相应的样式变化.jQuery我用的是jquery-1.11.1.js版本. 下面的代码是简单的实现: HTML代码 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 <title>j

原生JS实现 ‘Tab栏切换’,‘手风琴’,‘轮播图’效果

1.小天使跟随鼠标效果 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatib

207 jQuery 样式操作:css (),addClass,removeClass,toggleClass,tab 栏切换案例

? jQuery中常用的样式操作有两种:css() 和 设置类样式方法 1.4.1 方法1: 操作 css 方法 ? jQuery 可以使用 css 方法来修改简单元素样式: 也可以操作类,修改多个样式. ? 常用以下三种形式 : // 1.参数只写属性名,则是返回属性值 var strColor = $(this).css('color'); // 2. 参数是属性名,属性值,逗号分隔,是设置一组样式,属性必须加引号,值如果是数字可以不用跟单位和引号 $(this).css(''color''