JavaScript: 执行 JavaScript 来触发一些视觉变化的效果
Style: 计算元素匹配的 css 选择器, 应用各规则计算元素的最终样式
Layout: 根据元素的样式, 计算元素占据的空间大小和在屏幕中所处的位置...Paint: 向元素的可视部分填充像素, 包括文本 / 图像 / 边框 / 阴影, 绘制一般是在多个层上完成的
Composite: 将不同的层按正确的顺序绘制到屏幕上
要保证60FPS, 需要在 16ms...CSS 动画省略了 JavaScript 执行耗时, 只用了 0.49ms 的时间就完成了一帧的绘制
接下来思考一个问题, 如果主线程被阻塞了, CSS动画会有什么表现呢?...image
利用硬件加速优化 CSS 动画
使用硬件加速是很简单的, 只需要把动画中变化的属性, 从 margin-left 改为 transform 即可
@keyframes animate {...使用硬件加速后, 绘制过程将不再占用主线程, 直接在 GPU 上完成
因此, 点击按钮阻塞主线程, 也并不会影响动画, 你可以亲自试一试
使用 JS 动画
首先使用 setInterval 实现动画循环