js实现选项卡(Tab)

一 . 采用编译器

1. WebStorm编译器

二. 实现的步骤

1. 创建目录(2个)
2. 创建目录对应的文件(3个)
3. 分别将css的文件和js的文件引入html文件中

三. 文件目录展示图

这里写图片描述

四. 选项卡效果图

这里写图片描述

五. Html中的代码展示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Tab切换</title>
    <!--引入css的文件-->
    <link href="css/index.css" rel="stylesheet">
</head>
<body>
    <!--选项卡-->
    <div id="tab">
        <!--头部-->
        <div id="tab-header" class="tab-header">
            <ul>
                <li class="selected">公告</li>
                <li>规则</li>
                <li>论坛</li>
                <li>安全</li>
                <li>公益</li>
            </ul>
        </div>
        <!--身体-->
        <div id="tab-content">
            <div class="dom" style="display: block;">
                <ul>
                    <li>
                        <a href="#">数据七夕:金牛爱送玫瑰</a>
                    </li>
                    <li>
                        <a href="#">阿里打造"互联网监管"</a>
                    </li>
                    <li>
                        <a href="#">10万家店60万新品</a>
                    </li>
                    <li>
                        <a href="#">全球最大网上时装周</a>
                    </li>
                </ul>
            </div>
            <div class="dom">
                <ul>
                    <li>
                        <a href="#">“全额返现”要管控啦</a>
                    </li>
                    <li>
                        <a href="#">淘宝新规发布汇总(7月)</a>
                    </li>
                    <li>
                        <a href="#">炒信规则调整意见反馈</a>
                    </li>
                    <li>
                        <a href="#">质量相关规则近期变更</a>
                    </li>
                </ul>
            </div>
            <div class="dom">
                <ul>
                    <li>
                        <a href="#">阿里建商家全链路服务</a>
                    </li>
                    <li>
                        <a href="#">个性化的消费时代来临</a>
                    </li>
                    <li>
                        <a href="#">跨境贸易是中小企业机</a>
                    </li>
                    <li>
                        <a href="#">美妆行业虚假信息管控</a>
                    </li>
                </ul>
            </div>
            <div class="dom">
                <ul>
                    <li>
                        <a href="#">接次文件,毁了一家店</a>
                    </li>
                    <li>
                        <a href="#">账号安全神器阿里钱盾</a>
                    </li>
                    <li>
                        <a href="#">新版阿里110上线了</a>
                    </li>
                    <li>
                        <a href="#">卖家学违禁避免被处罚</a>
                    </li>
                </ul>
            </div>
            <div class="dom">
                <ul>
                    <li>
                        <a href="#">为了公益high起来</a>
                    </li>
                    <li>
                        <a href="#">魔豆妈妈在线申请</a>
                    </li>
                </ul>
            </div>
        </div>
    </div>
    <!--引入js的文件-->
    <script src="js/index.js"></script>
</body>
</html>

六. css中的代码

1. css中设置的代码主要是对html中的标签属性进行相关设置(颜色;位置等)—>注意:如果其中的属性不是很明白,可以通过w3c查询可以得知.
/*清空多余的间距*/
*{
    padding: 0px;
    margin: 0px;
}

/*处理选项卡背景*/
body{
    margin: 80px;
}

/*除去li的圆点*/
ul{
    list-style: none;
}

#tab{
    /*设置边框*/
    border: 1px solid #dddddd;

    /*设置宽度*/
    width: 498px;

    /*设置高度*/
    height: 130px;
}

/*设置头部*/
#tab-header{
    /*设置高度*/
    height: 38px;
    /*设置背景颜色*/
    background-color: #f7f7f7;
    /*设置定位*/
    position: relative;
}

/*设置ul*/
.tab-header ul{
    /*设置宽度*/
    width: 501px;

    /*定位*/
    position: absolute;

    /*设置竖线合并*/
    left: -1px;
}

/*设置li标签*/
.tab-header ul li{
    /*浮动*/
    float: left;

    /*宽度*/
    width: 98px;

    /*高度*/
    height: 38px;

    /*垂直居中*/
    line-height: 38px;

    /*居中*/
    text-align: center;

    /*设置内边距*/
    padding: 0px 1px;

    /*下边框*/
    border-bottom: 1px solid #dddddd;
}

