JavaScript tab選項卡效果

螞蟻小編發表於2018-07-12

選項卡是非常常見的效果之一,能夠在儘可能少的空間中顯示更多的內容。

下面是一個用JavaScript實現的選項卡程式碼,並且給出詳細的實現過程。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
*{
  list-style:none;
  margin:0;
  padding:0;
  overflow:hidden
}
#tab{
  width:401px;
  border-top:#A8C29F solid 1px;
  border-bottom:#A8C29F solid 1px;
  margin:50px 200px;
}
.menu{
  width:400px;
  background:#eee;
  height:28px;
  border-right:#A8C29F solid 1px;
  border-bottom:#A8C29F solid 1px;
}
li{
  float:left;
  width:99px;
  text-align:center;
  line-height:28px;
  height:28px;
  cursor:pointer;
  border-left:#A8C29F solid 1px;
  color:#666;
  font-size:14px;
  overflow:hidden
}
.menudiv{
  width:399px;
  height:300px;
  border-left:#A8C29F solid 1px;
  border-right:#A8C29F solid 1px;
  border-top:0;
  background:#fefefe
}
.menudiv div{
  padding:15px;
  line-height:28px;
}
.off{
  background:#E0E2EB;
  color:#336699;
  font-weight:bold
}
</style>
<script type="text/javascript"> 
window.onload=function(){ 
  var otab=document.getElementById("tab");
  var lis=otab.getElementsByTagName("li");
  var omenudiv=document.getElementById("box");
  var divs=omenudiv.children;
  var lis_len=lis.length;
 
  for(var index=0;index<lis_len;index++){
    lis[index]._index=index;
    lis[index].onclick=function(){
      for(var j=0;j<lis_len;j++){
        lis[j].className="";
        divs[j].style.display="none";
      }
      this.className="off";
      divs[this._index].style.display="block";
    }
  }
} 
</script>
</head>
<body>
<div id="tab">
  <div class="menu">
    <ul>
      <li class="off">標籤1</li>
      <li>標籤2</li>
      <li>標籤3</li>
      <li>標籤4</li>
    </ul>
  </div>
  <div class="menudiv" id="box">
    <div>
      <h4 style="color:red">標籤1-內容</h4>
    </div>
    <div style="display:none;">
      <h4 style="color:red">標籤2-內容</h4>
    </div>
    <div style="display:none;">
      <h4 style="color:red">標籤3-內容</h4>
    </div>
    <div style="display:none;">
      <h4 style="color:red">標籤4-內容</h4>
    </div>
  </div>
</div>
</body>
</html>

上面的程式碼實現了選項卡功能,下面介紹一下它的實現過程。

一.程式碼註釋:

(1).window.onload=function(){},文件內容完全載入完畢再去執行函式中的程式碼。

(2).var otab=document.getElementById("tab"),獲取id屬性值為tab的元素物件。

(3).var lis=otab.getElementsByTagName("li"),獲取otab元素下所有的li元素集合。

(4).var omenudiv=document.getElementById("box"),獲取id屬性值為box的元素物件。

(5).var divs=omenudiv.children,獲取omenudiv下的一級子元素集合。

(6).var lis_len=lis.length,獲取li元素的數目。

(7).for(var index=0;index<lis_len;index++),遍歷每一個li元素。

(8).lis[index]._index=index,為當前li元素新增一個自定義屬性_index,並賦值為index。

(9).lis[index].onclick=function(){},為當前li元素註冊onclick事件處理函式。

(10).for(var j=0;j<lis_len;j++){

  lis[j].className="";

  divs[j].style.display="none";

}

遍歷每一個裡元素,並將li元素的className屬性值設定為空,對應的內容的設定為隱藏狀態。

(11).this.className="off"和divs[this._index].style.display="block",為當前的li元素新增樣式類off,將對應內容顯示。

二.相關閱讀:

(1).document.getElementById方法參閱document.getElementById()一章節。

(2).getElementsByTagName方法參閱JavaScript getElementsByTagName()一章節。

(3).children參閱JavaScript children一章節。

(4).className參閱JavaScript className 屬性一章節。

相關文章