JS 實現Tab欄切換


  實現

 實現如圖所示的Tab欄切換,點擊對應的 tab 出現對應的內容,同時該點擊的 tab 背景顏色為紅:

  

 

  分析

  • 首先建立一個大的 div 里面包含兩個盒子
  • 第一個盒子里面放 tab 欄
  • 第二個盒子里面放相應的內容
<div class="tab">
<!--    tab欄-->
    <div class="tab_list">
        <ul>
            <li class="current">每日推薦</li>
            <li>歌單</li>
            <li>主播電台</li>
            <li>排行榜</li>
            <li>歌手</li>
        </ul>
    </div>
<!--    tab欄內容-->
    <div class="tab_con">
        <div class="item" style='display:block'>網易雲音樂</div>
        <div class="item">我要你好好的  ——帆布小鎮</div>
        <div class="item">筱竹聽雨</div>
        <div class="item">故夢   ——倫桑</div>
        <div class="item">倫桑、任然、黃詩扶、許嵩</div>
    </div>
</div>

 

  JS思想實現

 利用排他思想:通過 for循環遍歷存放 li 數組中的元素,進入循環之后首先消除所有部分的樣式,接着再為當前所點擊的 li 添加樣式。

 代碼如下:

<head>
    <meta charset="UTF-8">
    <title>Tab欄切換</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .tab{
            width:800px;
            height:45px;
            border:1px solid #ccc;
            border-bottom:1px solid #c81623;
            background: #fafafa;
            position:relative;
            margin:100px auto;
        }
        .tab_list li{
            width:160px;
            height:45px;
            list-style:none;
            line-height:45px;
            font-size: 15px;
            text-align: center;
            float:left;
        }
        .tab_list .current{
            background-color:#c81623;
            color:#fff;
        }
        .item{
            position:absolute;
            top:47px;
            width:800px;
            height: 200px;
            padding-top:40px;
            font-size: 25px;
            color:#fff;
            text-align: center;
            text-shadow:2px 2px 4px #000000;
            background: #efefef;
            display: none;
            /*這里注意*/
        }
    </style>
</head>

<body>
<div class="tab">
<!--    tab欄-->
    <div class="tab_list">
        <ul>
            <li class="current">每日推薦</li>
            <li>歌單</li>
            <li>主播電台</li>
            <li>排行榜</li>
            <li>歌手</li>
        </ul>
    </div>
<!--    tab欄內容-->
    <div class="tab_con">
<!--        默認第一個tab下的內容顯示-->
        <div class="item" style='display:block'>網易雲音樂推薦</div>
        <div class="item">我要你好好的  ——帆布小鎮</div>
        <div class="item">筱竹聽雨</div>
        <div class="item">故夢   ——倫桑</div>
        <div class="item">倫桑、任然、黃詩扶、許嵩</div>
    </div>
</div>

<script>
    var tab_list = document.querySelector('.tab_list');
    var lis = tab_list.querySelectorAll('li');
    var items = document.querySelectorAll('.item');
//for循環綁定事件 for(let i=0;i < lis.length;i++){ // setAttribute() 方法添加指定的屬性,並為其賦指定的值。 lis[i].setAttribute('index',i); //此點擊事件是一個回調函數 lis[i].onclick = function () { //把所有li的類選擇器置空 for(var i=0;i < lis.length;i++){ lis[i].className = ''; } //給當前點擊的li添加樣式.current this.className = 'current'; //下面顯示內容模塊 var index = this.getAttribute('index'); console.log(i); //去掉其他的 item,讓這些隱藏起來 //只留下當前的 item,讓它顯示出來 for(var i=0;i<items.length;i++){ items[i].style.display = 'none'; } items[index].style.display = 'block'; } } </script> </body>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM