JS实现选项卡以及跳转到选项卡页面时选项卡显示对应内容

JS实现选项卡以及跳转到选项卡页面时选项卡显示对应内容

实现效果
JS实现选项卡以及跳转到选项卡页面时选项卡显示对应内容_第1张图片
当点击对应的导航时,下方显示对应的内容,并且导航的样式发生改变。也就是点击导航一,下方只显示内容一,而其它的内容不可见。

实现思路
将内容样式设置为display:none;,在点击导航时,触发一个onclick事件使得内容的样式变为display:block;,并且给导航添加一个class名,赋予新的样式。

1. 基础界面
也就是上方的图片代码

html代码


    
  • 导航一
  • 导航二
  • 导航三
  • 导航四
  • 导航五
内容一
内容二
内容三
内容四
内容五

css代码

* {
    padding: 0;
    margin: 0;
}
.body {
    width: 100vw;
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
}
.tab {
    width: 50%;
    height: 50px;
    float: left;
    border: 1px solid rgb(19, 136, 214);
}
.tab li{
    float: left;
    width: 20%;
    height: 100%;
    text-align: center;
    line-height: 50px;
    color: #fff;
    background-color: rgb(19, 136, 214);
    list-style: none;
}
.tab li:hover {
    float: left;
    width: 20%;
    height: 100%;
    text-align: center;
    line-height: 50px;
    color: rgb(19, 136, 214);
    background-color: #fff;
    list-style: none;
}
.card {
    width: 50%;
    height: 50%;
    font-size: 30px;   
}

2.选项卡技术实现
首先,需要将所有的内容隐藏,然后为导航添加onclick事件,在onclick事件中通过for循环来遍历每一个li以及content,通过遍历得到每一个元素然后对其的样式进行修改。

实现效果图
JS实现选项卡以及跳转到选项卡页面时选项卡显示对应内容_第2张图片
新添加的css代码

.content {
    display: none;
}
.tab li.pu {
    float: left;
    width: 20%;
    height: 100%;
    text-align: center;
    line-height: 50px;
    color: rgb(19, 136, 214);
    background-color: #fff;
    list-style: none;
}

js代码

window.onload = function () {
    var tab = document.getElementById('tab');
    //通过id获取tab元素
    var li = tab.getElementsByTagName('li');
    //获取tab元素中的所有li元素
    var card = document.getElementById('card');
    //通过id获取card元素
    var content = card.getElementsByClassName('content');
    //获取card元素下的所有content元素

    for (let i = 0; i < li.length; i++) {//定义一个变量i=0,让其小于li元素的个数
        li[i].onclick = function () {//为每一个li都添加一个onclick点击事件
            for (let e = 0; e < li.length; e++) {//该for循环使每一个li的class为空content的display为none
                li[e].className = "";            //每触发点击事件时,会清除之前被点击的li的样式并隐藏之前显示的content
                content[e].style.display = "none";
            }
            li[i].className = "pu";//为li添加一个为up的class
            content[i].style.display = "block";//使得content的display为block
        }
    }
}

3.页面跳转显示对应的选项卡内容技术实现
首先新创建一个页面并在a标签中添加一个参数,点击a标签页面跳转后参数会出现在选项卡页面的href中,然后通过正则表达式截取到上一个页面传过来的参数,通过for循环遍历使得与参数对应的li和content的样式发生改变。

实现效果图
JS实现选项卡以及跳转到选项卡页面时选项卡显示对应内容_第3张图片

首页html代码


整体js代码

window.onload = function () {
    var tab = document.getElementById('tab');
    //通过id获取tab元素
    var li = tab.getElementsByTagName('li');
    //获取tab元素中的所有li元素
    var card = document.getElementById('card');
    //通过id获取card元素
    var content = card.getElementsByClassName('content');
    //获取card元素下的所有content元素

    function getParams(name, href) {
        var href = href || window.location.href,
            value = '';

        if (name) {
            var reg = new RegExp(name + '=([^&]*)', 'g');
            href.replace(reg, function ($0, $1) {
                value = decodeURI($1);
            });
        } else {
            value = {};
            var reg = /\b(\w+)=([^\/&]*)/g;
            href.replace(reg, function ($0, $1, $2) {
                value[$1] = decodeURI($2);
            });
        }
        return value;
    };
    getParams();
    var O = getParams("O");
    for (let i = 0; i < li.length; i++) {//定义一个变量i=0,让其小于li元素的个数  
        li[O].className = "pu";
        content[i].style.display = "block" ;
        li[i].onclick = function () {//为每一个li都添加一个onclick点击事件 
            for (let e=0; e 

以上所述,如有错误,请留言指正。

你可能感兴趣的:(JS实现选项卡以及跳转到选项卡页面时选项卡显示对应内容)