博客列表 >下拉菜单及相关基础知识点汇总

下拉菜单及相关基础知识点汇总

amin
amin原创
2020年06月13日 17:36:51718浏览

下拉菜单

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport"
  6. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  7. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8. <title>下拉菜单</title>
  9. <style>
  10. * {
  11. margin: 0;
  12. padding: 0;
  13. box-sizing: border-box;
  14. }
  15. a {
  16. color: #fff;
  17. text-decoration: none;
  18. }
  19. .clearfix{
  20. zoom:1;
  21. }
  22. .clearfix:after{
  23. content: '';
  24. clear: both;
  25. width: 0;
  26. height: 0;
  27. visibility: hidden;
  28. display: block;
  29. }
  30. li{
  31. list-style: none;
  32. }
  33. nav{
  34. background: #000000;
  35. }
  36. nav>ul>li{
  37. float: left;
  38. width: 200px;
  39. padding: 10px 0;
  40. text-align: center;
  41. }
  42. nav>ul>li{
  43. position: relative;
  44. }
  45. nav>ul>li>ul{
  46. display: none;
  47. position: absolute;
  48. /*z-index: -1;*/
  49. background: #f1f1f1;
  50. top: 40px;
  51. width: 100%;
  52. }
  53. nav>ul>li>ul>li{
  54. padding: 5px 10px;
  55. text-align: center;
  56. }
  57. nav>ul>li>ul a{
  58. color:#000;
  59. }
  60. </style>
  61. </head>
  62. <body>
  63. <nav class="clearfix">
  64. <ul>
  65. <li>
  66. <a href="">一级菜单1</a>
  67. <ul>
  68. <li><a href="">二级菜单1</a></li>
  69. <li><a href="">二级菜单1</a></li>
  70. <li><a href="">二级菜单1</a></li>
  71. <li><a href="">二级菜单1</a></li>
  72. </ul>
  73. </li>
  74. <li>
  75. <a href="">一级菜单2</a>
  76. <ul>
  77. <li><a href="">二级菜单2</a></li>
  78. <li><a href="">二级菜单2</a></li>
  79. <li><a href="">二级菜单2</a></li>
  80. <li><a href="">二级菜单2</a></li>
  81. </ul>
  82. </li>
  83. <li>
  84. <a href="">一级菜单3</a>
  85. </li>
  86. <li>
  87. <a href="">一级菜单4</a>
  88. <ul>
  89. <li><a href="">二级菜单4</a></li>
  90. <li><a href="">二级菜单4</a></li>
  91. <li><a href="">二级菜单4</a></li>
  92. <li><a href="">二级菜单4</a></li>
  93. </ul>
  94. </li>
  95. </ul>
  96. </nav>
  97. <script>
  98. const navs = document.querySelectorAll("nav>ul>li");
  99. // console.log(navs);
  100. //forEach() 用于调用数组的每个元素并传递给函数
  101. navs.forEach(function (nav) {
  102. nav.addEventListener("mouseover", showMenu);
  103. nav.addEventListener("mouseout", hideMenu);
  104. });
  105. //显示二级菜单
  106. function showMenu(ev){
  107. if( ev.target.nodeName === "A" && ev.target.nextElementSibling !== null){
  108. ev.target.nextElementSibling.style.display = "block";
  109. }
  110. }
  111. //关闭二级菜单
  112. function hideMenu(ev) {
  113. if( ev.target.nodeName === "A" && ev.target.nextElementSibling !== null){
  114. ev.target.nextElementSibling.style.display = "none";
  115. }
  116. // console.log(ev.children)
  117. // if(ev.target.children.length > 1) {
  118. // console.log(ev.target);
  119. // ev.target.children[1].style.display = "none";
  120. // }
  121. }
  122. </script>
  123. </body>
  124. </html>

引入外联样式的三种方法

  1. 1、<style>直接写入样式</style>
  2. 2、<link rel="stylesheet" href="style.css">
  3. 3
  4. <style>
  5. @import url("style.css");
  6. @import "style.css";
  7. </style>

元素a的几种主要用法

  1. <!--打开一个网页-->
  2. <a href="https://www.baidu.com/">百度</a>
  3. <!--下载文件-->
  4. <a href="XXX.zip">下载该文档</a>
  5. <!--发邮件-->
  6. <a href="mailto: 111111@qq.com">点我发邮件</a>
  7. <!--打电话-->
  8. <a href="tel: 18055553333">18055553333</a>
  9. <!--锚点-->
  10. <div id="top">111</div>
  11. <a href="#top">置顶</a>

a标签的几种常用属性

  1. _blank :在新窗口中打开被链接文档。
  2. _self :默认。在相同的框架中打开被链接文档。
  3. _parent :在父框架集中打开被链接文档。
  4. _top :在整个窗口中打开被链接文档。
  5. framename :在指定的框架中打开被链接文档。

元素的定位

  1. position:元素默认在页面中按文档流的顺序进行排列
  2. static 默认值。没有定位,元素出现在正常的流中。
  3. absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。
  4. fixed 生成绝对定位的元素,相对于浏览器窗口进行定位。
  5. relative 生成相对定位的元素,相对于其正常位置进行定位。
  6. inherit 规定应该从父元素继承 position 属性的值。

事件监听器(监听函数)

  1. <button>按钮1</button>
  2. <button>按钮2</button>
  3. <button class="button">按钮3</button>
  4. <script>
  5. //获取满足条件的所有元素 document.querySelectorAll("tag") document.querySelectorAll(".class") document.querySelectorAll("#id")
  6. const btn = document.querySelectorAll('button');
  7. console.log(btn);//NodeList(2) [button, button]
  8. //获取满足调价的第一个元素
  9. const btn1 = document.querySelector('button');
  10. console.log(btn1);//<button>按钮1</button>
  11. //addEventListener(事件类型,事件方法); event:事件 listener:监听(倾听者)
  12. //可以给一个元素多次添加同一个事件,并控制事件触发的阶段
  13. const btn2 = document.querySelector(".button");
  14. btn2.addEventListener("click", function(e){
  15. console.log(e.target);
  16. });
  17. btn2.addEventListener("click", function(e){
  18. console.log("111");
  19. })
  20. </script>

事件冒泡、事件捕获

  1. 冒泡:由内层向外层层层触发,false可省略
  2. e.addEventListener("click", fun, false);
  3. 捕获;由外层向内层层层触发
  4. e.addEventListener("click", fun, true);

事件委托

  1. <ul class="weituo">
  2. <li>item1</li>
  3. <li>item2</li>
  4. <li>item3</li>
  5. <li>item4</li>
  6. <li>item5</li>
  7. <li>item6</li>
  8. </ul>
  9. <script>
  10. // 事件代理: 用父级代理所有子元素以及更下一级的元素上的同名事件
  11. document.querySelector(".weituo").addEventListener("click", function(ev){
  12. console.log(ev.target);//<li>... 返回的是当前正在触发事件的元素
  13. console.log(ev.currentTarget);//<ul>... 返回的是事件绑定者
  14. })
  15. </script>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议