2026-10-22 09:30:22
在CSS中,transition-timing-function 的选择需根据动画场景和设计意图,从内置函数、贝塞尔曲线或分步过渡中选取最匹配的方案。 以下是具体选择方法及适用场景:
一、内置关键字函数:快速实现基础效果内置函数无需复杂计算,适合大多数常规动画需求:
ease(默认)
特点:开始和结束速度慢,中间加速,形成平滑的缓动效果。
适用场景:通用过渡(如按钮悬停、卡片展开)、无明显加速/减速需求的动画。
示例:.button { transition-timing-function: ease; }
linear
特点:匀速运动,速度恒定。
适用场景:循环动画(如加载旋转)、需要机械感或稳定节奏的场景(如进度条)。
示例:.loader { transition-timing-function: linear; }
ease-in
特点:开始慢,逐渐加速,结尾速度最快。
适用场景:元素“出现”时避免突兀(如页面加载、模态框弹出)。
示例:.modal-enter { transition-timing-function: ease-in; }
ease-out
特点:开始快,结尾慢,形成柔和的收尾效果。
适用场景:元素“消失”或收起(如菜单关闭、模态框退出)、按钮悬停反馈。
示例:.menu-exit { transition-timing-function: ease-out; }
ease-in-out
特点:两端慢,中间快,对称性更强。
适用场景:来回切换的动画(如开关按钮、标签页切换)。
示例:.toggle-switch { transition-timing-function: ease-in-out; }
通过 cubic-bezier(x1, y1, x2, y2) 定义控制点,模拟非线性运动:
平滑自然效果
参数:cubic-bezier(0.42, 0, 0.58, 1)
特点:接近默认的 ease,但更灵活。
适用场景:需要微调默认缓动效果的场景。
弹跳效果
参数:cubic-bezier(0.68, -0.55, 0.27, 1.55)
特点:模拟物体弹跳的物理运动。
适用场景:趣味性交互动画(如按钮点击反馈、游戏元素)。
Material Design 风格
参数:cubic-bezier(0.17, 0.67, 0.83, 0.67)
特点:符合 Material Design 的标准缓动曲线,强调自然感。
适用场景:卡片展开、下拉菜单等 Material Design 组件。
自定义品牌风格
方法:通过工具(如
适用场景:需要体现品牌独特性的动画(如科技感、柔和感)。
通过 steps(n, jump-start/jump-end) 将过渡分为固定步数,适合非连续动画:
精灵图动画
参数:steps(4, end)
特点:将过渡分为4步,每步停留后跳转。
适用场景:精灵图切换(如角色行走、图标动画)。
数字翻牌效果
参数:steps(10, jump-start)
特点:立即跳到下一步,形成翻牌的离散效果。
适用场景:计数器、倒计时动画。
老式幻灯片切换
参数:steps(1, start)
特点:直接切换,无过渡效果。
适用场景:模拟复古幻灯片或分页切换。
通过合理选择 transition-timing-function,可以显著提升动画的自然度和用户体验,同时强化品牌风格。