原生js实现tab点击切换事件

原生js实现tab点击切换事件

原本Vue中不涉及交互的页面让被抽离出来用原生实现,突然写原生,手抖的无从下手。。。
实现的效果是这样的(原本用的是模板字符串循环到页面上的,最后得知这个页面是固定没有更改的可能,所以就写死了,因为公司的项目,所以上传的自己做了小调整)
在这里插入图片描述
上代码:
HTML代码

<div class="level_box">
        <div class="main">
            <div class="level_list">
                <div class="item">
                    <div class="img img1" onclick="changeTab(1,this)">
                        <img class='imgPic div_block' src="img/level/lv9.png" alt="">
                        <img class="imgPic default div_none" src="img/level/lv9_d.png" alt="">
                    </div>
                    <p id="p_text" class="high">哈哈哈哈</p>
                    <p>Lv.9解锁</p>
                </div>
                <div class="item">
                    <div class="img img2" onclick="changeTab(2,this)">
                        <img class='imgPic div_none' src="img/level/lv12.png" alt="">
                        <img class="imgPic default div_block" src="img/level/lv12_d.png" alt="">
                    </div>
                    <p id="p_text">哈哈哈哈</p>
                    <p>Lv.12解锁</p>
                </div>
                <div class="item">
                    <div class="img img3" onclick="changeTab(3,this)">
                        <img class='imgPic div_none' src="img/level/lv13.png" alt="">
                        <img class="imgPic default div_block" src="img/level/lv13_d.png" alt="">
                    </div>
                    <p id="p_text">哈哈哈哈</p>
                    <p>Lv.13解锁</p>
                </div>
                
                <div class="item">
                    <div class="img img4" onclick="changeTab(4,this)">
                        <img class='imgPic div_none' src="img/level/lv25.png" alt="">
                        <img class="imgPic default div_block" src="img/level/lv25_d.png" alt="">
                    </div>
                    <p id="p_text">哈哈哈哈</p>
                    <p>Lv.25解锁</p>
                </div>
                <div class="item">
                    <div class="img img5" onclick="changeTab(5,this)">
                        <img class='imgPic div_none' src="img/level/lv33.png" alt="">
                        <img class="imgPic default div_block" src="img/level/lv33_d.png" alt="">
                    </div>
                    <p id="p_text">哈哈哈哈</p>
                    <p>Lv.33解锁</p>
                </div>
                <div class="item">
                    <div class="img img6" onclick="changeTab(6,this)">
                        <img class='imgPic div_none' src="img/level/lv35.png" alt="">
                        <img class="imgPic default div_block" src="img/level/lv35_d.png" alt="">
                    </div>
                    <p id="p_text">哈哈哈哈</p>
                    <p>Lv.35解锁</p>
                </div>
                
            </div>
        </div>
        <div class='level_foot div_block'>
            <div class="level_detail">
                <img src="img/level/1.jpg" alt="">
            </div>
            <div class="level_tip">
                <div class="item">
                    <div class="title">获取条件</div>
                    <div class="name">等级提升至<span>9</span>级获得</div>
                </div>
            </div>
        </div>
        <div class='level_foot div_none'>
            <div class="level_detail">
                <img src="img/level/2.jpg" alt="">
            </div>
            <div class="level_tip">
                <div class="item">
                    <div class="title">获取条件</div>
                    <div class="name">等级提升至<span>12</span>级获得</div>
                </div>
            </div>
        </div>
        <div class='level_foot div_none'>
            <div class="level_detail">
                <img src="img/level/3.jpg" alt="">
            </div>
            <div class="level_tip">
                <div class="item">
                    <div class="title">获取条件</div>
                    <div class="name">等级提升至<span>13</span>级获得</div>
                </div>
            </div>
        </div>
        
        
        <div class='level_foot div_none'>
            <div class="level_detail">
                <img src="img/level/4.jpg" alt="">
            </div>
            <div class="level_tip">
                <div class="item">
                    <div class="title">获取条件</div>
                    <div class="name">等级提升至<span>20</span>级获得</div>
                </div>
            </div>
        </div>
        <div class='level_foot div_none'>
            <div class="level_detail">
                <img src="img/level/5.jpg" alt="">
            </div>
            <div class="level_tip">
                <div class="item">
                    <div class="title">获取条件</div>
                    <div class="name">等级提升至<span>25</span>级获得</div>
                </div>
            </div>
        </div>
        <div class='level_foot div_none'>
            <div class="level_detail">
                <img src="img/level/6.jpg" alt="">
            </div>
            <div class="level_tip">
                <div class="item">
                    <div class="title">获取条件</div>
                    <div class="name">等级提升至<span>33</span>级获得</div>
                </div>
            </div>
        </div>
    </div>
    </div>

