博客列表 >编写一个专业实用的导航下拉菜单的过程

编写一个专业实用的导航下拉菜单的过程

海豚
海豚原创
2020年06月15日 19:09:34617浏览

从昨天朱老师的教导下我们首页明白要完成需要用到什么

  1. HTML 中的 ul li a这样的结构 并且里面下拉的话还在li下面创建ul
  2. CSS中样式表 需要用到 margin 颜色 等
  3. 和JavaScript中的 事件监听和代理 PS:有点难理解

个人理解

  1. 1. 首先ul+li 是个无序列表 并且还可以在里面套列表 ul
  2. 2. ol+li 是一个有序列表 1 2 3 A B
  3. 3. dt dl dd 是一个自定义列表 友联中常有用到
  4. 4. a标签可以用来跳转包含各种协议开头的跳转 herf来配合使用
  5. 4.1 还有描点等功能 并且可以在很多Html标签配合使用 如列表
  6. 5. 今天CSS讲的一下单词
  7. 5.1 position 位置; 方位; 地点; 姿势; 位置安排; 安置方式; 处境; 状况; 观点; 立场; 头寸; 额度; 持有状态; 命题; 原则; 主张
  8. 5.2 static static (静态定位):默认值。没有定位,元素出现在正常的流中
  9. 5.3 position:static; 常这样组合使用
  10. 5.4 border 边框 solid 样式 border:1px solid #000 这样使用
  11. 5.5 height 高度 width 宽度 px像素 ev 可视化窗口高度(viewport)
  12. 5.6 相对定位:元素相对于自己在文档流中的原始位置偏移
  13. 5.7 position 代表定位 relative 代表相对定位
  14. 5.8 top 高度 往下移 left 左边 往右移
  15. 5.9 相对于自己进行定位
  16. 5.10 position 代表定位 值是绝对定位 absolute
  17. 5.11 绝对定位 是相当于当前窗口定位 body 或者上一级
  18. 5.12 body默认就是所有定位的参考 relative
  19. 5.13 绝对定位一定要有参照物 上级或者父级 没有默认就是body
  20. 5.14 “盒模型”中的元素之一是margin,即盒子周围的透明区域,它会将其他元素从盒子内容中推开。
  21. 5.15 等等等还不是特别明白

htm源码

  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. <style>
  8. /* 边 盒模型 */
  9. * {
  10. margin: 0;
  11. /* 小圆点消失了 */
  12. /* padding 内边距 */
  13. padding:0;
  14. /* 规定两个并排的带边框的框: */
  15. box-sizing: border-box;
  16. }
  17. /* 设置a元素的颜色 */
  18. a{color: #bbb;
  19. /* 设置 元素的文本修饰: */
  20. text-decoration: none;}
  21. /* 设置唯一ID属性 */
  22. #nav{
  23. background-color:#000;
  24. height:50px;
  25. line-height:50px;
  26. }
  27. li{
  28. /* 把图像设置为列表中的列表项目标记 */
  29. list-style: none;
  30. /* 边 盒模型 */
  31. margin: 0 10px;
  32. /* 左浮动 */
  33. float: left;
  34. }
  35. /* 从#nav、定位进去li在定位进a标签加个鼠标效果 */
  36. #nav>li>a:hover {
  37. color: white;
  38. }
  39. /* 定位到nav的第一层li */
  40. #nav>li{
  41. /*position 代表定位 relative 代表相对定位 */
  42. position: relative;
  43. }
  44. /* 定位到nav的第一层li的里面的ul */
  45. #nav>li>ul{
  46. /*position 代表定位 absolute 代表绝对定位 */
  47. position: absolute;
  48. /* top高度 向下移 */
  49. top:50px;
  50. /* 宽度 */
  51. width:180px;
  52. /* 边框 样式 颜色 */
  53. border: 1px solid #aaa;
  54. /* 设置上边框的样式 */
  55. border-top: none;
  56. }
  57. #nav>li>ul>li a{
  58. display: inline-block;
  59. height: 50px;
  60. color: #444;
  61. }
  62. #ul.sub li:hover{
  63. background-color: #eee;
  64. }
  65. /* 初始化不要显示子菜单 */
  66. #nav>li>ul{
  67. display: none;
  68. }
  69. </style>
  70. </head>
  71. <body>
  72. <ul id="nav">
  73. <li> <a href="">首页</a></li>
  74. <li> <a href="">视频教程</a></li>
  75. <li> <a href="">资源下载</a>
  76. <ul>
  77. <li> <a href="">PHP工具</a></li>
  78. <li> <a href="">在线手册</a></li>
  79. <li> <a href="">学习课件</a></li>
  80. <li> <a href="">网站源码</a></li>
  81. </ul>
  82. <li> <a href="">社区问答</a> </li>
  83. <li> <a href="">技术文章</a>
  84. <ul>
  85. <li> <a href="">头条</a> </li>
  86. <li> <a href="">博客</a> </li>
  87. <li> <a href="">PHP教程</a> </li>
  88. <li> <a href="">PHP框架</a> </li>
  89. </ul></li></li>
  90. </body>
  91. <script>
  92. //获取所有的主导航
  93. const navs = document.querySelectorAll("#nav > li");
  94. navs.forEach(function (nav) {
  95. // 鼠标移入时,显示子菜单
  96. nav.addEventListener('mouseover',shouwSunMenu);
  97. // 鼠标移出时, 关闭子菜单
  98. nav.addEventListener('mouseout',closewSunMenu);
  99. });
  100. // 显示子菜单
  101. function shouwSunMenu(ev){
  102. console.log(ev.target);
  103. // 当前这个导航栏有没有子菜单
  104. if(ev.target.nextElementSibling !== null){
  105. ev.target.nextElementSibling.style.display = "block";
  106. }
  107. }
  108. // 关掉子菜单
  109. function closewSunMenu(ev){
  110. if(ev.target.nodeName === "A" && ev.target.nextElementSibling !== null){
  111. ev.target.nextElementSibling.style.display = "none";
  112. } }
  113. </script>
  114. </html>

总结

  1. CSS能理解 不熟练
  2. Javascript 还是有点懵 最近还是要加强
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议