JS のナビゲーション メニューに 2 番目のドロップダウン メニューを実装する 3 つの方法

高洛峰
リリース: 2016-12-08 13:18:59
オリジナル
1329 人が閲覧しました

下の写真のように、淘宝や捜狐などの大規模なウェブサイトで使用されている二次的なドロップダウン メニューがいくつか見られます。では、ナビゲーション メニュー バーに 2 番目のドロップダウン メニューを実装するにはどうすればよいでしょうか?以下の編集者が実装のアイデアを共有します。

JS のナビゲーション メニューに 2 番目のドロップダウン メニューを実装する 3 つの方法


しかし、どうすれば似たような写真を実現できるでしょうか?実際、それを実現するには少なくとも 3 つの方法があります。参考のためにコードを以下に添付します。

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を使用して実装するのはさらに面倒で、ここでは構造と動作が分離されていません(構造と動作を分離するためにJavaScriptでdomを作成することもできますが、非常に面倒です)推奨されません。

3. jQuery を使用して実装します

jQuery は、jQuery 公式 Web サイトから最新バージョンのライブラリ ファイルをダウンロードできます。圧縮ファイルは開発者が学習するのに便利です。とデバッグします。マシンにダウンロードした後、ライブラリ ファイルを HTML で参照する必要があります。jQuery は本質的に JavaScript であるため、参照メソッドは次のとおりです。

jQuery を使用して 2 番目のドロップダウン メニューを実装するコードは次のとおりです。

<script src="路径名称"></script>
ログイン後にコピー

明らかに、jQuery を使用すると非常に便利です。

最終的な実装効果は次のとおりです。

JS のナビゲーション メニューに 2 番目のドロップダウン メニューを実装する 3 つの方法つまり、マウスが第 1 レベルのメニュー上に移動すると、対応する第 2 レベルのメニューが表示されます。

関連ラベル:
js
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート