• JavaScript系列---【选项卡案例】


    html代码:

        <div id="warp">
            <ul id="left_list">
                <li class="active">a</li>
                <li>b</li>
                <li>c</li>
                <li>d</li>
            </ul>
            <div id="right">
                <div class="right_box test haha" style="display: block">
                    <a href="#">a1</a>
                    <ul>
                        <li class="active">a1</li>
                        <li>a2</li>
                        <li>a3</li>
                        <li>a4</li>
                    </ul>
                </div>
                <div class="right_box">
                    <a href="#">b1</a>
                    <ul>
                        <li class="active">b1</li>
                        <li>b2</li>
                        <li>b3</li>
                        <li>b4</li>
                    </ul>
                </div>
                <div class="right_box">
                    <a href="#">c1</a>
                    <ul>
                        <li class="active">c1</li>
                        <li>c2</li>
                        <li>c3</li>
                        <li>c4</li>
                    </ul>
                </div>
                <div class="right_box">
                    <a href="#">d1</a>
                    <ul>
                        <li class="active">d1</li>
                        <li>d2</li>
                        <li>d3</li>
                        <li>d4</li>
                    </ul>
                </div>
            </div>
        </div>

    css代码:

    <style>
            * {
                padding: 0;
                margin: 0;
                list-style: none;
            }
    
            #warp {
                 800px;
                border: 1px solid #000000;
                margin: 20px auto;
                background: blue;
                height: 362px;
            }
    
            #left_list {
                float: left
            }
    
            #left_list li {
                 200px;
                height: 89px;
                background: red;
                margin-bottom: 2px;
                color: #fff;
                font: 50px/89px "黑体";
                text-align: center;
            }
    
            #left_list .active {
                background: yellow;
                color: #000;
            }
    
            #right {
                float: left
            }
    
            #right a {
                display: block;
                 600px;
                height: 322px;
                text-align: center;
                color: #000;
                font: 100px/322px "Microsoft YaHei";
                text-decoration: none;
                background: #0F0;
            }
    
            #right li {
                height: 40px;
                float: left;
                 148px;
                background: #909;
                text-align: center;
                font: 20px/40px "Microsoft YaHei";
                margin-right: 2px;
                color: #fff;
            }
    
            #right .active {
                background: #fff;
                color: #000;
            }
    
            #right div {
                display: none;
            }
        </style>

    js代码:

    <script>
            // 获取元素
            var leftList = document.getElementById("left_list"),
                leftListOlis = leftList.getElementsByTagName("li");
            var right = document.getElementById("right"),
                rightBoxs = right.getElementsByClassName("right_box");
    
            console.log(leftListOlis, rightBoxs);
            // 循环绑定事件
            for (var i = 0; i < leftListOlis.length; i++) {
                // 自定义索引
                leftListOlis[i].index = i;
                // 给当前这个li绑定事件
                leftListOlis[i].onclick = function () {
                    // 函数的调用  传递实参(当前这个li自定义索引的值)
                    tabChage(this.index);
                }
            }
    
    
    
            // 大的选项卡切换
            function tabChage(index) {
                // 先清空所有的激活样式
                for (var i = 0; i < leftListOlis.length; i++) {
                    leftListOlis[i].className = "";
                    rightBoxs[i].style.display = "none";
                }
    
                // 再让当前这个li和对应的那个div有激活样式
                leftListOlis[index].className = "active";
                rightBoxs[index].style.display = "block";
    
    
                // 当前展示区域下 小的选项卡切换
                change(rightBoxs[index]);
            }
    
    
            // 默认展示是第一项 对应的是第一块区域 如果用户直接点击第一块区域对应的小的选项卡没办法切换  默认调永一次change方法
            change(rightBoxs[0]);
    
            // 小的选项卡切换
            //curRightBox 限定获取范围
            function change(curRightBox){
                // 获取元素
                var curOlis = curRightBox.getElementsByTagName("li"),
                    curA = curRightBox.getElementsByTagName("a")[0];
                    console.log(curOlis,curA);
    
                // 循环变量给当前这块区域下的每一个li绑定事件
                for(var i = 0;i<curOlis.length;i++){
                    curOlis[i].onclick = function(){
                        // 先清空所有的激活样式
                        for(var j = 0;j<curOlis.length;j++){
                            curOlis[j].className = "";
                        }
                        // 让当前这个li有激活样式
                        this.className = "active";
                        // 将当前这个li的内容展示到a标签
                        curA.innerHTML = this.innerHTML;
                    }
                }
            }
        </script>

    展示效果图:

  • 相关阅读:
    宣化上人:大佛顶首楞严经四种清净明诲浅释(4-5)(转自学佛网:http://www.xuefo.net/nr/article23/230699.html)
    宣化上人:大佛顶首楞严经四种清净明诲浅释(6-7)(转自学佛网:http://www.xuefo.net/nr/article23/230700.html)
    宣化上人: 大佛顶首楞严经四种清净明诲浅释(8-9)(转自学佛网:http://www.xuefo.net/nr/article23/230825.html)
    [我的CVE][CVE-2017-15708]Apache Synapse Remote Code Execution Vulnerability
    Ubuntu bash不记录history方法
    [我的CVE][CVE-2017-15709]Apache ActiveMQ Information Leak
    java.lang.Runtime.exec() Payload Workarounds
    CVE-2017-12149 JBOOS AS 6.X 反序列化漏洞利用
    Apache Continuum 远程命令执行漏洞
    docker 端口映射iptables: No chain/target/match by that name错误解决方法
  • 原文地址:https://www.cnblogs.com/chenhaiyun/p/14530771.html
Copyright © 2020-2023  润新知