用三種方式實現導航菜單中的二級下拉菜單


如何實現導航菜單欄中的二級下拉菜單?

  我們在淘寶、搜狐等大型網站上都可以看到使用的一些二級下拉菜單,比如下面這張圖片。

但是如何實現類似的圖片呢?實際上,我們有至少三種方式來實現,下面,我附上代碼供大家參考。

1.僅使用html和css

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
	*{margin:0;padding: 0;list-style: none;text-decoration: none;}
	#nav{width: 500px;height: 40px;background: #ccc;margin: 0 auto;}
	ul{background: #aaa}
	ul li{float:left; display:block; height: 40px; line-height: 40px; padding: 0 20px; position: relative;}
	ul li:hover{background: #cea;}
	ul li ul li{float: none;}
	/*關鍵一:將二級菜單設置為display:none;*/
	ul li ul{position: absolute;top:40px;left: 0; display: none;}
	ul li ul li:hover{background: red;}
	/*關鍵二:在划過二級菜單從屬的一級菜單時,設置為display:block;*/
	ul li:hover ul{display: block;}
	</style>
</head>
<body>
	<div id="nav">
		<ul>
			<li><a href="">首頁</a></li>
			<li><a href="">汽車</a>
				<ul>
					<li><a href="#">奧迪</a> </li>
					<li><a href="#">道奇</a> </li>
				</ul>
			</li>
			<li><a href="">手機</a>
				<ul>
					<li><a href="#">小米</a> </li>
					<li><a href="#">華為</a> </li>
				</ul>
			</li>
			<li><a href="">聯系我們</a></li>
		</ul>
	</div>	
</body>
</html>

  我們可以看到,這種方法是比較好的,它保證了結構與表現的完全分離。

 

 

2.使用javascript實現二級下拉菜單

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{margin:0;padding: 0;list-style: none;text-decoration: none;}
#nav{width: 500px;height: 40px;background: #ccc;margin: 0 auto;}
ul{background: #aaa}
ul li{float:left; display:block; height: 40px; line-height: 40px; padding: 0 20px; position: relative;}
ul li:hover{background: #cea;}
ul li ul li{float: none;}
ul li ul{position: absolute;top:40px;left: 0; display:none;}
ul li ul li:hover{background: red;}
</style>
</head>
<body>
<div id="nav">
<ul>
<li><a href="#">首頁</a></li>
<li onmouseover="show(this)" onmouseout="hide(this)"><a href="#">汽車</a>
<!-- 關鍵一:在二級標題從屬的一級標題標簽內設置時間執行程序,this代表的時這個li元素 -->
<ul>
<li><a href="#">奧迪</a> </li>
<li><a href="#">道奇</a> </li>
</ul>
</li>
<li onmouseover="show(this)" onmouseout="hide(this)"><a href="#">手機</a>
<ul>
<li><a href="#">小米</a> </li>
<li><a href="#">華為</a> </li>
</ul>
</li>
<li><a href="#">聯系我們</a></li>
</ul>
</div>
<script>
function show(li){
var ul=li.getElementsByTagName("ul")[0];
// 關建二:在li這個對象內查詢標簽名為ul的標簽,由於二級標簽只有一個,所以索引為0即可。
ul.style.display="block";
// 關鍵三:當鼠標划過li時,其子元素ul標簽的display為block
}
function hide(li){
var ul=li.getElementsByTagName("ul")[0];
ul.style.display="none";
// 關鍵四:當鼠標划出li時,其子元素ul的display為none
}
</script>
</body>
</html>

3.用jQuery實現二級下拉菜單

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style>
    *{margin:0;padding: 0;list-style: none;text-decoration: none;}
    #nav{width: 500px;height: 40px;background: #ccc;margin: 0 auto;}
    ul{background: #aaa}
    ul li{float:left; display:block; height: 40px; line-height: 40px; padding: 0 20px; position: relative;}
    ul li:hover{background: #cea;}
    ul li ul li{float: none;}
    ul li ul{position: absolute;top:40px;left: 0; display: none;}
    ul li ul li:hover{background: red;}
</style>
</head>
<body>
    <div id="nav">
    <ul>
        <li><a href="">首頁</a></li>
        <li class="navmenu"><a href="">汽車</a>
          <ul>
               <li><a href="#">奧迪</a> </li>
               <li><a href="#">道奇</a> </li>
         </ul>
        </li>
        <li class="navmenu"><a href="">手機</a>
          <ul>
              <li><a href="#">小米</a> </li>
              <li><a href="#">華為</a> </li>
         </ul>
        </li>
        <li><a href="">聯系我們</a></li>
   </ul>
</div>
<script src="jquery-3.1.1.js"></script>
<!-- 關鍵一:引入jQuery庫文件 -->
<script type="text/javascript">
$(function(){
   $(".navmenu").mouseover(function(){
              $(this).children("ul").show();
})

})
// 關鍵二:正確使用jQuey的語法完成行為。
$(function(){
   $(".navmenu") .mouseout(function(){
             $(this).children("ul").hide();
})

})
</script>
</body>
</html>

 顯然,使用jQuery是非常方便的。

 

最終的實現效果如下;

即當鼠標划過一級菜單時,會出現相應的二級菜單。

  如果大家希望學習關於菜單更多的知識,可以來慕課網學習。

 

  身不飢寒,天未曾負我;學無長進,我何以對天!

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM