<style>
        *{
            margin: 0;
            padding:0;
        }
        ul,ol,li{
            list-style: none;
        }
        .cont{
            width: 800px;
            height: 600px;
            border: 5px solid #000;
            margin: 30px auto;
            display: flex;
            flex-direction: column;
        }
        .cont>ul{
            width: 100%;
            height: 60px;
            display: flex;
        }
        .cont>ul>li{
            flex:1;
            display: flex;
            justify-content: center;
            align-items: center;
            font-size: 40px;
            color: #fff;
            background: skyblue;
        }
        .cont>ul>li.active{
            background: blue;
        }
        .cont>ul>li:nth-child(2){
            border-left:5px solid #000 ;
            border-right:5px solid #000 ;
        }
        .cont>ol{
            flex:1;
            position: relative;
        }
        .cont>ol>li{
            width: 100%;
            height: 100%;
            position: absolute;
            top:0;
            left:0;
            color: #000;
            font-size: 150px;
            display: flex;
            justify-content: center;
            align-items: center;
            display: none;
        }
        .cont>ol>li:nth-child(1){
            background: orange;
        }
        .cont>ol>li:nth-child(2){
            background: pink;
        }
        .cont>ol>li:nth-child(3){
            background: green;
        }
        .cont>ol>li.active{
            display: flex;
        }
    </style>
</head>
<body>
    <div class="cont">
        <ul>
            <li class="active">1</li>
            <li>2</li>
            <li>3</li>
        </ul>
        <ol>
            <li class="active">内容1</li>
            <li >内容2</li>
            <li >内容3</li>
        </ol>
    </div>
    <script>
        // tab切换 / 选项卡菜单
        // 思路
        // 点击 ul>li 给 ol>li 设定 class样式
        // 点击 ul>li 
        //     1,给所有的 ul>li 清除样式,给当前点击的li,添加样式
        //     2,给所有的 ol>li 清除样式,给当前点击的ul>li,对应的ol>li添加样式
        // 关键原理:
        //     ul>li  和 ol>li 标签数量是完全相同的
        //     存储标签的伪数组  oUlLis  和  oOlLis 索引下标是完全相同的
        //     两个 伪数组 索引是一一对应的,可以相互通用
        var oUlLis = document.querySelectorAll('ul>li');
        var oOlLis = document.querySelectorAll('ol>li');
        console.log(oUlLis , oOlLis);
        // 循环遍历, ul>li 的伪数组 
        // item 存储的是 ul>li 标签   key 是标签对应的索引下标
        oUlLis.forEach(function(item,key){
            // 添加点击事件,点击标签,触发程序,给点击的标签,添加className的属性值
            // 给 ul>li标签 添加点击事件
            item.addEventListener('click' , function(){
                // 点击标签时,清除所有标签的class样式
                // 给所有的li标签都定义 className属性值 为 '' 空字符串
                
                // 执行 循环,遍历所有的ul>li标签
                oUlLis.forEach(function(i,k){
                    // 给li标签,清除class样式,设定className 为 空字符串
                    i.className = '';
                    // 使用 ul>li的索引下标,也可以调用ol>li的索引下标
                    // 调用 ol>li标签,也清除class样式,设定className 为 空字符串
                    oOlLis[k].className = '';
                    // 循环结束 ul>li ol>li 都没有 class样式
                })
                // 给点击的ul>li标签,添加class样式
                item.className = 'active';
                // 通过 item 的索引下标key,找对 ol中对应的li标签
                // 添加class样式
                oOlLis[key].className = 'active';
            })
        })
    </script>

