下の写真のように、淘宝や捜狐などの大規模なウェブサイトで使用されている二次的なドロップダウン メニューがいくつか見られます。では、ナビゲーション メニュー バーに 2 番目のドロップダウン メニューを実装するにはどうすればよいでしょうか?以下の編集者が実装のアイデアを共有します。
しかし、どうすれば似たような写真を実現できるでしょうか?実際、それを実現するには少なくとも 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 を使用すると非常に便利です。
最終的な実装効果は次のとおりです。
つまり、マウスが第 1 レベルのメニュー上に移動すると、対応する第 2 レベルのメニューが表示されます。