JavaScript-TAB栏切换

简介: JavaScript-TAB栏切换

先看效果:

20210914111744885.gif

html布局部分

<div class="container">
            <ul>
                <li><a href='#'>第一栏</a></li>
                <li><a href='#'>第二栏</a></li>
                <li><a href='#'>第三栏</a></li>
                <li><a href='#'>第四栏</a></li>
                <li><a href='#'>第五栏</a></li>
            </ul>
          /*  <div style="clear: both;"></div>*/
            <div class="box box1">
                第一大模块
            </div>
            <div class="box">
                第二大模块
            </div>
            <div class="box">
                第三大模块
            </div>
            <div class="box">
                第四大模块
            </div>
            <div class="box">
                第五大模块
            </div>

红色部分是下面JS所需获取的部分

前面可以自己可以修改样式

这里就不演示了。

主要说一下script部分

首先要对需要用到的元素进行获取

这里面要获取五个li标签和五个div标签

var lis = document.querySelector('ul').querySelectorAll('li');
        console.log(lis);
var boxs = document.querySelectorAll('.box');
        console.log(boxs);

显示正常即可

20210914110136245.png

因为我们是点击每一个li标签对每一个div进行切换效果

所以我们要先获取每个li的点击事件:

for (var i = 0; i < lis.length; i++) {
            lis[i].addEventListener('click', function() {触发什么事件}
}

然后得让他点击哪个盒子哪个li就发生什么变化 其他的li看不见

在点击事件里面写个循环

for (var i = 0; i < lis.length; i++) {
            lis[i].className = '';
}
this.className = 'current';

在点击事件上方写入

lis[i].setAttribute('index',i);

给每个li创建一个新的index索引号然后定义一个变量接收

在this.className = 'current'下方写入

var index=this.getAttribute('index');

最后获取div盒子里的索引号把点击的盒子给显示出来,也是用到排他思想

for (var i = 0; i < boxs.length; i++) {
                                // 先把每个div盒子给隐藏起来
                                boxs[i].style.display='none';
                            }
                            boxs[index].style.display = 'block'

最后附上完整代码:

<!DOCTYPE html>
<html>
  <head>
  <meta charset="utf-8">
  <title>tba</title>
  <style type="text/css">
    * {
    padding: 0;
    margin: 0;
    }
    ul li {
    list-style-type: none;
    float: left;
    width: 20%;
    box-sizing: border-box;
    height: 50px;
    }
    .current {
    box-shadow: 5px 5px 3px black;
    font-size: 20px;
    }
    li a {
    display: block;
    text-decoration: none;
    color: #000000;
    text-align: center;
    line-height: 50px;
    height: 50px;
    background-color: #00FFFF;
    margin: 1px;
    border-radius: 5%;
    }
    .box {
    text-align: center;
    line-height: 500px;
    font-size: 50px;
    margin-top: 10px;
    width: 100%;
    height: 500px;
    /* display: none; */
    border: 1px solid black;
    box-sizing: border-box;
    display: none;
    }
    .box1 {
    display: block;
    }
  </style>
  </head>
  <body>
  <div class="container">
    <ul>
    <li><a href='#'>第一栏</a></li>
    <li><a href='#'>第二栏</a></li>
    <li><a href='#'>第三栏</a></li>
    <li><a href='#'>第四栏</a></li>
    <li><a href='#'>第五栏</a></li>
    </ul>
    <div style="clear: both;"></div>
    <div class="box box1">
    第一大模块
    </div>
    <div class="box">
    第二大模块
    </div>
    <div class="box">
    第三大模块
    </div>
    <div class="box">
    第四大模块
    </div>
    <div class="box">
    第五大模块
    </div>
    <script type="text/javascript">
    // 首先先获取需要使用的元素
    var lis = document.querySelector('ul').querySelectorAll('li');
    console.log(lis);
    var boxs = document.querySelectorAll('.box');
    console.log(boxs);
    for (var i = 0; i < lis.length; i++) {
      // 设置索引
      lis[i].setAttribute('index',i);
      // 对每个li设置点击事件
      lis[i].addEventListener('click', function() {
      // 当每个li被点击过后,其他的样式全部清除,只留下一个当前点击的样式(阴影样式),这里用到排他思想(去除所有的,只保留自己)
        for (var i = 0; i < lis.length; i++) {
        // 点击过后清除所有的li的样式
        lis[i].className = '';
        }
        // 只显示当前点击的li样式
        this.className = 'current';
        // 给每个li创建一个新的index索引号
        // 然后定义一个变量接收
        var index=this.getAttribute('index');
        for (var i = 0; i < boxs.length; i++) {
        // 先把每个div盒子给隐藏起来
        boxs[i].style.display='none';
        }
        // 最后获取div盒子里的索引号把点击的盒子给显示出来,也是用到排他思想
        boxs[index].style.display = 'block'
      })
    }
    </script>
  </body>
</html>




相关文章
|
1月前
|
前端开发 JavaScript
jquery+css实现Tab栏切换的代码实例
jquery+css实现Tab栏切换的代码实例
21 0
|
3月前
|
JavaScript 前端开发
js小功能--如何实现按住shift拖拽多选div
js小功能--如何实现按住shift拖拽多选div
32 0
|
8月前
|
JavaScript 前端开发
JavaScript 使用原生js和jquery两种方法,实现tab栏切换
JavaScript 使用原生js和jquery两种方法,实现tab栏切换
158 0
|
8月前
|
JavaScript
JS 原生实现Tab栏的切换
JS 原生实现Tab栏的切换
68 1
|
9月前
|
JavaScript
jquery实现tab选项卡同一个按钮不同onClick链接的解决方案
jquery实现tab选项卡同一个按钮不同onClick链接的解决方案
67 0
|
10月前
|
JavaScript 前端开发
使用JS来实现tab栏切换
使用JS来实现tab栏切换
82 0
|
JavaScript
|
JavaScript 前端开发
【Jquery练习】tab栏切换
在实现今天的练习之前,我们先来了解一下排他思想,排他思想也就是为当前元素设置一个特定的样式,并为其他兄弟元素清除样式。多用于多选一的效果。
97 0
|
移动开发 前端开发 JavaScript
通过JavaScript、css、H5 实现简单的tab栏的切换和复用
学习JavaScript、css、H5 实现简单的tab栏的切换和复用。
262 0
通过JavaScript、css、H5 实现简单的tab栏的切换和复用
JavaScrip - tab栏切换案例
JavaScrip - tab栏切换案例
83 0