博客列表 >实战案例仿:PHP中文网导航栏

实战案例仿:PHP中文网导航栏

Dong.
Dong.原创
2020年06月16日 14:57:531728浏览

仿PHP中文网导航栏

  • 布局思路
    布局思路

  • 最终效果展示
    效果展示


导航栏实战制作演示

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. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>下拉菜单</title>
  8. </head>
  9. <body>
  10. <ul id="div">
  11. <li>
  12. <h1>php中文网</h1>
  13. </li>
  14. <li><a herf="">首页</a></li>
  15. <li><a herf="">视频教程</a></li>
  16. <li><a herf="">入门教程</a></li>
  17. <li><a herf="">社区问答</a></li>
  18. <li>
  19. <a herf="">技术文章</a>
  20. <ul>
  21. <li><a herf="">头条</a></li>
  22. <li><a herf="">博客</a></li>
  23. <li><a herf="">PHP教程</a></li>
  24. <li><a herf="">PHP框架</a></li>
  25. <li><a herf="">PHP小知识</a></li>
  26. <li><a herf="">MySQL教程</a></li>
  27. <li><a herf="">HTML教程</a></li>
  28. <li><a herf="">css教程</a></li>
  29. <li><a herf="">js教程</a></li>
  30. <li><a herf="">服务器运维</a></li>
  31. </ul>
  32. </li>
  33. <li>
  34. <a herf="">资源下载</a>
  35. <ul>
  36. <li><a herf="">PHP工具</a></li>
  37. <li><a herf="">在线工具</a></li>
  38. <li><a herf="">手册下载</a></li>
  39. <li><a herf="">学习课件</a></li>
  40. <li><a herf="">js特效</a></li>
  41. <li><a herf="">后台模板</a></li>
  42. <li><a herf="">网站源码</a></li>
  43. <li><a herf="">类库下载</a></li>
  44. </ul>
  45. </li>
  46. <li>
  47. <a herf="">编程词典</a>
  48. <ul>
  49. <li><a herf="">PHP词典</a></li>
  50. <li><a herf="">原生词典</a></li>
  51. <li><a herf="">MySQL词典</a></li>
  52. <li><a herf="">Linux词典</a></li>
  53. <li><a herf="">Redis词典</a></li>
  54. <li><a herf="">Bootstrap词典</a></li>
  55. <li><a herf="">HTML词典</a></li>
  56. <li><a herf="">css词典</a></li>
  57. <li><a herf="">javascript词典</a></li>
  58. <li><a herf="">jpuery词典</a></li>
  59. </ul>
  60. </li>
  61. <li><a herf="">工具下载</a></li>
  62. <li><a herf="">PHP培训</a></li>
  63. <li><a herf="">联系我们</a></li>
  64. <li>
  65. <input type="search" placeholder="请输入关键词" />
  66. </li>
  67. </ul>
  68. </body>
  69. </html>

运行样式:
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. #div {
  15. background-color: black;
  16. height: 60px;
  17. line-height: 60px;
  18. }
  19. /*去掉列表标记,设置各列表水平间距并使齐浮动起来*/
  20. li {
  21. list-style: none;
  22. margin: 0 10px;
  23. float: left;
  24. }
  25. #div > li > a:hover{
  26. color: white;
  27. }
  28. #div > li{
  29. position: relative;
  30. }
  31. #div >li > ul{
  32. position: absolute;
  33. top:50px;
  34. width: 180px;
  35. border: 1px solid #aaaaaa;
  36. border-top:none;
  37. }
  38. #div >li > ul > li a {
  39. display: inline-block;
  40. height: 50px;
  41. color: #aaaaaa;
  42. }
  43. #ul.sub li.hover{
  44. background-color: #eee;
  45. }
  46. /* 初始化时不要显示下拉菜单 */
  47. #div > li > ul {
  48. display: none;
  49. }
  50. </style>

运行样式:
CSS样式

3.js格式

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

运行样式:
js样式
js样式

总结:

  • 列表下拉菜单非常实用
  • css代码定位还不太熟悉
  • js代码看着有点蒙
  • 纠错能力太弱,一有报错不知如何纠正错误
  • 代码记得不够熟练,导致容易打错字母
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议