具有淡入淡出效果的下拉導航選單例項程式碼

admin發表於2017-03-04

二級下拉導航選單是最為常見的選單之一,在眾多的網站都有應用,本章節介紹分享一個具有淡入淡出效果的二級下拉選單,程式碼非常的簡單,之所以如此,得益於jQuery的便利性。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
*{
  margin:0;
  padding:0
}
table {
  border-collapse:collapse;
  border-spacing:0
}
fieldset, img{border:0}
address, caption, cite, code, dfn, em, strong, th, var {
  font-style:normal;
  font-weight:normal
}
ol, ul{list-style:none}
caption, th{text-align:left}
h1, h2, h3, h4, h5, h6 {
  font-size:100%;
  font-weight:normal
}
q:before, q:after{content:''}
abbr, acronym{border:0}
:focus{outline:0}
ins{text-decoration:none}
del{text-decoration:line-through}
a {
  color:#fff;
  text-decoration:none;
}
a:hover{text-decoration: underline;}
a{color: black}
#nav li{
  float:left;
  position:relative;
}
#nav li a {
  background:#d6cfbd;
  border:3px solid #4f4026;
  color:#333;
  display:block;
  margin:0 5px 0 0;
  padding:5px 8px;
}
#nav li a:hover {
  background:#f7f7f7;
  text-decoration:none;
}
#nav {
  display:block;
  height:35px;
  padding:10px 0;
  width:500px;
  z-index:100;
  position:absolute;
}
#nav > li > a{
  border-top-left-radius:10px;
  border-top-right-radius:10px;
  -moz-border-radius-topleft:10px;
  -moz-border-radius-topright:10px;
  -webkit-border-top-left-radius:10px;
  -webkit-border-top-right-radius:10px;
}
#nav li ul {
  background:#e1ddd3;
  border:3px solid #4f4026;
  color:#333;
  display:none;
  margin:-3px 0 0 0;
  width:200px;
  position:absolute;
}
#nav li ul li{width:100%}
#nav li ul li a {
  background:none;
  border:none;
  line-height:30px;
  margin:0;
  padding:0 0 0 5px;
}
#nav li ul li a:hover{background:#f7f7f7;}
#nav li.current > a{background:#f7f7f7;}
#nav li:hover > ul.child{display:block;}
</style>
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){ 
  $("#nav ul.child").removeClass("child");
  $("#nav li").has("ul").hover(function(){
    $(this).addClass("current").children("ul").fadeIn();
  },function(){
    $(this).removeClass("current").children("ul").hide();
  })
})
</script>
</head>
<body>
<div id="page-wrap">
  <div id="content">
    <ul id="nav">
      <li><a href="#">螞蟻部落</a></li>
      <li><a href="#">前端教程</a>
        <ul class="child">
          <li><a href="#">div教程</a></li>
          <li><a href="#">css教程</a></li>
          <li><a href="#">js教程</a></li>
          <li><a href="#">jQuery教程</a></li>
        </ul>
      </li>
      <li><a href="#">服務</a>
        <ul class="child">
          <li><a href="#">網站建設</a></li>
          <li><a href="#">網上教學</a></li>
          <li><a href="#">優化服務</a></li>
        </ul>
      </li>
      <li><a href="#">關於我們</a></li>
      <li><a href="#">聯絡我們</a></li>
    </ul>
  </div>
</div>
</body>
</html>

以上程式碼實現了我們的要求,二級下拉選單具有淡入淡出效果,下面介紹一下實現過程:

一.實現原理:

本程式碼中使用了一些CSS3的程式碼,比如圓角效果,這些都不做介紹了,具體可以在本站查詢相關內容,下面對二級下拉選單的框架做一下介紹,程式碼如下:

[HTML] 純文字檢視 複製程式碼
<li><a href="#">前端教程</a>
  <ul class="child">
    <li><a href="#">div教程</a></li>
    <li><a href="#">css教程</a></li>
    <li><a href="#">js教程</a></li>
    <li><a href="#">jQuery教程</a></li>
  </ul>
</li>

ul之外的li是主導航,ul是二級導航,在預設狀態下,ul是處於隱藏狀態的,當滑鼠移到最外層li的時候,ul會被顯示,當滑鼠li離開最外層li的時候ul會處於隱藏狀態。具體操作過程可以參閱程式碼註釋:

二.程式碼註釋:

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

2.$("#nav ul.child").removeClass("child"),可以將id屬性值為nav的元素下class屬性值為child的ul中的值為child的class移除。

3.$("#nav li").has("ul").hover(),註冊事件處理函式,也就是當滑鼠移入和移出時要執行的函式。

4.$(this).addClass("current").children("ul").fadeIn(),為當前li新增值為current的class,並且將其ul子元素以淡入方式展現。

5.$(this).removeClass("current").children("ul").hide(),將當期li的值為current的class移除,並且將其ul子元素隱藏。

三.相關閱讀:

1.removeClass()函式可以參閱jQuery removeClass()一章節。 

2.has()函式可以參閱jQuery has()一章節。

3.hover()可以參閱jQuery hover事件一章節。

4.addClass()函式可以參閱jQuery addClass()一章節。  

5.children()函式可以參閱jQuery children()一章節。 

6.fadeIn()函式可以參閱jQuery fadeIn()一章節。 

7.hide()函式可以參閱jQuery hide()一章節。 

相關文章