设计模式:对通用的代码取一个名字!

为什么要有设计模式:防止代码重复!
—>重复:
—>1.代码级别的重复
—>2.页面级别

MVC:所有的页面都可以使用MVC来优化代码的结构

MVC是啥?

每一个模块都可以写成三个对象,分别是M、V、C
—> M-Model(数据模型)负责操作所有的数据
—> V-View(视图)负责所有UI页面
—> C-Controller(控制器)负责其他

执行方案:完成四个独立的模块

image.png

如何引入Jquery

  1. yarn init v1.22.4//可以用npm
  2. yarn add jquery

模块化

把内容放在一个文件中再把文件引入进来

CSS相关函数

CSS3 transition 属性

语法:

  1. transition: property duration timing-function delay;

transition: property duration timing-function delay;

描述
transition-property 规定设置过渡效果的 CSS 属性的名称。
transition-duration 规定完成过渡效果需要多少秒或毫秒。
transition-timing-function 规定速度效果的速度曲线。
transition-delay 定义过渡效果何时开始。

CSS3 transform 属性

定义和用法
transform 属性向元素应用 2D 或 3D 转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜。
为了更好地理解 transform 属性,请查看这个演示
语法

  1. transform: none|transform-functions;
描述 测试
none 定义不进行转换。 测试
matrix(n,n,n,n,n,n) 定义 2D 转换,使用六个值的矩阵。 测试
matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 定义 3D 转换,使用 16 个值的 4x4 矩阵。
translate(x,y) 定义 2D 转换。 测试
translate3d(x,y,z) 定义 3D 转换。
translateX(x) 定义转换,只是用 X 轴的值。 测试
translateY(y) 定义转换,只是用 Y 轴的值。 测试
translateZ(z) 定义 3D 转换,只是用 Z 轴的值。
scale(x,y) 定义 2D 缩放转换。 测试
scale3d(x,y,z) 定义 3D 缩放转换。
scaleX(x) 通过设置 X 轴的值来定义缩放转换。 测试
scaleY(y) 通过设置 Y 轴的值来定义缩放转换。 测试
scaleZ(z) 通过设置 Z 轴的值来定义 3D 缩放转换。
rotate(angle) 定义 2D 旋转,在参数中规定角度。 测试
rotate3d(x,y,z,angle) 定义 3D 旋转。
rotateX(angle) 定义沿着 X 轴的 3D 旋转。 测试
rotateY(angle) 定义沿着 Y 轴的 3D 旋转。 测试
rotateZ(angle) 定义沿着 Z 轴的 3D 旋转。 测试
skew(x-angle,y-angle) 定义沿着 X 和 Y 轴的 2D 倾斜转换。 测试
skewX(angle) 定义沿着 X 轴的 2D 倾斜转换。 测试
skewY(angle) 定义沿着 Y 轴的 2D 倾斜转换。 测试
perspective(n) 为 3D 转换元素定义透视视图。 测试

CSS3 @keyframes 规则

js 相关函数

currentTarget:

定义和用法:
currentTarget 事件属性返回其监听器触发事件的节点,即当前处理该事件的元素、文档或窗口。
在捕获和起泡阶段,该属性是非常有用的,因为在这两个节点,它不同于 target 属性.

  1. $tabBar.on('click','li',(e)=>{
  2. const $li = $(e.currentTarget)
  3. const index = $li.index()
  4. console.log(index)
  5. })//事件委托,监听父元素

jQuery DOM 元素方法 - index() 方法

定义和用法:
index() 方法返回指定元素相对于其他指定元素的 index 位置。
这些元素可通过 jQuery 选择器或 DOM 元素来指定。
注释:如果未找到元素,index() 将返回 -1。

  1. const index = $li.index()

jQuery :eq() 选择器

定义和用法
:eq() 选择器选取带有指定 index 值的元素。
index 值从 0 开始,所有第一个元素的 index 值是 0(不是 1)。
经常与其他元素/选择器一起使用,来选择指定的组中特定序号的元素(如上面的例子)。

  1. $tabBar.children().eq(0).trigger('click')

jQuery :trigger()

定义和用法

trigger() 方法触发被选元素的指定事件类型。

  1. $tabBar.children().eq(0).trigger('click')

jQuery :toggleClass(‘active’)

定义:来回点击

  1. $square.on('click',()=>{
  2. $square.toggleClass('active')
  3. })

样式与行为分离:css只管样式! js只管行为!

js代码:

  1. $tabContent.children()
  2. .eq(index).addClass('active')
  3. .siblings().removeClass('active')

css代码:

  1. /*样式与行为分离*/
  2. #app2 .tab-content > li.active{
  3. display: block;
  4. }

我的错误认为:添加active是在标签后面加一个class=”active”的属性
增加一个节点应该为:

  1. let div1 = document.createElement('div')

问题

1.多余的17px是哪里来的?
答:滚动条!
image.png