CSS动画
动画的原理
浏览器的渲染过程
- 根据HTML构建HTML树 (DOM)
- 根据CSS构建CSS树(CSSOM)
- 将两棵树合并成一颗渲染树 (render tree)
- Layout布局 (文档流、盒模型、计算大小和位置)
- Paint绘制(把边框颜色、文字颜色、阴影等画出来)
- Compose合成(根据层叠关系展示画面)
- JS/CSS>样式>布局>绘制>合成
文章图片
备注:布局可以简单理解为位置和大小,如果CSS中有对布局相关的内容进行改动,那么浏览器渲染时,会重新走布局>绘制>合成的路线
官方回答:如果您修改元素的“layout”属性,也就是改变了元素的几何属性(例如宽度、高度、左侧或顶部位置等),那么浏览器将必须检查所有其他元素,然后“自动重排”页面。任何受影响的部分都需要重新绘制,而且最终绘制的元素需进行合成。 - JS/CSS>样式>绘制>合成
文章图片
备注:这个可以理解为在对CSS进行相关改动时,如果没有对位置和大小进行到改动,则浏览器进行渲染时会跳过布局这个流程,加入你只修改了背景颜色,那么渲染时就走绘制>合成的路线
官方回答:如果您修改“paint only”属性(例如背景图片、文字颜色或阴影等),即不会影响页面布局的属性,则浏览器会跳过布局,但仍将执行绘制。 - JS/CSS>样式>合成
文章图片
- JS优化
使用requestAnimationFrame代替setTimeout或setInterval - CSS优化
使用will-change或transform
- translate 位移
- scale 缩放
- rotate 旋转
- skew 倾斜
具体用法可查看MDN文档
作用:补充中间帧
语法:transition:属性名 时长 过渡方式 延迟
过渡方式:
- linear
- ease
- ease-in
- ease-out
- ease-in-out
- cubic-bezier
- step-start
- step-end
- steps
作用:声明关键帧,添加动画
声明关键帧:
- 语法:@keyframs 动画名{}
- 标准写法 如下
@keyframes 动画名 {
from {
transform: translateX(50%);
}to {
transform: translateX(100%);
}
}
@keyframes 动画名 {
0% { top: 0;
left: 0;
}
30% { top: 30px;
}
68%, 72% { left: 30px;
}
100% { top: 60px;
left: 100%;
}
}
语法:animation:时长|过渡方式|延迟|次数|方向|填充模式|是否暂停
文章图片
|动画名
具体查看MDN文档
推荐阅读
- Ⅴ爱阅读,亲子互动——打卡第178天
- python学习之|python学习之 实现QQ自动发送消息
- 《一代诗人》37期,生活,江南j,拨动心潭的一泓秋水
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 以读攻“毒”唤新活动曹彦斌打卡第二天
- 移动端h5调试方法
- 使用composer自动加载类文件
- 动如脱兔
- Hive常见问题汇总
- 姚老师互动问答会|姚老师互动问答会 # 问题001(如何更有智慧的和身边人分享金刚智慧())