JS中用三種方式實(shí)現(xiàn)導(dǎo)航菜單中的二級下拉菜單
我們在淘寶、搜狐等大型網(wǎng)站上都可以看到使用的一些二級下拉菜單,比如下面這張圖片。那么如何實(shí)現(xiàn)導(dǎo)航菜單欄中的二級下拉菜單?下面小編給大家分享實(shí)現(xiàn)思路。

但是如何實(shí)現(xiàn)類似的圖片呢?實(shí)際上,我們有至少三種方式來實(shí)現(xiàn),下面,我附上代碼供大家參考。
1.僅使用html和css
<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;}
/*關(guān)鍵一:將二級菜單設(shè)置為display:none;*/
ul li ul{position: absolute;top:40px;left: 0; display: none;}
ul li ul li:hover{background: red;}
/*關(guān)鍵二:在劃過二級菜單從屬的一級菜單時,設(shè)置為display:block;*/
ul li:hover ul{display: block;}
</style>
<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="">手機(jī)</a>
<ul>
<li><a href="#">小米</a> </li>
<li><a href="#">華為</a> </li>
</ul>
</li>
<li><a href="">聯(lián)系我們</a></li>
</ul>
</div>
我們可以看到,這種方法是比較好的,它保證了結(jié)構(gòu)與表現(xiàn)的完全分離。
2.用javasc
<!DOCTYPE htm>
<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>
<div id="nav">
<ul>
<li><a href="#">首頁</a></li>
<li onmouseover="show(this)" onmouseout="hide(this)"><a href="#">汽車</a>
<!-- 關(guān)鍵一:在二級標(biāo)題從屬的一級標(biāo)題標(biāo)簽內(nèi)設(shè)置時間執(zhí)行程序,this代表的時這個li元素 -->
<ul>
<li><a href="#">奧迪</a> </li>
<li><a href="#">道奇</a> </li>
</ul>
</li>
<li onmouseover="show(this)" onmouseout="hide(this)"><a href="#">手機(jī)</a>
<ul>
<li><a href="#">小米</a> </li>
<li><a href="#">華為</a> </li>
</ul>
</li>
<li><a href="#">聯(lián)系我們</a></li>
</ul>
</div>
script>
function show(li){
var ul=li.getElementsByTagName("ul")[0];
// 關(guān)建二:在li這個對象內(nèi)查詢標(biāo)簽名為ul的標(biāo)簽,由于二級標(biāo)簽只有一個,所以索引為0即可。
ul.style.display="block";
// 關(guān)鍵三:當(dāng)鼠標(biāo)劃過li時,其子元素ul標(biāo)簽的display為block
}
function hide(li){
var ul=li.getElementsByTagName("ul")[0];
ul.style.display="none";
// 關(guān)鍵四:當(dāng)鼠標(biāo)劃出li時,其子元素ul的display為none
}
/script>
使用javascript實(shí)現(xiàn)起來較為麻煩,且這里結(jié)構(gòu)和行為沒有分開(雖然可以試用dom在JavaScript中創(chuàng)建使得結(jié)構(gòu)和行為分開,但十分繁瑣),不推薦。
3.用jQuery實(shí)現(xiàn)
jQuery是一種javascript庫,我們可以在jQuery官網(wǎng)上下載最新版本的庫文件,其中壓縮的文件是用于產(chǎn)品的,為壓縮的文件是便于開發(fā)人員學(xué)習(xí)和調(diào)試的。下載到本機(jī)以后,需要將庫文件引用到html中,由于jQuery本質(zhì)上也是JavaScript,所以引用方式為:
<script src="路徑名稱"></script>
用jQuery實(shí)現(xiàn)二級下拉菜單的代碼如下:
<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>
<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="">手機(jī)</a>
<ul>
<li><a href="#">小米</a> </li>
<li><a href="#">華為</a> </li>
</ul>
</li>
<li><a href="">聯(lián)系我們</a></li>
</ul>
</div>
<!-- 關(guān)鍵一:引入jQuery庫文件 -->
script type="text/javascript">
$(function(){
$(".navmenu").mouseover(function(){
$(this).children("ul").show();
})
})
// 關(guān)鍵二:正確使用jQuey的語法完成行為。
$(function(){
$(".navmenu").mouseout(function(){
$(this).children("ul").hide();
})
})
/script>
顯然,使用jQuery是非常方便的。
最終的實(shí)現(xiàn)效果如下;

