[前端] html+css+javascript 實現選項卡切換效果


用html+css+js實現選項卡切換效果
使用之前學過的綜合知識,實現一個新聞門戶網站上的常見選項卡效果:

 

文字素材:
房產:
275萬購昌平鄰鐵三居 總價20萬買一居
200萬內購五環三居 140萬安家東三環
北京首現零首付樓盤 53萬購東5環50平
京樓盤直降5000 中信府 公園樓王現房
家居:
40平出租屋大改造 美少女的混搭小窩
經典清新簡歐愛家 90平老房煥發新生
新中式的酷色溫情 66平撞色活潑家居
瓷磚就像選好老婆 衛生間煙道的設計
二手房:
通州豪華3居260萬 二環稀缺2居250w甩
西3環通透2居290萬 130萬2居限量搶購
黃城根小學學區僅260萬 121平70萬拋!
獨家別墅280萬 蘇州橋2居優惠價248萬
先分析基本思路。首先編寫HTML,然后再加載樣式,最后用JS修改相應的DOM,達到更改選項卡和內容的目的。

一、HTML頁面布局
HTML顯示的是所有與文字有關的信息,所以在這個頁面中與文字有關的信息為上面選項卡的三個標題,以及選項卡的內容。
於是決定標題使用<ul> <li>布局,內容使用<div>布局。編寫代碼如下:


現在展示出來的樣式是這樣的:

 

 

CSS樣式
要制作成上圖所示的選項卡樣式,幾個地方需要注意:
1、整個選項卡的樣式設置
2、選項卡標題的樣式設置
3、選項卡內容的樣式設置
4、只能顯示一個選項卡的內容,其他選項卡內容隱藏。

 

寫完以后,效果就出來啦。

 

JavaScript實現選項卡切換
1、首先需要獲取選項卡標題和選項卡內容
2、選項卡內容有三個,需要循環遍歷來操作,得知哪個選項卡和哪個選項內容匹配。
3、通過改變DOM的css類名稱,當前點擊的選項卡顯示,其它隱藏。


完整代碼:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title> 選項卡</title>
    <style type="text/css">
     /* CSS樣式制作 */  
     *{padding:0px; margin:0px;}
      a{ text-decoration:none; color:black;}
      a:hover{text-decoration:none; color:#336699;}
       #tab{width:270px; padding:5px;height:150px;margin:20px;}
       #tab ul{list-style:none; display:;height:30px;line-height:30px; border-bottom:2px #C88 solid;}
       #tab ul li{background:#FFF;cursor:pointer;float:left;list-style:none height:29px; line-height:29px;padding:0px 10px; margin:0px 10px; border:1px solid #BBB; border-bottom:2px solid #C88;}
       #tab ul li.on{border-top:2px solid Saddlebrown; border-bottom:2px solid #FFF;}
       #tab div{height:100px;width:250px; line-height:24px;border-top:none;  padding:1px; border:1px solid #336699;padding:10px;}
       .hide{display:none;}
    </style>

    <script type="text/javascript">
    // JS實現選項卡切換
    window.onload = function(){
    var myTab = document.getElementById("tab");    //整個div
    var myUl = myTab.getElementsByTagName("ul")[0];//一個節點
    var myLi = myUl.getElementsByTagName("li");    //數組
    var myDiv = myTab.getElementsByTagName("div"); //數組

    for(var i = 0; i<myLi.length;i++){
        myLi[i].index = i;
        myLi[i].onclick = function(){
            for(var j = 0; j < myLi.length; j++){
                myLi[j].className="off";
                myDiv[j].className = "hide";
            }
            this.className = "on";
            myDiv[this.index].className = "show";
        }
      }
    }
    </script>

</head>
<body>
<!-- HTML頁面布局 -->
<div id = "tab">
        <ul>
        <li class="off">房產</li>
        <li class="on">家居</li>
        <li class="off">二手房</li>
        </ul>
    <div id="firstPage" class="hide">
            <a href = "#">275萬購昌平鄰鐵三居 總價20萬買一居</a><br/>
            <a href = "#">200萬內購五環三居 140萬安家東三環</a><br/>
            <a href = "#">北京首現零首付樓盤 53萬購東5環50平</a><br/>
            <a href = "#">京樓盤直降5000 中信府 公園樓王現房</a><br/>
    </div>
    <div id="secondPage" class="show">
            <a href = "#">40平出租屋大改造 美少女的混搭小窩</a><br/>
            <a href = "#">經典清新簡歐愛家 90平老房煥發新生</a><br/>
            <a href = "#">新中式的酷色溫情 66平撞色活潑家居</a><br/>
            <a href = "#">瓷磚就像選好老婆 衛生間煙道的設計</a><br/>
    </div>
    <div id="thirdPage" class = "hide">
            <a href = "#">通州豪華3居260萬 二環稀缺2居250w甩</a><br/>
            <a href = "#">西3環通透2居290萬 130萬2居限量搶購</a><br/>
            <a href = "#">黃城根小學學區僅260萬 121平70萬拋!</a><br/>
            <a href = "#">獨家別墅280萬 蘇州橋2居優惠價248萬</a><br/>
    </div>
</div>

</body>
</html>

 

---------------------
作者:童凌
來源:CSDN
原文:https://blog.csdn.net/tlonline/article/details/50995865
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

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



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