原生js实现简单的选项卡

选项卡

在这里插入图片描述
点击栏目切换电影
HTML结构:

<div class="header">
        <h3 class="active">喜剧</h3>
        <h3>爱情</h3>
        <h3>玄幻</h3>
        <h3>都市</h3>
    </div>
    <div class="content">
        <div class="box show">
            <img src="./01.png" alt="">
            <img src="./01.png" alt="">
            <img src="./01.png" alt="">
            <img src="./01.png" alt="">
        </div>
        <div class="box">
            <img src="./02.png" alt="">
            <img src="./02.png" alt="">
            <img src="./02.png" alt="">
            <img src="./02.png" alt="">
        </div>
        <div class="box">
            <img src="./03.png" alt="">
            <img src="./03.png" alt="">
            <img src="./03.png" alt="">
            <img src="./03.png" alt="">
        </div>
        <div class="box">
            <img src="./04.png" alt="">
            <img src="./04.png" alt="">
            <img src="./04.png" alt="">
            <img src="./04.png" alt="">
        </div>
    </div>

CSS结构:

<style>
        *{margin: 0;padding: 0;}
        img{vertical-align: middle;}
        .header{
            overflow: hidden;
            height: 50px;
        }
        .header h3{
            float: left;
            line-height: 50px;
            width: 100px;
            text-align: center;
        
        }
        .center{
            overflow: hidden;
        }
        .content img{
            margin-bottom: 30px;
        }
        .content div{
            display: none;
        }

        /* 点击后样式 */
        .header .active{
            background-color: blue;
            color: #fff;
        }
        .content .show{
            display: block;

        }
    </style>

JS代码:

<script>
        var btn = document.querySelectorAll('.header h3')
        var boxs = document.querySelectorAll('.content div')
        // console.log(btn);
        // 记录上次active的下标,在下次点击的时候清除这次的类名
        var prevIndex = 0;
        // 获取鼠标点击标题事件
        for(var i = 0;i < btn.length;i++){
            btn[i].index = i;
            // 为每个按钮绑定点击事件
            btn[i].onclick = function(){
                // 清除上次显示的下标
                btn[prevIndex].className = '';
                boxs[prevIndex].className = '';
                // 为当前事件触发对象添加下标
                this.className = 'active'
                boxs[this.index].className = 'show';
                // 记录这次显示的下标,方便下次清除
                prevIndex = this.index;

            }
        }
    </script>

总结:这是一种利用现实隐藏页面结构实现的选项卡功能,本质是对下标的确定和类名的添加删除;提前写好css样式,再根据下标动态的添加类名删除类名,为页面结构批量添加样式;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值