博客列表 >6.12课程之下拉菜单

6.12课程之下拉菜单

简行
简行原创
2020年06月14日 22:13:06611浏览

目标:模仿PHP中文网头部下拉菜单,如图所示

运用技术

1.列表;
2.css
3.js的鼠标移入与移除的监听时间

代码展示

1.HTML部分:

  1. <body>
  2. <ul id="nav">
  3. <li><a href="">首页</a></li>
  4. <li><a href="">视频教程</a></li>
  5. <li>
  6. <a href="">资源下载</a>
  7. <ul>
  8. <li><a href="">PHP工具</a></li>
  9. <li><a href="">在线文章</a></li>
  10. <li><a href="">学习课件</a></li>
  11. <li><a href="">网站源码</a></li>
  12. </ul>
  13. </li>
  14. <li><a href="">社区问答</a></li>
  15. <li>
  16. <a href="">技术文章</a>
  17. <ul>
  18. <li><a href="">头条</a></li>
  19. <li><a href="">博客</a></li>
  20. <li><a href="">PHP教程</a></li>
  21. <li><a href="">PHP框架</a></li>
  22. </ul>
  23. </li>
  24. </ul>
  25. </body>

2.css部分:

  1. <style>
  2. /* 元素样式初始化: 学到盒模型再详细介绍 */
  3. * {
  4. margin: 0;
  5. padding: 0;
  6. box-sizing: border-box;
  7. }
  8. a {
  9. /* color: rgba(255, 255, 255, 0.7); */
  10. color: #bbb;
  11. text-decoration: none;
  12. }
  13. #nav {
  14. background-color: black;
  15. height: 50px;
  16. line-height: 50px;
  17. }
  18. li {
  19. list-style: none;
  20. margin: 0 10px;
  21. float: left;
  22. }
  23. #nav > li > a:hover {
  24. color: white;
  25. }
  26. /* 将父级设置为子菜单的定位容器,即转为定位元素即可 */
  27. #nav > li {
  28. position: relative;
  29. }
  30. #nav > li > ul {
  31. position: absolute;
  32. top: 50px;
  33. width: 180px;
  34. border: 1px solid #aaa;
  35. border-top: none;
  36. }
  37. #nav > li > ul > li a {
  38. display: inline-block;
  39. height: 50px;
  40. color: #444;
  41. }
  42. ul.sub li:hover {
  43. background-color: #eee;
  44. }
  45. /* 初始化时不要显示子菜单 */
  46. #nav > li > ul {
  47. display: none;
  48. }
  49. </style>

3.js部分:

  1. <script>
  2. const navs = document.querySelectorAll("#nav > li");
  3. navs.forEach(function (nav) {
  4. //鼠标移入菜单监听事件
  5. nav.addEventListener("mouseover", show);
  6. //鼠标移出菜单监听事件
  7. nav.addEventListener("mouseout", out);
  8. });
  9. //显示子菜单
  10. function show(ev) {
  11. if (ev.target.nextElementSibling !== null) {
  12. ev.target.nextElementSibling.style.display = "block";
  13. }
  14. }
  15. //关闭子菜单
  16. function out(ev) {
  17. if (ev.target.nodeName === "A" && ev.target.nextElementSibling !== null) {
  18. ev.target.nextElementSibling.style.display = "none";
  19. }
  20. }
  21. </script>

总结

1.CSS样式调整不熟悉及部分代码不清楚;
2.js的监听,冒泡运用不熟练及事件和代码的不清楚

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议