博客列表 >Chapter3 html+css+js=导航下拉菜单

Chapter3 html+css+js=导航下拉菜单

无关
无关原创
2020年06月21日 16:15:50767浏览

设计导航下拉菜单三部曲

一、html:

1、编码:

  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>欢迎访问中国建设银行网站-个人客户-信用卡</title>
  7. </head>
  8. <body>
  9. <!-- li>a回车得到:<li><a href=""></a></li> -->
  10. <!-- ul#nav回车得到: <ul id="nav"></ul>-->
  11. <ul id="nav">
  12. <li><a href="">信用卡</a>
  13. <ul>
  14. <li>业务办理
  15. </li>
  16. <li>人气产品
  17. </li>
  18. <li>热门推荐</li>
  19. <br>
  20. <li><a href="">行用卡申请</a></li>
  21. <li><a href="">办卡进度查询</a></li>
  22. <li><a href="">龙卡热购卡 </a></li>
  23. <li><a href="">全球支付信用卡</a></li>
  24. <li><a href="">更多特惠活动</a></li>
  25. <br>
  26. <li><a href="">在线开卡 </a></li>
  27. <li><a href="">积分商城 </a></li>
  28. <li><a href="">欧洲旅行信用卡</a></li>
  29. <li><a href="">EMV信用卡</a></li>
  30. <br>
  31. <li><a href="">账单查询 </a></li>
  32. <li><a href="">分期理财 </a></li>
  33. <li><a href="">日本旅行信用卡</a></li>
  34. <li><a href="">更多</a></li>
  35. <br>
  36. <li><a href="">额度调整 </a></li>
  37. <li><a href="">在线挂失</a></li>
  38. </ul>
  39. </li>
  40. <li><a href="">投资理财</a></li>
  41. <li><a href="">存款及银行卡</a></li>
  42. <li><a href="">电子银行</a>
  43. <ul>
  44. <li>业务办理</li>
  45. <br>
  46. <li><a href="">开通网上银行</a></li>
  47. <br>
  48. <li><a href="">消息服务定制</a></li>
  49. <br>
  50. <li><a href="">开通e账户</a></li>
  51. <br>
  52. <li><a href="">云闪付销户</a></li>
  53. <br>
  54. </ul>
  55. <li><a href="">悦享生活</a></li>
  56. <li><a href="">优智规划</a></li>
  57. </ul>
  58. </body>
  59. </html>

2、效果图:

二、html+css

