zoukankan      html  css  js  c++  java
  • 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>

    展示效果图:

  • 相关阅读:
    算法训练 P1103
    算法训练 表达式计算
    算法训练 表达式计算
    基础练习 时间转换
    基础练习 字符串对比
    Codeforces 527D Clique Problem
    Codeforces 527C Glass Carving
    Codeforces 527B Error Correct System
    Codeforces 527A Glass Carving
    Topcoder SRM 655 DIV1 250 CountryGroupHard
  • 原文地址:https://www.cnblogs.com/chenhaiyun/p/14530771.html
Copyright © 2011-2022 走看看