3種方法實現導航選單欄中的二級下拉選單
我們在淘寶、搜狐等大型網站上都可以看到使用的一些二級下拉選單,比如下面這張圖片。我們有至少三種方式來實現,附上程式碼供大家參考。
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是非常方便的。