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">文字2<span>◆</span></li>
        <li class="tab-item">文字3<span>◆</span></li>
        <li class="tab-item">文字4</li>
    </ul>
    <div class="products" id="tab-main">
        <div class="main selected">
            <a href="###"><img src="图片1" alt=""/></a>
        </div>
        <div class="main">
            <a href="###"><img src="图片2" alt=""/></a>
        </div>
        <div class="main">
            <a href="###"><img src="图片3" alt=""/></a>
        </div>
        <div class="main">
            <a href="###"><img src="图片4" alt=""/></a>
        </div>
    </div>
</div>

<script src="../js/jquery-1.7.2.min.js"></script>
<script>
    //jq实现
    /*$("#tab-menu").on(‘click‘,‘li‘,function(){
        /!* 为当前单击的tab导航项添加active样式,同时删除兄弟元素的active元素*!/
        $(this).addClass("active").siblings("li").removeClass("active");

        /!*获取当前被点击的导航项的索引*!/
        var index = $(this).index();

        /!*为当前导航项对应的内容面板添加selected样式,同时清除内容面板兄弟元素的样式*!/
        $("#tab-main >.main").eq(index).addClass("selected").siblings("div").removeClass("selected");
    })*/

    var tab = new MyTab({
        tab_menu:"tab-menu",
        tab_main:"tab-main",
        autoPlay:true
    });
</script>
</body>
css

* {
    margin: 0;
    padding: 0;
}
ul {
    list-style: none;
}
.wrapper {
    width: 1000px;
    height: 475px;
    margin: 0 auto;
    margin-top: 100px;
}

.tab {
    border: 1px solid #ddd;
    border-bottom: 0;
    height: 36px;
    width: 320px;
}

.tab li {
    position: relative;
    float: left;
    width: 80px;
    height: 34px;
    line-height: 34px;
    text-align: center;
    cursor: pointer;
    border-top: 4px solid #fff;
}

.tab span {
    position: absolute;
    right: 0;
    top: 10px;
    background: #ddd;
    width: 1px;
    height: 14px;
    overflow: hidden;
}

.products {
    width: 1002px;
    border: 1px solid #ddd;
    height: 476px;
}

.products .main {
    float: left;
    display: none;
}

.products .main.selected {
    display: block;
}

.tab li.active {
    border-color: red;
    border-bottom: 0;
}


/*js --有用到沙箱模式*/

/*1.获取标签页导航项
* 2.循环为标签页导航项添加点击事件
* 3.为当前被点击的导航项添加active样式,同时为兄弟元素移除active样式*/

/*1.获取当前需要展示的内容面板的索引
* 2.为当前索引的内容面板添加selected样式
* 3.为当前索引的内容面板的兄弟元素移除selected样式*/

(function(window){
    function MyTab(option){
        this.tab_items = null;
        this.content_items = null;
        this.index = 0;
        /*code a little    debug a little*/

        this.init(option);
    }

    /*封装功能到原型*/
    MyTab.prototype = {
        constructor:MyTab,
        /*初始化*/
        init:function(option){
            this.getElements(option);
            this.registerEvent();
            if(option.autoPlay){
                /*实现自动轮播*/
                this.autoPlay();
            }
        },
        getElements:function(option){
            /*获取标签页导航项*/
            this.tab_items = document.getElementById(option.tab_menu).children;
            /*获取所有内容面板*/
            this.content_items = document.getElementById(option.tab_main).children;
        },
        registerEvent:function(){
            /*将当前对象存储在_this变量中*/
            var _this = this;
            /*循环为标签页导航项添加点击事件*/
            for(var i=0;i<this.tab_items.length;i++){
                var item = this.tab_items[i];
                /*存储索引*/
                item.index = i;
                item.onclick = function(){
                    _this.index = this.index;
                    _this.toggle(this);
                }
            }
        },
        autoPlay:function(){
            var _this = this;
            setInterval(function(){
                _this.toggle(_this.tab_items[_this.index ++ % 4]);
            },2000);
        },
        toggle:function(dom){
            /*这里的this主是当前构造函数创建的对象*/
            for(var j =0; j < this.tab_items.length;j++){
                /*为当前被点击的导航项添加active样式,同时为兄弟元素移除active样式*/
                this.tab_items[j].classList.remove("active");
                /*为当前索引的内容面板的兄弟元素移除selected样式*/
                this.content_items[j].classList.remove("selected");
            }
            /*需要当前被点击的元素*/
            dom.classList.add("active");

            /*操作内容面板*/
            /*为当前索引的内容面板添加selected样式*/
            this.content_items[dom.index].classList.add("selected");
        }
    }

    /*提供外部访问的接口*/
    window.MyTab = MyTab;
})(window);
 
时间: 2024-08-09 10:50:50

tab栏切换原型封装------彭记(013)的相关文章

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

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

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

原生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''

面向对象版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&g

JavaScript实现Tab栏切换

本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 京东网页上,可以看到下面这种tab栏的切换: 我们把模型抽象出来,实现一下. 举例引入:鼠标悬停时,current元素的背景变色 本段我们先举一个例子,因为这里用到了排他思想(先干掉 all,然后保留我一个).对于理解tab切换,很有帮助. 完整的代码实现: <!DOCTYPE html> <html> <head lang="en&quo