javaScript實例:tab切換效果

我們平時經常會用到tab切換的效果,如下圖:

這裏寫圖片描述

這個效果很常見,用js就可以實現。

佈局分析:

我們可以先讓其中的一塊內容顯示,其他的內容先隱藏,當用戶點擊頭部標籤時,可以讓當前內容隱藏,點擊部分的內容顯示出來。通過改變標籤樣式就可以實現。

html、css代碼如下:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>tab切換效果</title>
    <style>
        #tab-nav{
            overflow: hidden;
            padding: 0;
            margin: 0;
            cursor: hand;
        }
        #tab-nav li{
            float: left;
            display: block;
            width: 100px;
            height: 30px;
            line-height: 30px;
            text-align: center;
            border: 1px solid #bbb;
            border-bottom: none;
        }
        #tab-nav .on{
            background: #ccc;
            color: red;
        }
        #tab-con div{
            display: none;
        }
        #tab-con .selected{
            display: block;
            width: 650px;
            height: 300px;
            padding: 30px;
            line-height: 40px;
            color: #c3c3c3;
            border: 1px solid #c3c3c3;
        }
    </style>
</head>
<body>
    <ul id="tab-nav" type="none">
        <li class="on">number</li>
        <li>String</li>
        <li>boolean</li>
        <li>undefined</li>
        <li>null</li>
        <li>object</li>
    </ul>
    <div id="tab-con">
        <div class="selected">
            number類型表示整型和浮點型,基本的數值字面量格式都是十進制。<br/>
            此外,整數的字面量還可以是八進制和十六進制。<br/>
            NaN即非數值,是number類型中的一個特殊值<br/>
            NaN用於表示本來要返回一個數值的操作數,結果未返回數值的情況(這樣不會報錯)。<br/>
        </div>
        <div>
            string類型用於表示由零個或多個16位unicode字符組成的字符序列,即字符串,由雙引號或單引號表示。
        </div>
        <div>boolean類型有兩個字面值:true 和 false<br/>
            在js中所有類型值都有與這兩個布爾值等價的值<br/>
            1.特殊值undefined和null -- false<br/>
            2.數字0和NaN -- false<br/>
            3.空字符串 -- false<br/>
            4.所有其他值 -- true<br/>
        </div>
        <div>undefined類型只有一個特殊值爲undefined<br/>
            聲明變量未初始化時,這個變量的值就是undefined<br/>
        </div>
        <div>null類型只有一個特殊值爲null<br/>
            從邏輯角度來看,null表示空對象指針,所以typeof檢測時返回object。<br/>
            如果變量準備在將來用於保存對象,那麼該變量最好初始化爲null。<br/>
        </div>
        <div>JavaScript中對象其實就是一組數據和功能的集合。<br/>
            var obj1=[1,2,3];<br/>
            var obj2={name:'laowang'};<br/>

        </div>
    </div>
   </body>
</html>

我用了兩種思路來實現這個效果。

思路一

首先可以給每一個導航塊標記一個index,這樣等用戶點擊導航塊時,先將所有的li與tab-con中的子div的className清空,然後再通過index標記,把點擊的導航塊和對應的div的className分別設置爲on和selected。

<script>
        var lis = document.getElementById("tab-nav").getElementsByTagName("li");
        var divs = document.getElementById("tab-con").getElementsByTagName("div");
        for(var i=0;i< lis.length;i++){
            lis[i].index = i;
            lis[i].onclick = function(){
                for(var j=0;j<divs.length;j++){
                    lis[j].className="";
                    divs[j].className="";
                }
                lis[i].className = "on";
                divs[this.index].className="selected";
            }
        }
</script>

思路二

每次點擊事件後,對導航塊進行一次遍歷判斷,找到本次點擊的導航塊之後,將這個導航塊和對應的div的className改變,並且將其他的className清空。

<script>
        var lis = document.getElementById("tab-nav").getElementsByTagName("li");
        var divs = document.getElementById("tab-con").getElementsByTagName("div");
        for(var i=0;i<lis.length;i++){
            lis[i].onclick = function(){
                for(var i=0;i<lis.length;i++) {
                    if (this == lis[i]) {
                        lis[i].className = "on";
                        divs[i].className = "selected";
                    }
                    else {
                        lis[i].className = "";
                        divs[i].className = "";
                    }
                }
            }
        }
    </script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章