优先用ease-out或cubic-bezier(0.25, 0.46, 0.45, 0.94)处理transform,opacity和color用ease-in-out或cubic-bezier(0.3, 0, 0.7, 1),box-shadow等扩散效果用ease-out强化收尾感。

别用默认 ease,它在多数交互里都显生硬——尤其小范围位移、颜色变化或图标缩放时。
哪些缓动函数适合什么属性
不同 CSS 属性对缓动敏感度差异很大,统一套用 ease 会放大不协调感:
-
transform(位移/缩放/旋转):最敏感,起步太慢(ease-in)易显迟滞,收尾太急(ease)像撞墙;推荐ease-out或cubic-bezier(0.25, 0.46, 0.45, 0.94)(Material 风格惯性) -
opacity:变化本身无物理位移,ease-in-out比ease更柔和,避免“啪”一下闪入/闪出 -
background-color、color:人眼对色相/明度渐变更敏感,ease-in-out或低斜率贝塞尔(如cubic-bezier(0.3, 0, 0.7, 1))比ease更稳 -
box-shadow、filter:扩散类效果适合ease-out,强化“落定”感,避免收尾虚浮
为什么 cubic-bezier() 比预设关键词更可靠
所有预设函数本质都是 cubic-bezier() 的简写,但浏览器实现有细微差异,且无法微调节奏。直接写贝塞尔能绕过这些坑:
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
-
linear在部分旧安卓 WebView 中解析异常,改用cubic-bezier(0, 0, 1, 1)更稳 -
ease实际是cubic-bezier(0.25, 0.1, 0.25, 1),起始斜率偏高,容易“冲”;想柔和启动,把第一个控制点 y 值调低,比如cubic-bezier(0.25, 0.05, 0.25, 1) - 结尾卡顿?检查 P3 点是否与右下角共线——只要
y2 就能保证收尾有减速趋势,例如 <code>cubic-bezier(0.3, 0.1, 0.7, 0.8) - 工具推荐:cubic-bezier.com,拖动控制点实时预览,导出代码直接复制
多个属性共用 transition 时的 timing-function 覆盖规则
当同时过渡多个属性,缓动函数不是“全局生效”,而是按顺序严格匹配:
- 写成
transition: width 0.3s ease-in, height 0.5s ease-out;→width用ease-in,height用ease-out - 如果只写
transition: width 0.3s, height 0.5s;→ 两者都回退到默认ease,不是分别继承前面的值 - 数量不匹配时(如
transition-property: width, height, opacity+transition-timing-function: ease-in, ease-out),多余项被静默截断,opacity用默认ease - 安全写法:拆开写
transition-property、transition-duration、transition-timing-function,确保三者长度一致
真正影响自然感的,从来不是“选哪个函数”,而是“这个属性值变化的物理意义是什么”。比如按钮 hover 缩放,要模拟手指按压的弹性反馈,就该用带轻微回弹的贝塞尔;而模态框关闭,重点是“收束感”,ease-out 比 ease-in-out 更合适。调试时盯着动效本身,而不是参数列表。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










