tab栏切换(JS)

一、功能:

1、点击每个 li  时,改变其背景色和字体颜色,

2、并且在下方显示相应的内容

二、核心算法:(排他思想)

1、当我们点击每个小 li 之前,先给每个小Li设置一个索引号

2、点击小 li 时,我们先把所有 li 的背景样式都清空(干掉所有人)

3、设置当前 li 的背景样式(留下我自己)

4、用 index 记住当前 li 的索引号

5、同样,我们先把所有的内容模块都设置为不可见(display: none)

6、设置当前 li 的内容块为可见 (display: block)

三、实现代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        .box {
            width: 990px;
            margin: 100px auto;
            position: relative;
        }
        
        .h {
            width: 100%;
            height: 38px;
            background-color: #f7f7f7;
            border: 1px solid #eee;
            border-bottom: 1px solid #e4393c;
            display: inline-block;
            display: block;
            color: #666;
        }
        
        .h ul li {
            float: left;
            cursor: pointer;
            list-style-type: none;
            padding: 10px 25px;
            font-size: 14px;
        }
        
        .current {
            background-color: #e4393c;
            color: #fff;
            cursor: default;
        }
        
        .hide {
            display: none;
        }
    </style>
</head>

<body>
    <div class="box">
        <div class="h">
            <ul>
                <li class="current">
                    商品介绍
                </li>
                <li>
                    规格与包装
                </li>
                <li>
                    售后保障
                </li>
                <li>
                    商品评价(2万)
                </li>
                <li>
                    预约说明
                </li>
            </ul>
        </div>
        <div class="b">
            <div class="item" style="display: block;">商品介绍</div>
            <div class="item hide">规格与包装</div>
            <div class="item hide">售后保障</div>
            <div class="item hide">商品评价(2万)</div>
            <div class="item hide">预约说明</div>
        </div>
    </div>
    <script>
        var lis = document.querySelectorAll('li');
        var items = document.querySelectorAll('.item');

        for (var i = 0; i < lis.length; i++) {
            // 给5个Li设置索引号
            lis[i].setAttribute('index', i);
            // console.log(lis[i].getAttribute('index'));

            lis[i].onclick = function() {

                // 清除所有li的current样式
                for (var j = 0; j < lis.length; j++) {
                    lis[j].className = '';
                }
                this.className = 'current';

                // 设置所有的items内容块为不可见
                for (var k = 0; k < items.length; k++) {
                    items[k].style.display = 'none';
                }

                //获取当前点击的Li的索引号 
                var index = this.getAttribute('index');
                items[index].style.display = 'block';
            }
        }
    </script>
</body>



</html>

四、实现效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的示例代码,用于实现基本的 tab 切换效果: HTML 代码: ``` <div class="tab"> <button class="tablinks" onclick="openTab(event, 'tab1')">Tab 1</button> <button class="tablinks" onclick="openTab(event, 'tab2')">Tab 2</button> <button class="tablinks" onclick="openTab(event, 'tab3')">Tab 3</button> </div> <div id="tab1" class="tabcontent"> <h2>Tab 1 content</h2> <p>Some text here...</p> </div> <div id="tab2" class="tabcontent"> <h2>Tab 2 content</h2> <p>Some text here...</p> </div> <div id="tab3" class="tabcontent"> <h2>Tab 3 content</h2> <p>Some text here...</p> </div> ``` CSS 代码: ``` /* 隐藏所有 tab 内容 */ .tabcontent { display: none; } /* 将选中的 tab 显示出来 */ .tabcontent.show { display: block; } ``` JavaScript 代码: ``` function openTab(evt, tabName) { var i, tabcontent, tablinks; // 获取所有 tab 内容和 tab 按钮 tabcontent = document.getElementsByClassName("tabcontent"); tablinks = document.getElementsByClassName("tablinks"); // 隐藏所有 tab 内容 for (i = 0; i < tabcontent.length; i++) { tabcontent[i].className = tabcontent[i].className.replace(" show", ""); } // 移除所有 tab 按钮的 active 样式 for (i = 0; i < tablinks.length; i++) { tablinks[i].className = tablinks[i].className.replace(" active", ""); } // 显示当前选中的 tab 内容,并添加 active 样式到当前 tab 按钮 document.getElementById(tabName).className += " show"; evt.currentTarget.className += " active"; } ``` 在这个例子中,我们首先隐藏了所有 tab 内容,然后为每个 tab 按钮添加了一个 onclick 事件处理程序,该程序调用 openTab() 函数并传递事件对象和 tab 名称作为参数。在 openTab() 函数内部,我们首先获取所有 tab 内容和按钮,然后遍历它们并隐藏所有 tab 内容和移除所有按钮的 active 样式。最后,我们为当前选中的 tab 内容添加 show 样式,并为当前 tab 按钮添加 active 样式。 你可以根据自己的需要修改 CSS 样式和 JavaScript 代码来实现不同的 tab 切换效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值