實現選項卡切換的三種方式

首先我用Jquery庫實現了一個簡單的效果,javascript

只須要點擊上面的導航標籤便可切換下方內容,Html代碼以下css

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>tab切換</title>
    <style type="text/css">
        *{padding:0;margin:0;font:normal 15px "微軟雅黑";color:#000;}
        ul{list-style-type: none;padding-left: 5px;margin-bottom: -2px}
        .tab{width:500px;margin: 10px auto}
        a{text-decoration: none;}
        .title li{display: inline-block;border: 1px solid #999;border-bottom: 2px solid #a00;background: #fff;text-align: center;width: 60px;height: 30px;margin: 0 1px;line-height: 30px}
        .title .active{border-top:2px solid #a00;border-bottom: 2px solid #fff; }
        #content{margin: 0;border: 1px solid #ccc;border-top: 2px solid #a00;width: 300px}
        #content div{display: none;padding: 10px 0}
        #content .mod{display: block;}
    </style>
</head>
<body>
<div class="tab">
    <ul class="title">
        <li class="active"><a href="#">房產</a></li>
        <li><a href="#">家居</a></li>
        <li><a href="#">二手房</a></li>
        <!--<li><a href="#">家居</a></li>-->
    </ul>
    <div id="content">
        <div class="mod">
            <ul>
                <li><a href="#">房產內容1</a> </li>
                <li><a href="#">房產內容2</a> </li>
                <li><a href="#">房產內容3</a> </li>
            </ul>
        </div>
        <div class="mod" style="display: none">
            <ul>
                <li><a href="#">家居內容1</a> </li>
                <li><a href="#">家居內容2</a> </li>
                <li><a href="#">家居內容3</a> </li>
            </ul>
        </div>
        <div class="mod" style="display: none">
            <ul>
                <li><a href="#">二手房內容1</a> </li>
                <li><a href="#">二手房內容2</a> </li>
                <li><a href="#">二手房內容3</a> </li>
            </ul>
        </div>
    </div>
</div>
</body>
</html>
View Code

Jquery代碼以下:html

<script type="text/javascript" src="jquery-3.0.0.min.js"></script>
<script type="text/javascript">
    $(function(){
        $(".title li").click(function(){
//            var $this=$(this);
//            alert($this.index());
            $(this).addClass("active").siblings().removeClass("active");
            $("#content .mod").eq($(".title li").index(this)).show().siblings("#content .mod").hide();
        });
    });
</script>
View Code

相信你們用Jquery都是比較輕鬆,緊接着我又嘗試了用源生的js代碼來實現這種效果,效果圖以下:java

實現所需的html代碼:jquery

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        *{padding: 0;margin: 0;box-sizing: border-box}
        div{width: 70%;margin: 20px auto;}
        ul{
            list-style: none;overflow: hidden;
        }
        #nav{
            width: 400px;height: 40px;text-align: center;line-height: 40px;
            background: #c5c5c5;
        }
        #nav li{
            width: 25%;height: 40px;float: left;border: 1px solid #c5c5c5;
            border-bottom: none;
        }
        #nav li.active{
            background: #fff;
        }
        #content{
            width: 400px;height: 300px;position: relative;border: 1px solid #c5c5c5;border-top: none;
        }
        #content li{width: 100%;height: 100%;position: absolute;padding: 10px;display: none}
    </style>
</head>
<body>
<div>
    <ul id="nav">
    <li class="active">選項一</li>
    <li>選項二</li>
    <li>選項三</li>
    <li>選項四</li>
</ul>
<ul id="content">
    <li style="display: block">內容一</li>
    <li>內容二</li>
    <li>內容三</li>
    <li>內容四</li>
</ul>
</div>
</body>
</html>
View Code

js代碼以下:ide

<script type="text/javascript">
  var nav =document.getElementById("nav");
  var navlist = nav.children;
  var con = document.getElementById("content");
  var conlist = con.children;
  for (var i= 0;i<navlist.length;i++){
      navlist[i].index = i;
      navlist[i].onclick = function (){
          for (var m = 0;m< conlist.length;m++){
              navlist[m].className = "";
              conlist[m].style.display ="none";
          }
          this.className = "active";
          conlist[this.index].style.display = "block";
      }
  }
</script>

 

若是說你們在寫頁面的時候須要屢次實現選項卡效果,可是又不想形成代碼重複該怎麼辦呢?咱們這時候能夠使用函數封裝概念來封裝一個函數方法來實現屢次調用。函數

html代碼同上,js封裝方法代碼以下:this

<script type="text/javascript">
    function change(navid,conid){
        var nav = document.getElementById(navid);
        var navlist = nav.getElementsByTagName("li");
        var con = document.getElementById(conid);
        var conlist = con.getElementsByTagName("li");
        for (i=0;i<navlist.length;i++){
            navlist[i].onclick = function (i){
                return function (){
                    for (m = 0;m<conlist.length;m++){
                        navlist[m].className ="";
                        conlist[m].style.display = "none";
                    }
                    this.className = "active";
                    conlist[i].style.display = "block";
                }
            }(i);
        }
    };
    change("nav","content");       //調用函數方法
</script>
View Code

好了,以上就是實現選項卡切換的三種方法,感謝。spa

相關文章
相關標籤/搜索