博客列表 >链接与列表知识及导航小示例

链接与列表知识及导航小示例

贝塔
贝塔原创
2020年06月22日 20:27:05626浏览

链接

  1. a标签的打开方式,用target属性定义
    • 默认。在相同的框架中打开被链接文档。
      1. <a href="www.php.cn" target="_self"></a>
    • 在新窗口中打开被链接文档。
      1. <a href="www.php.cn" target="_blank"></a>
    • 在父框架集中打开被链接文档。
      1. <a href="www.php.cn" target="_parent"></a>
    • 在整个窗口中打开被链接文档。
      1. <a href="www.php.cn" target="_top"></a>
  2. 使用a标签进行文件下载:当href中的地址指向一个文件时
    可以用download属性定义文件名称
    1. <a href="a.png" download="img下载.png"></a>
  3. 使用a标签进行拨打电话:在href中使用tel:电话号格式
    1. <a href="tel:18345678901">18345678901</a>
  4. 使用a标签进行调整到邮箱:在href中使用tomail:邮箱格式
    1. <a href="tomail:demo@163.com">demo@163.com</a>
  5. 用a标签与id设置锚点
    1. <a href="#bottom">到达底部</a>
    2. <p>文本</p>
    3. .......
    4. <p id="bottom">底部</p>

列表

  1. 无序列表:ul+li
    1. <ul>
    2. <li>首页</li>
    3. <li>php工具</li>
    4. <li>视频课程</li>
    5. </ul>
  2. 有序列表:ol+li
    1. <ol>
    2. <li>html/css</li>
    3. <li>javascript</li>
    4. <li>php</li>
    5. </ol>
  3. 自定义列表:dl+dt+dd
    1. <dl>
    2. <dt>前端</dt>
    3. <dd>html</dd>
    4. <dd>css</dd>
    5. <dd>js</dd>
    6. <dt>服务端</dt>
    7. <dd>php</dd>
    8. <dd>java</dd>
    9. <dd>c</dd>
    10. <dt>数据库</dt>
    11. <dd>memcacheed</dd>
    12. <dd>redis</dd>
    13. <dd>mysql</dd>
    14. </dl>

定位

  1. 默认:static,静态定位/文档流定位
    元素未设置position属性时,默认是以文档流的顺序进行排列
    文档流:按照书写顺序
  2. 相对定位
    元素相对于自己在文档流中原始位置相对偏移
    1. p{
    2. position:relative;
    3. top:50 px;
    4. left:30px;
    5. }
  3. 绝对定位
    元素找到距离最近的具有定位属性的父级元素相对偏移。如果父级中都没有定位属性,则相对于body偏移
    1. p{
    2. position:absolute;
    3. top:50 px;
    4. left:30px;
    5. }

事件监听与事件代理

  1. 事件属性
    1. <button onclick="console.log(this.innerText)">按钮</button>
  2. 对象属性
    1. <button>按钮</button>
    2. <script>
    3. document.querySelectorAll('button')[0].onclick=function(){
    4. console.log(this.innerText);
    5. }
    6. </script>
    注:当用对象属性方式对同一个元素绑定了对个相同事件时,只有最后的事件有效
  3. 事件监听器
    1. <button>按钮</button>
    2. <script>
    3. const btn=document.querySelectorAll('button')[0];
    4. btn.addEventListener('click',function(){
    5. console.log('第一次点击');
    6. })
    7. btn.addEventListener('click',function(){
    8. console.log('第二次点击');
    9. })
    10. </script>
    注:两次事件都会触发
  4. 事件的触发阶断
    冒泡:从内层到外层(默认值)
    1. <div>
    2. <li><a href="">点击</a></li>
    3. </div>
    4. <script>
    5. const a = document.querySelector("a");
    6. const li = document.querySelector("li");
    7. const div = document.querySelector("div");
    8. const body = document.body;
    9. a.addEventListener("click", showTagName);
    10. li.addEventListener("click", showTagName);
    11. div.addEventListener("click", showTagName);
    12. body.addEventListener("click", showTagName);
    13. function showTagName() {
    14. alert(this.tagName);
    15. }
    16. </script>
    捕获:由外向内触发
    1. <div>
    2. <li><a href="">点击</a></li>
    3. </div>
    4. <script>
    5. const a = document.querySelector("a");
    6. const li = document.querySelector("li");
    7. const div = document.querySelector("div");
    8. const body = document.body;
    9. a.addEventListener("click", showTagName, true);
    10. li.addEventListener("click", showTagName, true);
    11. div.addEventListener("click", showTagName, true);
    12. body.addEventListener("click", showTagName, true);
    13. function showTagName() {
    14. alert(this.tagName);
    15. }
    16. </script>
    阻止事件冒泡与捕获
    非IE浏览器
    1. e.stopPropagation();
    IE浏览器
    1. e.cancleBubble=true
  5. 事件代理
    用父级元素代理所有子元素及更下级元素上的同名事件
    1. <ul>
    2. <li>item1</li>
    3. <li>item2</li>
    4. <li>item3</li>
    5. <li>item4</li>
    6. <li>item5</li>
    7. </ul>
    8. <script>
    9. document.querySelector("ul").addEventListener("click", function (ev) {
    10. console.log(ev.target); //事件触发者
    11. console.log(ev.currentTarget); //事件绑定者
    12. });
    13. </script>

