美文网首页qwlz
用排他思想实现一个tab栏切换效果

用排他思想实现一个tab栏切换效果

作者: 9979eb0cd854 | 来源:发表于2018-07-23 22:57 被阅读16次

    今天学习的JS中,要实现tab栏切换效果,运用了排他思想。


    图片.png

    用户点击button时,不但button的背景颜色会改变,而且下面的内容也会随之改变。


    图片.png
    首先要实现button的改变,用for循环遍历每个button,对所有的button进行初始化,使其类名为空;然后跳出循环,对当前被点击的button赋予一个类。
    图片.png

    而对于下面每个盒子随着button的不同而改变,首先得先得到每个button的序号,对每个进行匹配,使之互相对应。


    图片.png

    tab栏封装

    多个tab栏切换时需要用大盒子的id区分来封装函数,代码如下:

    html

    <div class="box" id="one">
            <div class="mt">
                <span class="current">新闻</span>
                <span>体育</span>
                <span>娱乐</span>
                <span>八卦</span>
            </div>
            <div class="mb">
                <ul>
                    <li class="show">新闻模块</li>
                    <li>体育模块</li>
                    <li>娱乐模块</li>
                    <li>八卦模块</li>
                </ul>
            </div>
        </div>
        
        <div class="box" id="two">
            <div class="mt">
                <span class="current">新闻</span>
                <span>体育</span>
                <span>娱乐</span>
                <span>八卦</span>
            </div>
            <div class="mb">
                <ul>
                    <li class="show">新闻模块</li>
                    <li>体育模块</li>
                    <li>娱乐模块</li>
                    <li>八卦模块</li>
                </ul>
            </div>
        </div>
        
        <div class="box" id="three">
            <div class="mt">
                <span class="current">新闻</span>
                <span>体育</span>
                <span>娱乐</span>
                <span>八卦</span>
            </div>
            <div class="mb">
                <ul>
                    <li class="show">新闻模块</li>
                    <li>体育模块</li>
                    <li>娱乐模块</li>
                    <li>八卦模块</li>
                </ul>
            </div>
        </div>
    

    css

    * {
                margin: 0;
                padding: 0;
            }
            ul {
                list-style: none;
            }
            .box {
                width: 350px;
                height: 300px;
                border: 1px solid #ccc;
                margin: 100px auto;
                overflow: hidden;
            }
            .mt span {
                display: inline-block;
                width: 80px;
                height: 30px;
                text-align: center;
                line-height: 30px;
                cursor: pointer;
                background-color: pink;
            }
            .mt .current {
                background-color: purple;
            }
            .mb li {
                width: 100%;
                height: 270px;
                background-color: purple;
                display: none;
            }
            .mb .show {
                display: block;
            }
    

    js

    window.onload = function() {
        //想多个盒子互不影响     可以通过用id来区分开
        
        //封装tab栏切换函数——id函数
        function tab(obj) {
            var target =  document.getElementById(obj);
            var spans = target.getElementsByTagName('span');
            var lis = target.getElementsByTagName('li');
            
            for (var i = 0;i < spans.length;i++) {
                //记录索引号
                spans[i].index = i;
                spans[i].onmouseover = function() {
                    for (var j = 0;j < spans.length;j++) {
                        spans[j].className = '';
                        lis[j].className = '';
                    }
                    this.className = 'current';
                    lis[this.index].className = 'show';
                }
            }
        }
        //三个盒子都用到,所以要调用三次,把他们的id调用进去
        tab('one');
        tab('two');
        tab('three');
    }
    
    

    效果图

    image.png

    相关文章

      网友评论

        本文标题:用排他思想实现一个tab栏切换效果

        本文链接:https://www.haomeiwen.com/subject/fbysmftx.html