Blogger Information
Blog 9
fans 0
comment 7
visits 6033
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Chapter3 html+css+js=导航下拉菜单
无关
Original
769 people have browsed it

设计导航下拉菜单三部曲

一、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. }
Correcting teacher:查无此人查无此人

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