1、编码:

  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>欢迎访问中国建设银行网站-个人客户-信用卡</title>
  7. <style>
  8. /* 元素样式初始化 */
  9. * {
  10. margin:0;
  11. padding: 0;
  12. box-sizing: border-box;
  13. }
  14. a {
  15. /* color:rgba(255, 255, 255, 0.7) */
  16. color:#bbb;
  17. text-decoration: none;
  18. }
  19. #nav {
  20. background-color:rgb(60, 42, 230);
  21. height: 50px;
  22. line-height: 50px;
  23. }
  24. li {
  25. list-style:none;
  26. margin: 0 10px;
  27. float: left;
  28. }
  29. #nav >li>a:hover{
  30. color:red;
  31. }
  32. /* 将父级设置为子菜单的定位容器,即转为定位元素即可 */
  33. #nav>li{
  34. position: relative;
  35. }
  36. #nav>li>ul{
  37. position: absolute;
  38. top: 50px;
  39. width: 600px;
  40. border: 1px solid #aaa;
  41. border-top:none;
  42. }
  43. #nav>li>ul>li a{
  44. display: inline-block;
  45. height: 50px;
  46. color: #444;
  47. }
  48. ul.sub li:hover {
  49. background-color: #eee;
  50. }
  51. /* 初始化时不要显示子菜单 */
  52. #nav>li>ul{
  53. display: none;
  54. }
  55. </style>
  56. </head>
  57. <body>
  58. <!-- li>a回车得到:<li><a href=""></a></li> -->
  59. <!-- ul#nav回车得到: <ul id="nav"></ul>-->
  60. <ul id="nav">
  61. <li><a href="">信用卡</a>
  62. <ul>
  63. <li= >业务办理
  64. </li=>
  65. <li>人气产品
  66. </li>
  67. <li>热门推荐</li>
  68. <br>
  69. <li><a href="">行用卡申请</a></li>
  70. <li><a href="">办卡进度查询</a></li>
  71. <li><a href="">龙卡热购卡 </a></li>
  72. <li><a href="">全球支付信用卡</a></li>
  73. <li><a href="">更多特惠活动</a></li>
  74. <br>
  75. <li><a href="">在线开卡 </a></li>
  76. <li><a href="">积分商城 </a></li>
  77. <li><a href="">欧洲旅行信用卡</a></li>
  78. <li><a href="">EMV信用卡</a></li>
  79. <br>
  80. <li><a href="">账单查询 </a></li>
  81. <li><a href="">分期理财 </a></li>
  82. <li><a href="">日本旅行信用卡</a></li>
  83. <li><a href="">更多</a></li>
  84. <br>
  85. <li><a href="">额度调整 </a></li>
  86. <li><a href="">在线挂失</a></li>
  87. </ul>
  88. </li>
  89. <li><a href="">投资理财</a></li>
  90. <li><a href="">存款及银行卡</a></li>
  91. <li><a href="">电子银行</a>
  92. <ul>
  93. <li>业务办理</li>
  94. <br>
  95. <li><a href="">开通网上银行</a></li>
  96. <br>
  97. <li><a href="">消息服务定制</a></li>
  98. <br>
  99. <li><a href="">开通e账户</a></li>
  100. <br>
  101. <li><a href="">云闪付销户</a></li>
  102. <br>
  103. </ul>
  104. <li><a href="">悦享生活</a></li>
  105. <li><a href="">优智规划</a></li>
  106. </ul>
  107. </body>
  108. </html>

2、效果图:

三 、html+css+js

