<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. P7177 [COCI2014-2015#4] MRAVI 题解

    思路. 我们知道最初添加的液体越多,那么每个蚂蚁得到的液体也就越多,又因为标签里有深搜,所以可以用 DFS+二分解决(感觉说了一通废话),算是比较常规的一种解法了. 在此题中我们需要魔改一下建树,需在 ...

  2. 力扣81(java&python)-搜索旋转排序数组 II(中等)

    题目: 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同. 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 ...

  3. 力扣461(java)-汉明距离(简单)

    题目: 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目. 给你两个整数 x 和 y,计算并返回它们之间的汉明距离. 示例 1: 输入:x = 1, y = 4输出:2解释:1 ...

  4. HarmonyOS NEXT应用开发之异常处理案例

    介绍 本示例介绍了通过应用事件打点hiAppEvent获取上一次应用异常信息的方法,主要分为应用崩溃.应用卡死以及系统查杀三种. 效果图预览 使用说明: 点击构建应用崩溃事件,3s之后应用退出,然后打 ...

  5. 龙蜥利器:系统运维工具 SysAK的云上应用性能诊断 | 龙蜥技术

    ​简介:本文从大量的性能诊断实践出发,来介绍 SysAK 在性能诊断上的方法论及相关工具. ​ 文/张毅:系统运维SIG核心成员.SysAK 项目负责人:毛文安:系统运维 SIG 负责人. 系统运维既 ...

  6. Apsara Stack 技术百科 | 标准化的云时代:一云多芯

    ​简介:随着今年云栖大会现场平头哥的自研云芯片倚天710发布,以及众多新兴厂商的芯片发布,将有越来越多的类型芯片进入到主流市场,"多芯"的架构将在数据中心中越来越常见,阿里云混合云 ...

  7. linux Makefile 如何将生成的 .o 文件放到指定文件夹

    一.Makefile文件 为了方便分析,直接上文件,Makefile 文件中的内容如下所示: # # Makefile # 编译的.o文件和.c文件在同一路径下 # $(info "star ...

  8. 【GUI开发】用python爬YouTube博主信息,并开发成exe软件!

    目录 一.背景介绍 二.代码讲解 2.1 爬虫 2.2 tkinter界面 2.3 存日志 三.说明 一.背景介绍 你好,我是@马哥python说,一名10年程序猿. 最近我用python开发了一个G ...

  9. Ubuntu 20.04 安装和配置MySql5.7的详细教程

    Ubuntu 20.04 安装和配置MySql5.7的详细教程 https://www.jb51.net/article/202399.htm

  10. Python基础知识——缩进、标识符、保留字

    标识符 标识符就是程序中,使用的各种名称,例如:变量名.常量名.类名等等. 在 Python 中,对标识符格式的要求与 C/C++.Java 等差不多: 第一个字符必须是字母表中的字母或下划线 _ ; ...