1.浏览器渲染原理
1.1浏览器的渲染过程
- 根据HTML构建HTML树
- 根据CSS构建CSS树
- 将两棵树合并成一颗渲染树
- Layout布局
- Paint绘制
- Compose合成
1.2三种更新的方式
- JS/CSS->样式->布局->绘制->合成 (全走)
- JS/CSS->样式-------->绘制->合成 (跳过layout)
- JS/CSS->样式--------------->合成 (跳过layout和paint)
2.CSS动画的两种做法
2.1transform
常用功能
- 位移translate:
- translateX
- translateY
- translate
- translateZ
使用经验: translate(-50%,-50%)可做绝对定位元素居中
- 缩放scale
- scaleX
- scaleY
- scale
- 旋转rotate
- rotate
- totateX
- totateY
- totateZ
使用经验: 一般用于360°旋转制作loading。
- 倾斜skew
- skewX
- skewY
- skew
注意: 使用这些属性时一般都配合transition来达到过度效果。
除此之外,transform还可以做多重效果,使用空格隔开。
2.2 animation
基本语法:
animation: 时长 | 过渡方式 | 延迟 | 次数 | 方向 | 填充模式 | 是否暂停 | 动画名;
时长:可以用s或者ms作为单位
过度方式:跟transition取值一样,可以填写:linear | ease | ease-in | ease-in-out,等
次数:重复的次数,可以infinite无限次
方向:reverse | alternate | alternate-reverse
填充模式:none | forwards | backwards | both
是否暂停: paused | running
以上的所有属性都有对应的单独属性
@keyframes的两种语法
- from to
- 使用百分数写法
3.transition过渡
作用:用来补充中间帧
语法:
transition: 属性名 时长 过渡方式 延迟
注意:
- 并不是所有属性都能过渡
- display:none => block没法过渡 (可以改成 visibility: hidden =>visible)
- 过渡必须要有起始,或者是中间点(使用两次tranform或者是使用animation来实现)
4.总结
CSS涉及的属性非常多,遇到不记得或者是不确定的情况,要多查MDN文档,查文档的能力对程序员来说是至关重要的能力。