即當(dāng)鼠標(biāo)劃過一級菜單時,會出現(xiàn)相應(yīng)的二級菜單。
以上所述是小編給大家介紹的JS中用三種方式實(shí)現(xiàn)導(dǎo)航菜單中的二級下拉菜單,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- JavaScript 下拉菜單實(shí)現(xiàn)代碼
- css+js下拉菜單
- js動態(tài)設(shè)置select下拉菜單的默認(rèn)選中項(xiàng)實(shí)例
- 三級下拉菜單的js實(shí)現(xiàn)代碼
- 一個日期下拉菜單的js實(shí)現(xiàn)代碼
- JS實(shí)多級聯(lián)動下拉菜單類,簡單實(shí)現(xiàn)省市區(qū)聯(lián)動菜單!
- Js點(diǎn)擊彈出下拉菜單效果實(shí)例
- JavaScript實(shí)現(xiàn)下拉菜單的顯示和隱藏
- js實(shí)現(xiàn)全國省份城市級聯(lián)下拉菜單效果代碼
- javascript實(shí)現(xiàn)簡單下拉菜單效果
相關(guān)文章
webpack構(gòu)建vue項(xiàng)目的詳細(xì)教程(配置篇)
本篇文章主要介紹了webpack構(gòu)建vue項(xiàng)目的詳細(xì)教程(配置篇),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
JavaScript數(shù)組常用方法解析及數(shù)組扁平化
這篇文章主要介紹了JavaScript數(shù)組常用方法解析及數(shù)組扁平化,數(shù)組作為在開發(fā)中常用的集合,除了for循環(huán)遍歷以外,還有很多內(nèi)置對象的方法,包括map,以及數(shù)組篩選元素filter等2022-07-07
js實(shí)現(xiàn)點(diǎn)擊切換TAB標(biāo)簽實(shí)例
這篇文章主要介紹了js實(shí)現(xiàn)點(diǎn)擊切換TAB標(biāo)簽的方法,涉及javascript鼠標(biāo)點(diǎn)擊事件及頁面元素的遍歷技巧,需要的朋友可以參考下2015-08-08
基于javascript的在火狐里面強(qiáng)制換行字符
火狐也不知道為什么,自己功能上,樣式上面,都無法讓其強(qiáng)制換行,這里用JS來實(shí)現(xiàn)火狐里面強(qiáng)制換行的方法。2010-06-06
JS使用正則截取兩個字符串之間的字符串實(shí)現(xiàn)方法詳解
這篇文章主要介紹了JS使用正則截取兩個字符串之間的字符串實(shí)現(xiàn)方法,結(jié)合實(shí)例形式簡單分析了JS正則匹配與截取操作的實(shí)現(xiàn)技巧,并拓展分析了數(shù)量詞的概念與功能,需要的朋友可以參考下2017-01-01
Bootstrap實(shí)現(xiàn)登錄校驗(yàn)表單(帶驗(yàn)證碼)
本文給大家介紹使用Bootstrap新制作的一個登錄框,帶驗(yàn)證碼,帶校驗(yàn),非常不錯,具有參考借鑒價值,感興趣的朋友可以參考下2016-06-06
JS實(shí)現(xiàn)鼠標(biāo)經(jīng)過好友列表中的好友頭像時顯示資料卡的效果
需求為當(dāng)用戶鼠標(biāo)經(jīng)過好友列表中好友頭像時,顯示該好友的基本資料,其實(shí)也就是類似QQ客戶端的那種功能,下面是具體的實(shí)現(xiàn)思路及過程2014-07-07

