2026-04-22 12:52:53
transition-timing-function 用于控制CSS过渡动画的速度曲线,通过调整变化节奏提升动效自然度,不影响总时长。 以下是具体使用方法:
一、预设速度曲线函数通过关键字快速定义动画节奏,适用于大多数基础场景:
ease(默认值):开始和结束较慢,中间加速,形成平滑的缓入缓出效果。示例:按钮悬停时轻微放大并柔和结束。
.button { transition: transform 0.4s ease;}.button:hover { transform: scale(1.05);}linear:匀速运动,无加速或减速,适合机械感或等速变化的场景。示例:进度条匀速填充。
.progress-bar { transition: width 2s linear;}ease-in:开始缓慢,逐渐加速,结束时速度最快,适合“进入”动画。示例:元素从隐藏到显示时缓慢出现。
.fade-in { opacity: 0; transition: opacity 0.5s ease-in;}.fade-in.active { opacity: 1;}ease-out:开始快速,逐渐减速,结束时最慢,适合“退出”或“强调”动画。示例:元素消失时柔和淡出。
.fade-out { opacity: 1; transition: opacity 0.5s ease-out;}.fade-out.hidden { opacity: 0;}ease-in-out:结合 ease-in 和 ease-out,加速和减速对称,两端慢中间快,适合需要平衡感的动画。示例:卡片翻转效果。
.card-flip { transition: transform 0.8s ease-in-out;}.card-flip:hover { transform: rotateY(180deg);}通过四个参数 (x1, y1, x2, y2) 定义控制点,实现复杂动效(如弹跳、回弹):
语法:
transition-timing-function: cubic-bezier(x1, y1, x2, y2);示例:弹跳进入效果元素先快速下落,冲过头后回弹至原位:
.bounce-in { opacity: 0; transform: translateY(30px); transition: all 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55);}.bounce-in.active { opacity: 1; transform: translateY(0);}参数解析:
(0.68, -0.55):第一个控制点,使曲线向上弯曲(冲过头)。
(0.265, 1.55):第二个控制点,使曲线回弹下落。
工具辅助:使用在线工具(如
当同时过渡多个属性时,可为每个属性指定独立的 timing-function,实现更精细的控制:
opacity 匀速变化(linear)。
transform 柔和结束(ease-out)。
background-color 缓慢开始(ease-in)。
.card { transition-property: opacity, transform, background-color; transition-duration: 0.3s, 0.6s, 0.4s; transition-timing-function: linear, ease-out, ease-in;}.card:hover { opacity: 0.9; transform: translateY(-5px); background-color: #f0f0f0;}通过合理运用 transition-timing-function,可显著提升界面动效的流畅性与表现力,使交互更加细腻自然。