transition-duration和transition-timing-function控制CSS过渡的时长与速度曲线,决定动画的流畅度与自然感。

CSS中的过渡效果让元素在状态变化时更加平滑自然,而控制过渡的关键属性就是transition-duration和transition-timing-function。这两个属性决定了动画持续多久以及动画速度如何变化,直接影响用户体验。
transition-duration:控制过渡持续时间
这个属性用来设置过渡动画执行的总时长,单位可以是秒(s)或毫秒(ms)。
- 默认值是
0s,表示没有过渡,属性立即变化 - 设置为
0.5s或500ms都表示半秒钟完成过渡 - 可以为多个属性分别指定不同的持续时间,用逗号分隔
div {
transition-duration: 0.3s;
}
button:hover {
background-color: blue;
}
当鼠标悬停时,背景色将在300毫秒内逐渐变化。
transition-timing-function:定义速度曲线
它决定了过渡过程中动画的速度节奏,即“快慢分布”。虽然时间长度由duration决定,但“怎么变”由这个属性控制。
立即学习“前端免费学习笔记(深入)”;
常用预设关键词包括:
-
ease:默认值,开始慢,中间快,结束慢 -
linear:匀速运动,每帧速度一致,显得机械 -
ease-in:开始慢,逐渐加速,适合“出现”类动画 -
ease-out:开始快,结束慢,常用于“消失”动作 -
ease-in-out:两端慢,中间快,最自然的对称缓动
更灵活的方式是使用贝塞尔曲线函数 cubic-bezier(x1, y1, x2, y2),自定义任意速度路径。
div {
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
这种曲线常模拟“弹跳回弹”或“顺滑拉入”效果,适合现代UI动效设计。
组合使用建议
实际开发中,这两个属性通常结合transition-property和transition-delay一起使用,也可以直接用简写transition。
- 短时间(ease-out 让交互更敏捷
- 较长时间(>0.5s)可尝试
ease-in-out避免突兀 - 颜色变化适合
ease,位移或缩放可用cubic-bezier增强真实感
button {
transition: all 0.25s ease-out;
}
基本上就这些。掌握transition-duration和timing-function,就能让页面动效从“能动”变成“好看又好用”。