样式:CSS代码

 * {
    
    
            margin: 0;
            padding: 0;
            font-weight: normal;
            line-height: 1.6;
        }

        .level_box {
    
    
            width: 100vw;
            min-height: 100vh;
            overflow-y: scroll;
            -webkit-overflow-scrolling: touch;
        }

        .main .level_list {
    
    
            height: 150px;
            display: flex;
            overflow-x: scroll;
            overflow-y: hidden;
        }

        .item .imgPic {
    
    
            width: 41px;
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
        }

        .img {
    
    
            margin-top: 10px;
            width: 25vw;
            height: 70px;
            position: relative;
        }

        .level_list .item .default {
    
    
            width: 30px;
        }

        .level_list .item>p {
    
    
            width: 25vw;
            text-align: center;
        }

        .level_list .item #p_text {
    
    
            color: #666666;
            font-size: 14px;
            line-height: 1.8;
            font-weight: bold;
        }

        .level_list .item>p:nth-child(3) {
    
    
            color: #c2c2c2;
            font-size: 12px;
        }

        .level_list .item>p.high {
    
    
            color: #d8a251 !important;
            font-size: 16px !important;
        }

        .level_detail>img {
    
    
            width: 87%;
            display: block;
            margin: 0 auto;
        }

        .level_tip {
    
    
            width: 87%;
            margin: 0 auto;
            margin-top: 25px;
            margin-bottom: 30px;
        }

        .level_tip .title {
    
    
            color: #212121;
            line-height: 2.5;
            font-size: 16px;
            font-weight: bold;
        }

        .level_tip .name {
    
    
            color: #666666;
            font-size: 14px;
            margin-bottom: 12px;
        }

        .level_tip .name>span {
    
    
            color: #212121;
            font-weight: bold;
            padding: 0 1px;
        }

        .level_tip .item:nth-child(2) {
    
    
            border-top: 1px solid #e5e5e5;
        }

        .div_block {
    
    
            display: block;
        }

        .div_none {
    
    
            display: none;
        }

逻辑:js代码

 function changeTab(index, that) {
    
    
        // 获取所有的标签img
        let imgList = document.getElementsByClassName('img')
        for (let i = 0, len = imgList.length; i < len; i++) {
    
    
            // 将所有的图片设置灰色
            imgList[i].childNodes[1].style.display = "none"
            imgList[i].childNodes[3].style.display = "block"
            imgList[i].parentNode.childNodes[3].className = ''
        }
        // 将选中的那个设置高亮
        imgList[index - 1].childNodes[1].style.display = "block"
        imgList[index - 1].childNodes[3].style.display = "none"
        that.parentNode.childNodes[3].className = 'high'
        // 获取所有的内容标签
        let levelList = document.getElementsByClassName('level_foot')
        // 将所有的内容都隐藏
        for (let j = 0, lenj = levelList.length; j < lenj; j++) {
    
    
            levelList[j].style.display = "none"
        }
        // 显示选择对应的内容
        levelList[index - 1].style.display = "block"
    }

总结:js基础很重要,用框架是很放便,但是js基础一定得时不时德补补

猜你喜欢

转载自blog.csdn.net/weixin_45324044/article/details/109769023