简单来说:Houdini 是 CSS 的“终极形态”,但它不是为了取代 Lottie,而是为了进化 CSS 本身。
如果说 Lottie 是把“做好的电影”搬进网页,那么 Houdini 就是给你一套“零件”,让你直接在浏览器的渲染引擎里手写新的 CSS 属性。
- 先看个houdini demo
1. 为什么说它是“未来”?
目前的 CSS 动画受限于浏览器预定义的属性(如 transform, opacity)。如果你想实现一个复杂的“液态球”效果,通常得用 JS 操作 Canvas 或大量的 DOM。
Houdini 的突破点在于:
- 接入渲染底层: 它允许你通过 Worklets(一种运行在主线程之外的轻量级 JS)直接介入浏览器的“绘制(Paint)”和“布局(Layout)”阶段。
- 自定义属性(Typed OM): 你可以告诉浏览器:“
--my-color是一个颜色,不是字符串。”这样 CSS 就能直接对它进行平滑的渐变过渡,而不再需要黑科技。 - 极致性能: 动画在渲染引擎层级运行,完美解决 JS 驱动动画时的卡顿(Jank)问题。
2. Houdini vs Lottie:赛道不同
这两者在未来会长期共存,因为它们解决的是不同的问题:
| 特性 | Lottie (设计师驱动) | Houdini (开发者驱动) |
|---|---|---|
| 本质 | 播放器:播放 AE 导出的 JSON 动画 | 扩展包:为 CSS 增加新能力/新属性 |
| 优势 | 还原度极高,适合复杂的角色、MG 动画 | 极度灵活,适合生成式背景、自定义 UI 组件 |
| 交互 | 相对固定,修改内部元素较麻烦 | 深度集成 CSS 变量,响应极快 |
| 学习成本 | 低(设计师给文件,你引入就行) | 高(需要写 JS Worklet 代码) |
3. 2026 年的现状:它落地了吗?
到目前为止(2026年),Houdini 的进展呈现**“局部成熟,整体推进”**的状态:
- Properties & Values API (已普及): 这是目前最实用的部分。你可以通过
@property定义变量类型,让以前无法做动画的属性(如渐变色背景)直接通过transition实现平滑过渡。 - Paint API (支持良好): 在 Chromium 系浏览器中已经非常成熟。你可以写一个 JS 文件来实现“水波纹”或“动态斑点”背景,然后在 CSS 里像引用图片一样使用它:
background-image: paint(my-dynamic-pattern);。 - Animation Worklet (仍在进化): 这是最硬核的部分,旨在处理高性能、高频率的交互动画(如随滚动变化的视觉差),目前在大规模生产环境中使用仍需谨慎考虑兼容性。
4. 总结
Houdini 是 CSS 动画的“基建升级” 。它不会让你立刻抛弃 Lottie 或 Framer Motion,但它会抹掉“这个效果 CSS 做不到”的限制。