HTML/CSS方法和JavaScript方法实现下拉菜单

以你之姓@ 2022-07-15 00:54 313阅读 0赞

最近在做一个简单的网页,模仿我们学校的官网页面。上次做的那个企业网站已经实现了这个网页的大部分模块,主要的技术难点是导航菜单的二级下拉菜单。我在慕课网上找到了一个课程,名字叫 形形色色的下拉菜单。里面有用CSS,JavaScript和JQuery实现各种下拉菜单的课程。目前为止,我还只学习了HTML,CSS,JavaScript的基础知识,所以我只用了两种最基本的方法实现二级菜单。

一.HTML/CSS方法实现下拉菜单

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>无标题文档</title>
  6. <style type="text/css">
  7. *{ margin:0px; padding:0px;}
  8. #menu{ background-color:#eee; width:600px; height:40px; margin:0 auto;}
  9. ul{ list-style:none;}
  10. ul li{ line-height:40px; text-align:center; position:relative;float:left}
  11. a{ text-decoration:none; color:#000; display:block; width:90px;}
  12. a:hover{ color:#FFF; background-color:#666;}
  13. ul li ul li{ float:none;margin-top:2px; background-color:#eee; }
  14. ul li ul{width:90px; position:absolute; display:none;}
  15. ul li:hover ul{display:block;
  16. }
  17. </style>
  18. </head>
  19. <body>
  20. <div id="menu">
  21. <ul>
  22. <li><a href="#">首页</a></li>
  23. <li><a href="#">课程大厅</a>
  24. <ul>
  25. <li>JavaScript</li>
  26. <li>JQuery</li>
  27. </ul>
  28. </li>
  29. <li><a href="#">学习中心</a>
  30. <ul>
  31. <li><a href="#">视频学习</a></li>
  32. <li><a href="#">案例学习</a></li>
  33. <li><a href="#">交流平台</a></li>
  34. </ul>
  35. </li>
  36. <li><a href="#">经典案例</a></li>
  37. <li><a href="#">关于我们</a></li>
  38. </ul>
  39. </div>
  40. </body>
  41. </html>

二. JS方法实现下拉菜单显示和隐藏

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>无标题文档</title>
  6. <style type="text/css">
  7. *{ margin:0px; padding:0px;}
  8. body{ font-family:Verdana, Geneva, sans-serif; font-size:14px;}
  9. #nav{ width:600px; height:40px; background-color:#eee; margin:0 auto;}
  10. ul{ list-style:none;}
  11. ul li{ float:left; line-height:40px; text-align:center; width:100px;}
  12. a{ text-decoration:none; color:#000; display:block;}
  13. a:hover{ color:#F00; background-color:#666;}
  14. ul li ul li{ float:none;background-color:#eee; margin:2px 0px;}
  15. ul li ul{ display:none; }
  16. </style>
  17. <script type="text/javascript">
  18. function ShowSub(li) {
  19. var subMenu = li.getElementsByTagName("ul")[0] ;
  20. subMenu.style.display = "block";
  21. }
  22. function HideSub(li) {
  23. var subMenu = li.getElementsByTagName("ul")[0];
  24. subMenu.style.display = "none";
  25. }
  26. </script>
  27. </head>
  28. <body>
  29. <div id="nav">
  30. <ul>
  31. <li><a href="#">首页</a></li>
  32. <li οnmοuseοver="ShowSub(this)"><a href="#">课程大厅</a>
  33. <ul>
  34. <li><a href="#">JavaScript</a></li>
  35. <li><a href="#">Html/CSS</a></li>
  36. </ul>
  37. </li>
  38. <li οnmοuseοver="HideSub(this)" ><a href="#">学习中心</a>
  39. <ul>
  40. <li><a href="#">视频学习</a></li>
  41. <li><a href="#">实例练习</a></li>
  42. <li><a href="#">问与答</a></li>
  43. </ul>
  44. </li>
  45. <li><a href="#">经典案例</a></li>
  46. <li><a href="#">关于我们</a></li>
  47. </ul>
  48. </div>
  49. </body>
  50. </html>

做出来的效果如下:

SouthEast

三.存在的问题

1.案例中的列表宽度都是固定的,要让一级列表块宽度自适应,可以使用padding来解决。

2.二级列表目前我只会使用固定宽度,字数一多就会自动换行,特别难看,padding好像解决不了这个问题。在网上搜索了很多,暂时没有发现解决办法。如果谁有什么好办法,请告诉我。

发表评论

表情:
评论列表 (有 0 条评论,313人围观)

还没有评论,来说两句吧...

相关阅读