导肮小示例

  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>Document</title>
  7. <style>
  8. * {
  9. margin: 0;
  10. padding: 0;
  11. box-sizing: border-box;
  12. }
  13. a {
  14. color: #bbb;
  15. text-decoration: none;
  16. }
  17. #nav {
  18. background-color: black;
  19. height: 50px;
  20. line-height: 50px;
  21. }
  22. li {
  23. list-style: none;
  24. margin: 0 10px;
  25. float: left;
  26. }
  27. #nav > li > a:hover {
  28. color: white;
  29. }
  30. #nav > li {
  31. position: relative;
  32. }
  33. #nav > li > ul {
  34. position: absolute;
  35. top: 50px;
  36. width: 180px;
  37. border: 1px solid #aaa;
  38. border-top: none;
  39. }
  40. #nav > li > ul > li a {
  41. display: inline-block;
  42. height: 50px;
  43. color: #444;
  44. }
  45. ul.sub li:hover {
  46. background-color: #eee;
  47. }
  48. #nav > li > ul {
  49. /* display: none; */
  50. }
  51. </style>
  52. </head>
  53. <body>
  54. <ul id="nav">
  55. <li><a href="">首页</a></li>
  56. <li><a href="">视频教程</a></li>
  57. <li><a href="">入门教程</a></li>
  58. <li><a href="">社区问答</a></li>
  59. <li>
  60. <a href="">技术文章</a>
  61. <ul>
  62. <li><a href="">PHP教程</a></li>
  63. <li><a href="">PHP框架</a></li>
  64. <li><a href="">html教程</a></li>
  65. <li><a href="">css教程</a></li>
  66. <li><a href="">js教程</a></li>
  67. <li><a href="">mysql教程</a></li>
  68. </ul>
  69. </li>
  70. <li>
  71. <a href="">资源下载</a>
  72. <ul>
  73. <li><a href="">PHP工具</a></li>
  74. <li><a href="">在线工具</a></li>
  75. <li><a href="">手册下载</a></li>
  76. <li><a href="">学习课件</a></li>
  77. </ul>
  78. </li>
  79. <li><a href="">PHP培训</a></li>
  80. </ul>
  81. </body>
  82. <script>
  83. const navs = document.querySelectorAll("#nav > li");
  84. navs.forEach(function (nav) {
  85. nav.addEventListener("mousemove", showSubMenu);
  86. nav.addEventListener("mouseout", closeSubMenu);
  87. });
  88. function showSubMenu(ev) {
  89. if (ev.target.nextElementSibling !== null) {
  90. ev.target.nextElementSibling.style.display = "block";
  91. }
  92. }
  93. function closeSubMenu(ev) {
  94. if (ev.target.nodeName === "A" && ev.target.nextElementSibling !== null) {
  95. ev.target.nextElementSibling.style.display = "none";
  96. }
  97. }
  98. </script>
  99. </html>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议