CSS 动画与 Houdini:效果进入合成层之前先算成本
CSS 能写出很漂亮的动效,但布局、绘制和合成走的是不同路径。动画属性选错,几行代码就能让主线程每帧重排。
优先动画 transform 和 opacity
它们通常更容易进入合成层,但层数过多也会增加显存。width、filter 或复杂阴影需要在目标设备上测,不凭经验宣布“GPU 加速”。
Houdini 用在明确缺口
自定义属性和 Paint API 适合封装稳定视觉规则,使用前检查浏览器支持与降级样式。不要为一个静态效果引入难调试的运行时代码。
- 尊重 prefers-reduced-motion。
- 交互动画可被键盘操作触发。
- 组件卸载后清理注册与监听。
用 Performance 面板看每一帧
固定元素数量和视口,观察 layout、paint 与 layer。视觉验收同时检查高缩放和不同主题。
动效的目标是帮助理解状态,不是让页面证明自己会动。成本落在预算内,细节才有意义。
原稿中的最小片段
transition: transform 160ms ease, opacity 160ms ease;这段片段保留原样,只用于说明接口形态;接入项目时仍要补齐类型、错误和测试。