首頁  >  文章  >  web前端  >  JS中以三種方式實現導覽選單中的二級下拉式選單

JS中以三種方式實現導覽選單中的二級下拉式選單

高洛峰
高洛峰原創
2016-12-08 13:18:591326瀏覽

我們在淘寶、搜狐等大型網站上都可以看到使用的一些二級下拉選單,例如下面這張圖片。那麼如何實現導覽功能表列中的二級下拉選單呢?下面小編給大家分享實作想法。

JS中以三種方式實現導覽選單中的二級下拉式選單


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

只使用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;}
/*关键一:将二级菜单设置为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>
<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>

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

2.用javasc

<!DOCTYPE htm>
<html>
<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>
<!-- 关键一:在二级标题从属的一级标题标签内设置时间执行程序,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>

使用javascript實現起來較為麻煩,且這裡結構和行為沒有分開(雖然可以試用dom在JavaScript中創建使得結構和行為分開,但十分繁瑣),不推薦。

3.用jQuery實作

  jQuery是一種javascript庫,我們可以在jQuery官網上下載最新版本的庫文件,其中壓縮的文件是用於產品的,為壓縮的文件是便於開發人員學習和調試的。下載到本機以後,需要將庫檔案引用到html中,由於jQuery本質上也是JavaScript,所以引用方式為:   

<script src="路径名称"></script>

   

用jQuery實現二級下拉選單的程式碼使用jQuery是非常方便的。

最終的實現效果如下;

JS中以三種方式實現導覽選單中的二級下拉式選單即當滑鼠劃過一級選單時,會出現對應的二級選單。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn