表单事件

  1. blur事件:失去焦点就会触发
  2. change事件:失去焦点的时候判断内容是否发生改变:如果内容改变了就触发。没有改变就不触发
  3. input事件:类似于键盘按下事件。

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>表单事件</title>
    6. </head>
    7. <body>
    8. 三种表单事件对比:<input type="text" id="ipt">
    9. </body>
    10. </html>
    11. <script>
    12. /*
    13. * blur:失去焦点就会触发
    14. * change: 失去焦点的时候判断内容是否发生改变:如果内容改变了就触发。没有改变就不触发
    15. * input: 类似于键盘按下事件。
    16. * */
    17. let ipt = document.querySelector('#ipt');
    18. ipt.addEventListener('input',function () {
    19. console.log('触发了');
    20. })
    21. </script>

    表单事件.mp4

    delete运算符

    delete:删除对象属性

    1. /*
    2. * delete运算符:删除对象属性
    3. * */
    4. let obj = {
    5. age: 30,
    6. sex: '男'
    7. }
    8. console.log(obj);
    9. delete obj.age;
    10. console.log(obj);

    delete.mp4

    函数参数扩展

  4. 同名形参问题

  5. 剩余参数

    1. /*
    2. * 函数参数问题:
    3. * 同名参数:会有参数传递的过程中,后面的值覆盖前面的值的问题。
    4. * 剩余参数 ...参数名: 使用...的方式解构出剩余参数的数据。 功能比arguments更灵活
    5. * */
    6. function testArgums(...ccc) {
    7. // arguments:参数对象 是一个伪数组
    8. // 如果参数直接给了一个剩余参数格式。那么其实跟arguments 使用的时候就一样了。
    9. console.log(ccc.length);
    10. }
    11. testArgums(10, 20, 30, 40, 50,60);

    同名参数与剩余参数.mp4

    字符串解析变量

    1. /*
    2. * 字符串:
    3. * 单引号:不能解析变量
    4. * 双引号:不能解析变量
    5. * 反引号:可以解析变量,配合${}
    6. * */
    7. let age = 30;
    8. let str1 = '马老师哪一年都说自己'+age+'岁了';
    9. console.log(str1);
    10. let str2 = "马老师说自己"+age+"岁了";
    11. console.log(str2);
    12. console.log('----------------');
    13. let str3 = `马老师的年龄是${age}岁了`;
    14. console.log(str3);

    反引号字符串解析变量.mp4

    手风琴案例

    148-手风琴特效.gif

案例分析

  1. 用5个宽度240px 的 li组成。鼠标经过时修改当前的尺寸为800px。那么剩下的4个li都变100px
  2. 当前尺寸由大变小其他尺寸由小变大(排他思想)这个过程,不是瞬发而是缓慢。考虑加CSS过渡。否则用js实现过渡效果太费劲了。
  3. 鼠标离开,所有li尺寸恢复为240px

1.jpg2.jpg3.jpg4.jpg5.jpg

  1. <!DOCTYPE html>
  2. <html>
  3. <head lang="en">
  4. <meta charset="UTF-8">
  5. <title>手风琴</title>
  6. <style>
  7. ul {
  8. list-style: none;
  9. }
  10. * {
  11. margin: 0;
  12. padding: 0;
  13. }
  14. div {
  15. width: 1200px;
  16. height: 400px;
  17. margin: 50px auto;
  18. border: 1px solid red;
  19. overflow: hidden;
  20. }
  21. div li {
  22. width: 240px;
  23. height: 400px;
  24. float: left;
  25. /* 尺寸变化特效由CSS来完成。 */
  26. transition: all 500ms;
  27. }
  28. div ul {
  29. width: 1200px;
  30. }
  31. </style>
  32. </head>
  33. <body>
  34. <div id="box">
  35. <ul>
  36. <li>
  37. <a href="#">
  38. <img src="./images/1.jpg" alt="">
  39. </a>
  40. </li>
  41. <li>
  42. <a href="#">
  43. <img src="./images/2.jpg" alt="">
  44. </a>
  45. </li>
  46. <li>
  47. <a href="#">
  48. <img src="./images/3.jpg" alt="">
  49. </a>
  50. </li>
  51. <li>
  52. <a href="#">
  53. <img src="./images/4.jpg" alt="">
  54. </a>
  55. </li>
  56. <li>
  57. <a href="#">
  58. <img src="./images/5.jpg" alt="">
  59. </a>
  60. </li>
  61. </ul>
  62. </div>
  63. </body>
  64. <script>
  65. // 获取元素
  66. let box = document.querySelectorAll('li');// lis = [li, li, li, li, li]
  67. // 分析:
  68. // 1、鼠标进入显示图片,
  69. // 鼠标进入li,让当前li变成800,其他的li变成100
  70. for (let i = 0; i < box.length; i++) {
  71. box[i].addEventListener('mouseenter', function () {
  72. for (let j = 0; j < box.length; j++) {// 事件触发执行,为了让所有li变成240宽的
  73. box[j].style.width = '100px';
  74. }
  75. this.style.width = '800px'
  76. })
  77. box[i].addEventListener('mouseleave', function () {
  78. // 让所有的li变成240
  79. for (let j = 0; j < box.length; j++) {// 事件触发执行,为了让所有li变成240宽的
  80. box[j].style.width = '240px';
  81. }
  82. })
  83. }
  84. </script>
  85. </html>

手风琴案例.mp4

02-电梯导航

149-电梯导航.gif

跑马灯文字特效

下拉列表二级联动三级联动

打地鼠小游戏

00.jpg01.jpg02.jpg
145-打地鼠游戏.gif