1、编码:

  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>欢迎访问中国建设银行网站-个人客户-信用卡</title>
  7. <style>
  8. /* 元素样式初始化: */
  9. * {
  10. margin:0;
  11. padding: 0;
  12. box-sizing: border-box;
  13. }
  14. a {
  15. /* color:rgba(255, 255, 255, 0.7) */
  16. color:#bbb;
  17. text-decoration: none;
  18. }
  19. #nav {
  20. background-color:rgb(60, 42, 230);
  21. height: 50px;
  22. line-height: 50px;
  23. }
  24. li {
  25. list-style:none;
  26. margin: 0 10px;
  27. float: left;
  28. }
  29. #nav >li>a:hover{
  30. color:red;
  31. }
  32. /* 将父级设置为子菜单的定位容器,即转为定位元素即可 */
  33. #nav>li{
  34. position: relative;
  35. }
  36. #nav>li>ul{
  37. position: absolute;
  38. top: 50px;
  39. width: 600px;
  40. border: 1px solid #aaa;
  41. border-top:none;
  42. }
  43. #nav>li>ul>li a{
  44. display: inline-block;
  45. height: 50px;
  46. color: #444;
  47. }
  48. ul.sub li:hover {
  49. background-color: #eee;
  50. }
  51. /* 初始化时不要显示子菜单 */
  52. #nav>li>ul{
  53. display: none;
  54. }
  55. </style>
  56. </head>
  57. <body>
  58. <!-- li>a回车得到:<li><a href=""></a></li> -->
  59. <!-- ul#nav回车得到: <ul id="nav"></ul>-->
  60. <ul id="nav">
  61. <li><a href="">信用卡</a>
  62. <ul>
  63. <li style="color:blue";>业务办理
  64. </li>
  65. <li style="color:blue";>人气产品
  66. </li>
  67. <li style="color:blue"; >热门推荐 </li>
  68. <br>
  69. <li><a href="">行用卡申请</a></li>
  70. <li><a href="">办卡进度查询</a></li>
  71. <li><a href="">龙卡热购卡 </a></li>
  72. <li><a href="">全球支付信用卡</a></li>
  73. <li><a href="">更多特惠活动</a></li>
  74. <br>
  75. <li><a href="">在线开卡 </a></li>
  76. <li><a href="">积分商城 </a></li>
  77. <li><a href="">欧洲旅行信用卡</a></li>
  78. <li><a href="">EMV信用卡</a></li>
  79. <br>
  80. <li><a href="">账单查询 </a></li>
  81. <li><a href="">分期理财 </a></li>
  82. <li><a href="">日本旅行信用卡</a></li>
  83. <li><a href="">更多</a></li>
  84. <br>
  85. <li><a href="">额度调整 </a></li>
  86. <li><a href="">在线挂失</a></li>
  87. </ul>
  88. </li>
  89. <li><a href="">投资理财</a></li>
  90. <li><a href="">存款及银行卡</a></li>
  91. <li><a href="">电子银行</a>
  92. <ul>
  93. <li style="color:blue";>业务办理</li>
  94. <br>
  95. <li><a href="">开通网上银行</a></li>
  96. <br>
  97. <li><a href="">消息服务定制</a></li>
  98. <br>
  99. <li><a href="">开通e账户</a></li>
  100. <br>
  101. <li><a href="">云闪付销户</a></li>
  102. <br>
  103. </ul>
  104. <li><a href="">悦享生活</a></li>
  105. <li><a href="">优智规划</a></li>
  106. </ul>
  107. </body>
  108. <script>
  109. // 获取所有的主导航
  110. const navs=document.querySelectorAll('#nav> li');
  111. navs.forEach(function(nav){
  112. // 鼠标移入时显示子菜单 nav.addEventListener('mouseover',showSubMenu);
  113. // 鼠标移出时关闭子菜 nav.addEventListener('mouseout',closeSubMenu);
  114. });
  115. // 显示子菜单
  116. function showSubMenu(ev){
  117. console.log(ev.target);
  118. // 当前导航有没有子菜单?
  119. if(ev.target.nextElementSibling !==null) {
  120. ev.target.nextElementSibling.style.display ="block";
  121. }
  122. }
  123. // 关掉子菜单
  124. function closeSubMenu(ev){
  125. if(ev.target.nodeName==="A" &&
  126. ev.target.nextElementSibling !==null) {
  127. ev.target.nextElementSibling.style.display ="none";
  128. }
  129. }
  130. // 重点:链接+无序列表+事件监听+事件代理/委托
  131. </script>
  132. </html>

2、效果图:

2.1 初始页面

2.2 鼠标移到导航菜单条时,菜单颜色变红色显。
  1. 如果该菜单有下拉菜单,则显示下拉菜单;

2.3 鼠标移到导航菜单条时,菜单颜色变红色显。
  1. 如果该菜单没有下拉菜单,则不显示。

三、重点小结

1. const navs=document.querySelectorAll(‘#nav> li’);

—获取所有的主导航

2. 子菜单

navs.forEach(function(nav){
鼠标移入时显示子菜单: nav.addEventListener(‘mouseover’,showSubMenu);
鼠标移出时关闭子菜 : nav.addEventListener(‘mouseout’,closeSubMenu);
});

函数实现功能:
  1. 显示子菜单:
  2. function showSubMenu(ev){
  3. console.log(ev.target);
  4. 当前导航有没有子菜单?
  5. if(ev.target.nextElementSibling !==null) {
  6. ev.target.nextElementSibling.style.display ="block";
  7. }
  8. }
  9. 关掉子菜单:
  10. function closeSubMenu(ev){
  11. if(ev.target.nodeName==="A" &&
  12. ev.target.nextElementSibling !==null) {
  13. ev.target.nextElementSibling.style.display ="none";
  14. }
  15. }
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议