Blogger Information
Blog 48
fans 0
comment 0
visits 34358
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
编写一个实用的导航下拉菜单!(0612)
丶久而旧之丶
Original
514 people have browsed it

最后实现的效果图


1.html代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <ul id="nav">
  10. <li title="首页"><a href="">首页</a></li>
  11. <li title="视频教程"><a href="">视频教程</a></li>
  12. <li title="入门教程"><a href="">入门教程</a></li>
  13. <li title="社区问答"><a href="">社区问答</a></li>
  14. <li title="技术文章"><a href="">技术文章</a>
  15. <ul>
  16. <li><a href="">头条</a></li>
  17. <li><a href="">PHP教程</a></li>
  18. <li><a href="">PHP小知识</a></li>
  19. <li><a href="">html教程</a></li>
  20. <li><a href="">js教程</a></li>
  21. </ul>
  22. </li>
  23. <li title="资源下载"><a href="">资源下载</a>
  24. <ul>
  25. <li><a href="">PHP工具</a></li>
  26. <li><a href="">手册下载</a></li>
  27. <li><a href="">js特效</a></li>
  28. <li><a href="">网站源码</a></li>
  29. <li><a href="">在线工具</a></li>
  30. </ul>
  31. </li>
  32. </ul>
  33. </body>
  34. </html>

2.CSS代码

  1. <style>
  2. /* 元素样式初始化 */
  3. *{
  4. margin:0;
  5. padding:0;
  6. box-sizing:border-box;
  7. }
  8. /* a标签的样式进行初始化 */
  9. a {
  10. color:#bbb;
  11. text-decoration:none;
  12. }
  13. /* 设置导航栏的背景色和宽高 */
  14. #nav{
  15. background-color:black;
  16. height:50px;
  17. line-height:50px;
  18. }
  19. /* 让列表进行靠左并列一行排序并设置间距,去除列表小黑点 */
  20. li{
  21. list-style:none;
  22. margin:0 10px;
  23. float: left;
  24. }
  25. /* 添加导航栏鼠标悬停时字体颜色 */
  26. #nav>li>a:hover{
  27. color:white;
  28. }
  29. /* li的定位类型 */
  30. #nav>li{
  31. position:relative;
  32. }
  33. /* 设置子菜单的宽高,背景色,定位类型,字体大小,边框实线 */
  34. #nav>li>ul{
  35. position:absolute;
  36. top: 50px;
  37. width: 180px;
  38. border:1px solid #aaa;
  39. boeder-top:none;
  40. background-color:blanchedalmond;
  41. font-size: 0.9rem;
  42. }
  43. /* 设置子菜单的字体,高度 */
  44. #nav>li>ul>li a{
  45. display:inine-block;
  46. height:50px;
  47. color:#444;
  48. }
  49. ul.sub li:hover{
  50. background-color:#eee;
  51. }
  52. /* 一开始子菜单不显示 */
  53. #nav>li>ul{
  54. display:none;
  55. }
  56. </style>

3.JS代码

  1. <script>
  2. const navs = document.querySelectorAll("#nav>li");
  3. navs.forEach(function(nav){
  4. // 鼠标移入时:显示子菜单
  5. nav.addEventListener("mouseover", showSubMenu);
  6. // 鼠标移出时:关闭子菜单
  7. nav.addEventListener("mouseout",closeSubMenu);
  8. });
  9. // 显示子菜单
  10. function showSubMenu(ev){
  11. // 当前这个导航有没有子菜单
  12. if(ev.target.nextElementSibling !== null){
  13. ev.target.nextElementSibling.style.display = "block";
  14. }
  15. }
  16. // 关掉子菜单
  17. function closeSubMenu(ev){
  18. if(ev.target.nodeName === "A" && ev.target.nextElementSibling !== null){
  19. ev.target.nextElementSibling.style.display = "none"
  20. }
  21. }
  22. </script>

总结

1.js部分的代码还有不太好理解的地方还需多看几次回放
2.子菜单中的文本居中和鼠标可以悬停在子菜单不知该如何解决

Correcting teacher:WJWJ

Correction status:qualified

Teacher's comments:总体看上去写的不错,刚开始多写多看就能理解和熟练运用。
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post