/*设置里面的第一个选中的li标签*/
#tab-header ul li.selected{
    background-color: white;

    /*下边框*/
    border-bottom: 0px;

    /*左边框*/
    border-left: 1px solid #dddddd;

    /*右边框*/
    border-right: 1px solid #dddddd;

    /*清除内部的边距*/
    padding: 0px;
}

/*设置li标签的伪类*/
.tab-header ul li:hover{
    font-weight: bold;
    color: orangered;
}

/*中间的内容*/
#tab-content ul{
    margin-top: 10px;


}

/*设置a标签*/
a{
    /*设置字体颜色*/
    color: black;

    /*除去下划线*/
    text-decoration: none;
}

/*设置中间内容的li标签*/
#tab-content li{
    /*设置浮动位置*/
    float: left;

    /*设置宽度*/
    width: 220px;

    /*间距设置*/
    margin: 10px;


}

/*设置中间内容的伪类*/
#tab-content a:hover{
    color: orangered;
}

/*设置让超出父控件的内容隐藏*/
#tab-content .dom{
    display: none;
}

七. js文件中的代码(代码内部都已经对相关代码注释了)

1. 目的 : 实现选项卡的效果
//jQ
function $(id) {
    return typeof id === 'string' ? document.getElementById(id) : id;
}

window.onload = function () {
    //1.获取头部所有的li标签和中间内容标签
    var lis = $('tab-header').getElementsByTagName('li');
    var content = $('tab-content').getElementsByClassName('dom');

    //打印是否获取了相应的内容
    // console.log(lis, content);

    //判断
    if (lis.length != content.length) return;

    //遍历监听鼠标在头部上的移动
    for (var i = 0; i < lis.length; i++){
        //移除单独的li标签
        var li = lis[i];
        //绑定id(负责选中的)
        li.id = i;
        //监听鼠标在li上的移动
        li.onmousemove = function () {
            for (var j = 0; j < lis.length; j++){
                //清除class
                lis[j].className = '';
                //让所有的内容隐藏
                content[j].style.display = 'none';
            }
            //设置className
            this.className = 'selected';
            //设置内容显示
            content[this.id].style.display = 'block';
        }
    }
}

八. 总结

1. 最近学习的js,附上写的一个选项卡案例,大家有什么不明白的地方,可以给我留言,谢谢!!!!
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是一个简单的实现示例: HTML代码: ```html <div class="tab"> <button class="tab-btn active" data-tab="tab1">选项卡1</button> <button class="tab-btn" data-tab="tab2">选项卡2</button> <button class="tab-btn" data-tab="tab3">选项卡3</button> </div> <div class="tab-content" id="tab1"> <p>这是选项卡1的内容</p> </div> <div class="tab-content" id="tab2"> <p>这是选项卡2的内容</p> </div> <div class="tab-content" id="tab3"> <p>这是选项卡3的内容</p> </div> ``` CSS代码: ```css .tab-btn { background-color: #ccc; border: none; color: #fff; padding: 10px; cursor: pointer; } .active { background-color: #f00; } .tab-content { display: none; } ``` JavaScript代码: ```js // 获取所有选项卡按钮 const tabBtns = document.querySelectorAll(".tab-btn"); // 获取所有选项卡内容 const tabContents = document.querySelectorAll(".tab-content"); // 循环遍历每个选项卡按钮 tabBtns.forEach((btn) => { // 添加点击事件监听器 btn.addEventListener("click", () => { // 移除所有选项卡按钮的 active 类 tabBtns.forEach((btn) => { btn.classList.remove("active"); }); // 给当前点击的选项卡按钮添加 active 类 btn.classList.add("active"); // 隐藏所有选项卡内容 tabContents.forEach((content) => { content.style.display = "none"; }); // 显示与点击按钮对应的选项卡内容 const tabId = btn.getAttribute("data-tab"); document.getElementById(tabId).style.display = "block"; }); }); ``` 解释一下,首先我们通过 `querySelectorAll` 方法获取到所有选项卡按钮和选项卡内容的元素,然后循环遍历每个选项卡按钮,给它们添加点击事件监听器。当点击某个选项卡按钮时,我们先移除所有选项卡按钮的 `active` 类,再给当前点击的选项卡按钮添加 `active` 类。接下来,我们隐藏所有选项卡内容,然后根据点击按钮的 `data-tab` 属性值,找到与之对应的选项卡内容,将它的 `display` 样式属性设为 `block`,以显示该选项卡内容。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值