博主信息
博文 26
粉丝 2
评论 0
访问量 30893
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
简单的下拉菜单实现
leverWang
原创
869人浏览过

效果

文档结构

  1. <div class="nav">
  2. <ul>
  3. <li class="first"><a href="">菜单1</a></li>
  4. <li><a href="">菜单2</a></li>
  5. <li>
  6. <a href="">菜单3</a>
  7. <ul class="subMenu">
  8. <li><a href="">子菜单</a></li>
  9. <li><a href="">子菜单</a></li>
  10. <li><a href="">子菜单</a></li>
  11. <li><a href="">子菜单</a></li>
  12. <li><a href="">子菜单</a></li>
  13. <li><a href="">子菜单</a></li>
  14. </ul>
  15. </li>
  16. <li><a href="">菜单4</a></li>
  17. <li>
  18. <a href="">菜单5</a>
  19. <ul class="subMenu">
  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. <li><a href="">子菜单</a></li>
  26. <li><a href="">子菜单</a></li>
  27. <li><a href="">子菜单</a></li>
  28. </ul>
  29. </li>
  30. </ul>
  31. </div>

js代码

  1. <script>
  2. //获取导航菜单
  3. const navs = document.querySelectorAll(".nav>ul>li");
  4. //获取子菜单
  5. const subs = document.querySelectorAll(".subMenu");
  6. // 为导航菜单添加监听事件
  7. navs.forEach(function (li) {
  8. li.addEventListener("mouseover", showSubMenu);
  9. li.addEventListener("mouseout", closeSubMenu);
  10. });
  11. // 为子菜单添加监听事件,解决主导航切换到子菜单,子菜单消失问题
  12. subs.forEach(function (ul) {
  13. ul.addEventListener("mouseover", function (e) {
  14. this.style.display = "block";
  15. });
  16. ul.addEventListener("mouseout", function (e) {
  17. this.style.display = "none";
  18. });
  19. });
  20. function showSubMenu(e) {
  21. // 判断当前导航是否有子菜单
  22. if (e.target.nextElementSibling != null) {
  23. e.target.nextElementSibling.style.display = "block";
  24. }
  25. }
  26. function closeSubMenu(e) {
  27. // console.log(e.target);
  28. // 判断当前导航是否有子菜单并且当前触发事件的为菜单标签
  29. if (e.target.nextElementSibling != null && e.target.nodeName == "A") {
  30. e.target.nextElementSibling.style.display = "none";
  31. }
  32. }
  33. </script>

样式表

  1. <style>
  2. * {
  3. padding: 0;
  4. margin: 0;
  5. }
  6. a {
  7. text-decoration: none;
  8. }
  9. li {
  10. list-style: none;
  11. }
  12. .nav > ul > li {
  13. float: left;
  14. height: 60px;
  15. line-height: 60px;
  16. color: #fff;
  17. position: relative;
  18. }
  19. .nav > ul > li > a {
  20. color: #fff;
  21. padding: 0 30px;
  22. height: 56px;
  23. display: inline-block;
  24. }
  25. .nav > ul > li > a:hover {
  26. border-bottom: 4px solid rgb(13, 151, 0);
  27. }
  28. .subMenu {
  29. display: none;
  30. color: #333;
  31. position: absolute;
  32. width: 200px;
  33. border: 1px solid #ddd;
  34. text-align: center;
  35. top: 60px;
  36. left: -50px;
  37. background: #f4f4f4;
  38. }
  39. .subMenu li {
  40. float: left;
  41. }
  42. .subMenu a {
  43. float: left;
  44. padding: 0 20px;
  45. width: 60px;
  46. color: #333;
  47. }
  48. .subMenu a:hover {
  49. background: #ddd;
  50. }
  51. .nav {
  52. height: 60px;
  53. background: #000;
  54. width: 100%;
  55. padding-left: 150px;
  56. }
  57. .first {
  58. background: #333;
  59. }
  60. </style>
批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:目前 , 还没有发现有人自己写出不一样的js, 基本上都是照搬老师的, 说明大家还不够自信, 加油
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学