tab切换之循环遍历的更多相关文章

  1. angular 实现tab切换(循环输出tab标题及tab下属内容,非direct,非include)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...

  2. JavaScript的Tab切换

    在网页设计中经常要用到tab切换,遂整理了一下常用的两种方法. 先看一下示例代码: HTML: <!doctype html> <html lang="en"&g ...

  3. JavaScript学习笔记2之Tab切换

    1.Tab切换简写版1 页面布局如下: <div id="tab"> <h1 id="title"> <span class=&q ...

  4. vue仿淘宝订单状态的tab切换效果

    <div class="navigation">  //这里是通过循环遍历出来的数据,你需要根据index的值来判断你现在点击的是第几个tab栏导航,同时在js中写一个 ...

  5. VUE 实现tab切换页面效果

    一 163邮箱登录tab切换 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  6. Vue如何tab切换高亮最简易方法

    以往我们实现tab切换高亮通常是循环遍历先把所有的字体颜色改变为默认样式,再点亮当前点击的选项,而我们在vue框架中实现tab切换高亮显示并不需要如此,只需要将当前点击选项的index传入给一个变量, ...

  7. 案例(拖拽对话框、高清放大镜、自制滚动条、元素的隐藏方式、表格隔行变色、tab切换效果、字符串拼接、刷新评论)

    一.拖拽对话框 <style> .of{ width: 500px; } #link,#close{ text-decoration: none; margin: 0 10px; font ...

  8. JS---案例:tab切换效果

    案例:tab切换效果 获取所有的li标签 第一件事:把这个a所在的所以兄弟元素的类样式全部移除 (removeAttributes) 第二件事:当前点击的a父级元素li (点击这个a所在的所在元素li ...

  9. jQuery的DOM操作实例(1)——选项卡&&Tab切换

    一.原生JavaScript编写tab切换 二.jQuery编写tab切换 在用jQuery编写选项卡过程中,重要的事搞清楚 .eq() 和 .index() 的使用方法. .eq()是jQuery遍 ...

  10. Tab切换类型

    Tab切换类型 点击Tab 滑过Tab 延迟Tab CSS样式 ; ; list-style:none; font-size:12px;} .notice{width:298px; height:98 ...

随机推荐

  1. super()和super(props)

    一.ES6类 在ES6中,通过extends关键字实现类的继承,方式如下: class sup { constructor(name) { this.name = name } printName() ...

  2. Django框架——Q查询进阶、ORM查询优化、事务操作、字段类型、字段参数、Ajax、Content—Type、ajax携带文件

    Q查询进阶 from django.db.models import Q q_obj = Q() # 1.产生q对象 q_obj.connector = 'or' # 默认多个条件的连接是and可以修 ...

  3. Oracle 简单的创建一个定时任务job

    Oracle 简单的创建一个定时任务job Oracle 简单的创建一个定时任务job 没有什么前置步骤,无非就是把存储过程或者SQL提前写好,就不说了,直接执行一下下面的语句即可创建一个job de ...

  4. RocketMQ 5.0: 存储计算分离新思路

    简介: 在阿里云上,RocketMQ 的商业化产品也以弹性云服务的形式为全球数万个用户提供企业级的消息解决方案,被广泛应用于互联网.大数据.移动互联网.物联网等领域的业务场景,成为了业务开发的首选消息 ...

  5. Java 定时任务技术趋势

    ​简介:定时任务是每个业务常见的需求,比如每分钟扫描超时支付的订单,每小时清理一次数据库历史数据,每天统计前一天的数据并生成报表等等. 作者:黄晓萌(学仁) Java 中自带的解决方案 使用 Time ...

  6. 阿里云EMR Remote Shuffle Service在小米的实践

    ​简介:阿里云EMR自2020年推出Remote Shuffle Service(RSS)以来,帮助了诸多客户解决Spark作业的性能.稳定性问题,并使得存算分离架构得以实施,与此同时RSS也在跟合作 ...

  7. KubeDL 加入 CNCF Sandbox,加速 AI 产业云原生化

    ​简介: 2021 年 6 月 23 日,云原生计算基金会(CNCF)宣布通过全球 TOC 投票接纳 KubeDL 成为 CNCF Sandbox 项目.KubeDL 是阿里开源的基于 Kuberne ...

  8. PyQt5编程学习之控件基类QObject深入

    一.QObject描述: PyQt几乎所有的类都是从QObject直接或间接继承的,QObject是所有PyQt类的基类,是PyQt对象模型的核心. 二.基类QObject的功能: (一)操作对象名称 ...

  9. [FAQ] eggjs/egg 自定义 favicon.ico

      从  egg 项目配置里找到这一段代码: https://github.com/eggjs/egg/blob/master/config/config.default.js#L205C21-L20 ...

  10. dotnet 8 破坏性改动 在 AssemblyInformationalVersionAttribute 添加上 git 的 commit 号

    我在一个 WPF 项目里面,在界面显示应用的版本号,更新到 dotnet 8 的 SDK 之后,发现我的界面布局损坏了.本质上这个破坏性改动和 WPF 没有什么关系,是 dotnet 的 SDK 或编 ...