jQuery手風琴風格收縮展開導航選單

antzone發表於2018-07-14

本章節分享一段程式碼例項,它實現了手風琴效果,可以伸縮的下拉導航選單。

掌握選單的實現原理才是最重要的,下面就詳細分析一下它的實現過程。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style>
/*globle*/
ul, li{
  margin: 0;
  padding: 0;
  list-style-type: none;
}
a{
  display: inline-block;
  width: 100%;
  height: 31px;
  text-decoration: none;
  color: #fff;
  font-size: 13px;
}
a:hover{
  background: #52718A;
}
/*sidebar*/
.sidebar{
  width: 210px;
  height: 335px;
  margin: 50px auto;
  border-radius: 5px;
  font: 14px '新宋體';
  color: #f4f4f4;
}
.title{
  width: 95%;
  line-height: 32px;
  border-bottom: 1px solid #ccc;
  background: #1ABC9C;
  cursor: pointer;
}
.title > span{
  margin-left: 10px;
}
/*in-sidebar*/
.in-sidebar{
  width: 100%;
  display: none;
}
.in-sidebar > li{
  width: 100%;
  height: 32px;
  background: #34495E;
  line-height: 32px;
  text-align: center;
  border-bottom: 1px solid #ddd;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script>
$(function(){
  var tmp = null,
    $title = $('.title'),
    $con = $('.title > ul');
   
  $title.click(function(){
    $(tmp).children('ul').slideUp();
    $(this).children('ul').slideToggle();
    tmp = this;
  });
  $con.click(function(){
    return false;  // 阻止事件冒泡
  });
});
</script>
</head>
<body>  
<div class="sidebar">     
  <ul>
    <li class="title">
      <span>一、HTML5基礎教程</span>
      <ul class="in-sidebar">
        <li><a target="_blank" href="http://www.softwhy.com">HTML5基礎教程1</a></li>
        <li><a href="#">HTML5基礎教程2</a></li>
        <li><a href="#">HTML5基礎教程3</a></li>
        <li><a href="#">HTML5基礎教程4</a></li>
        <li><a href="#">HTML5基礎教程5</a></li>
      </ul>
    </li>
    <li class="title"><span>二、CSS3基礎教程</span>    
      <ul class="in-sidebar">
        <li><a href="#">CSS3基礎教程1</a></li>
        <li><a href="#">CSS3基礎教程2</a></li>
        <li><a href="#">CSS3基礎教程3</a></li>
        <li><a href="#">CSS3基礎教程4</a></li>
        <li><a href="#">CSS3基礎教程5</a></li>
      </ul>
    </li>
    <li class="title">
      <span>三、Javascript基礎教程</span>       
      <ul class="in-sidebar">
        <li><a href="#">Javascript基礎教程1</a></li>
        <li><a href="#">Javascript基礎教程2</a></li>
        <li><a href="#">Javascript基礎教程3</a></li>
        <li><a href="#">Javascript基礎教程4</a></li>
        <li><a href="#">Javascript基礎教程5</a></li>
      </ul>
    </li>
    <li class="title"><span>四、NodeJs基礎教程</span>
      <ul class="in-sidebar">
        <li><a href="#">NodeJs基礎教程1</a></li>
        <li><a href="#">NodeJs基礎教程2</a></li>
        <li><a href="#">NodeJs基礎教程3</a></li>
        <li><a href="#">NodeJs基礎教程4</a></li>
        <li><a href="#">NodeJs基礎教程5</a></li>
      </ul>
    </li>
    <li class="title"><span>五、IOS基礎教程</span>
      <ul class="in-sidebar">
        <li><a href="#">IOS基礎教程1</a></li>
        <li><a href="#">IOS基礎教程2</a></li>
        <li><a href="#">IOS基礎教程3</a></li>
        <li><a href="#">IOS基礎教程4</a></li>
        <li><a href="#">IOS基礎教程5</a></li>
      </ul>
    </li>
  </ul>
</div>
</body>
</html>

上面的程式碼實現了手風琴下拉選單效果,下面詳細介紹一下它的實現過程。

一.程式碼註釋:

(1).$(function(){}),當文件結構完全載入完畢再去執行函式中的程式碼。

(2).var tmp = null,宣告一個變數並賦初值為null,它用來儲存當前點選的標題元素(class屬性值為title)的this索引。

(3).$title = $('.title'),獲取class屬性值為title的元素,也可以叫做標題元素,其實就是每一個選單的父元素。

(4).$con = $('.title > ul'),獲取下面的ul元素。

(5).$title.click(function(){

  $(tmp).children('ul').slideUp();

  $(this).children('ul').slideToggle();

  tmp = this;

}),為標題元素註冊click事件處理函式。

$(tmp).children('ul').slideUp(),會把上一個點選展開的選單隱藏。

$(this).children('ul').slideToggle(),如果選單展開則隱藏,如果隱藏則展開。

tmp = this,將當前的this物件引用賦值給tmp。

(6).$con.click(function(){

  return false;  // 阻止事件冒泡

}),阻止時間冒泡,否則點選連結也會產生選單展開和隱藏效果。

二.相關閱讀:

(1).children方法參閱jQuery children()一章節。

(2).slideUp方法參閱jQuery slideUp()一章節。

(3).slideToggle方法參閱jQuery slideToggle()一章節。

(4).return false參閱javascript return false一章節。

相關文章