아래 사진과 같이 타오바오, 소후 등 대형 웹사이트에서 사용되는 일부 보조 드롭다운 메뉴를 볼 수 있습니다. 그렇다면 탐색 메뉴 표시줄에 보조 드롭다운 메뉴를 구현하는 방법은 무엇입니까? 아래 편집자는 구현 아이디어를 귀하와 공유할 것입니다.
그런데 어떻게 비슷한 사진을 얻을 수 있을까요? 실제로 이를 달성하는 방법에는 최소한 세 가지가 있습니다. 아래에 참조용 코드를 첨부합니다.
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는 javascript 라이브러리입니다. 최신 버전의 라이브러리 파일은 jQuery 공식 웹사이트에서 다운로드할 수 있습니다. 문서는 개발자가 쉽게 배우고 디버깅할 수 있습니다. 머신에 다운로드한 후 라이브러리 파일을 html로 참조해야 합니다. jQuery는 기본적으로 JavaScript이므로 참조 방법은 다음과 같습니다.
<script src="路径名称"></script>jQuery 사용 보조 드롭다운 메뉴를 구현하는 코드는 다음과 같습니다.
확실히 jQuery를 사용하는 것은 매우 편리합니다.
<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="">手机</a> <ul> <li><a href="#">小米</a> </li> <li><a href="#">华为</a> </li> </ul> </li> <li><a href="">联系我们</a></li> </ul> </div> <!-- 关键一:引入jQuery库文件 --> script type="text/javascript"> $(function(){ $(".navmenu").mouseover(function(){ $(this).children("ul").show(); }) }) // 关键二:正确使用jQuey的语法完成行为。 $(function(){ $(".navmenu").mouseout(function(){ $(this).children("ul").hide(); }) }) /script>최종 구현 효과는 다음과 같습니다.
즉, 1차 메뉴 위로 마우스를 이동하면 해당 2차 메뉴가 실행됩니다. 나타나다.