jQuery點選展開摺疊手風琴導航選單詳解

admin發表於2017-10-31

分享一段程式碼例項,它實現了手風琴式導航選單效果。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
]
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style>
* {
  padding: 0;
  margin: 0;
  border: none;
  list-style: none;
}
.nav {
  width: 200px;
  height: auto;
  margin: 50px auto;
}
.nav li span {
  width: 185px;
  height: 45px;
  line-height: 45px;
  color: #333;
  display: block;
  padding-left: 15px;
  background: #999 ;
  cursor: pointer;
  border-bottom: 1px solid #fff;
}
.side_nav {
  display: none;
}
.side_nav li {
  width:185px;
  height:45px;
  line-height:45px;
  background:#ccc;
  color:#333;
  display:block;
  padding-left: 15px;
  border-bottom: 1px solid #fff;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script>
$(document).ready(function(){
  $(".nav li span").click(function(){
    if ($(this).siblings('ul').css('display')=='none') {
      $(this).siblings('ul').slideDown(100);
    }else{
      $(this).siblings('ul').slideUp(100);
    }
  });
});
</script>
</head>
<body>
  <ul class="nav">
    <li>
      <span>螞蟻部落一</span>
      <ul class="side_nav">
        <li>二級選單</li>
        <li>二級選單</li>
        <li>二級選單</li>
      </ul>
    </li>
    <li>
      <span>螞蟻部落二</span>
      <ul class="side_nav">
        <li>二級選單</li>
        <li>二級選單</li>
        <li>二級選單</li>
      </ul>
    </li>
    <li>
      <span>螞蟻部落三</span>
      <ul class="side_nav">
        <li>二級選單</li>
        <li>二級選單</li>
        <li>二級選單</li>
      </ul>
    </li>
  </ul>
</body>
</html>

上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。

一.程式碼註釋:

[CSS] 純文字檢視 複製程式碼
* {
  padding: 0;
  margin: 0;
  border: none;
  list-style: none;
}

進行一些初始化操作,設定內外邊距為0,去掉列表的預設樣式或者元素的預設邊框。

[CSS] 純文字檢視 複製程式碼
.nav {
  width: 200px;
  height: auto;
  margin: 50px auto;
}

設定導航選單容器元素的相關樣式。

寬度是200px,高度是auto,也就是可以根據內容元素的變化。

使用margin設定其水平居中。

[CSS] 純文字檢視 複製程式碼
.nav li span {
  width: 185px;
  height: 45px;
  line-height: 45px;
  color: #333;
  display: block;
  padding-left: 15px;
  cursor: pointer;
  border-bottom: 1px solid #fff;
}

這個span元素用來防止主導航的文字內容。

通過display: block將其設定為塊級元素,這樣就可以設定其尺寸了。

[CSS] 純文字檢視 複製程式碼
.side_nav {
  display: none;
}

設定二級導航在預設狀態下為隱藏。

[CSS] 純文字檢視 複製程式碼
.side_nav li {
  height:45px;  
  width:185px;
  line-height:45px;
  background:#ccc;
  color:#333;
  display:block;
  padding-left: 15px;
  border-bottom: 1px solid #fff;
}

設定裡元素的相關樣式,也就是二級導航每一個欄目的樣式。

[JavaScript] 純文字檢視 複製程式碼
$(document).ready(function(){
  //code
})

當文件結構完全載入完畢再去執行函式中的程式碼。

[JavaScript] 純文字檢視 複製程式碼
$(".nav li span").click(function(){
  //code
})

為主導航註冊click事件處理函式。

[JavaScript] 純文字檢視 複製程式碼
if ($(this).siblings('ul').css('display')=='none') {
  $(this).siblings('ul').slideDown(100);
}else{
  $(this).siblings('ul').slideUp(100);
}

判斷當前點選的主導航span元素的兄弟ul元素是否是隱藏。

如果隱藏就下拉展開,否則就收縮。

二.相關閱讀:

(1).click可以參閱jQuery click事件一章節。

(2).siblings可以參閱jQuery siblings()一章節。

(3).css()可以參閱jQuery css()一章節。

(4).slideDown()可以參閱jQuery slideDown()一章節。

(5).slideUp()可以參閱jQuery slideUp()一章節。

相關文章