弹性
Spring
中级通用弹性(Spring)是一种用弹簧运动规律计算动画的方式:元素朝目标位置移动,速度会随距离和阻尼变化。它解决固定时长动画在目标突然改变时容易显得生硬的问题,比如抽屉打开一半又被关上。
你可能会说:「我想让侧边抽屉滑动得自然一点,中途反向操作时也别突然卡住或跳位置。」
读之前建议先了解
动手看看订单抽屉的中途收起
等抽屉滑入后,按住右侧的“按住收起”区域,再松开:目标会立刻从收起变回打开。切换运动方式或时长,会自动重播入场动画。
轻阻尼会略微冲过终点再回来,看起来有弹劲;但这里用缓动曲线模拟外观,并不是真正按弹簧物理规律计算。
要点弹性动画是怎么动起来的?
- 1
目标位置决定往哪里走
你可以把元素当前的位置看成弹簧的一端,把目标位置看成另一端。打开抽屉时,目标移到屏幕内;关闭时,目标回到屏幕外。动画每一刻都根据当前状态向目标靠近。
- 2
刚度和阻尼决定运动感
刚度影响元素被拉向目标的力度,阻尼影响它的运动如何逐渐停下。阻尼较小时可能越过目标再返回;阻尼较大时则可能不回弹。所以“弹性”不等于一定要弹过头。
- 3
中途改目标也能接着运动
假设你刚打开抽屉,马上又点关闭。弹性动画可以从当时的位置和速度继续计算,转向新目标。你和 AI Agent 沟通时,可以明确说“保留当前运动状态”,避免抽屉先跳到终点再重新播放。
容易混淆的地方
缓动通常是在一段预设时长内,规定动画从起点到终点如何分配速度;弹性则根据当前位置、速度和目标持续计算运动,因此更适合目标可能中途变化的交互。关键帧用来指定若干时刻的画面,适合有明确编排的动作。三者都能做出回弹外观,但实现思路不同。
什么时候用
适合用
- 做可拖拽的后台侧栏时,松手后让它接着移动到展开或收起的位置。
- 用户连续打开、关闭 App 抽屉时,让动画从当前状态平顺地改变方向。
- 卡片被拖动并放手后,让它回到原位或移动到选定位置。
不适合用
- 品牌片头需要每个动作按指定时间点出现时,用关键帧更方便控制编排。
- 进度条要如实反映上传比例时,直接用实际进度驱动宽度,而不是让弹簧替它决定数值。
- 界面只需瞬间显示提交结果时,直接更新状态即可,不必为了变化而加弹性动画。
练一练选一个答案,看看解释
你在做一个可拖拽的侧边抽屉:用户松手后,抽屉要滑向最近的停靠位置;滑动途中再次拖动,也不能跳位置。你会怎样向 AI Agent 描述实现方式?
让 AI 帮你做复制给 AI Agent 直接用
请给后台侧边抽屉的位置使用弹性(Spring)动画:打开和关闭只改变目标位置,连续点击或中途拖动时,从当前位置和速度继续运动,不要跳到端点重播。调节刚度与阻尼,让它停得干净,不需要明显越界回弹;同时照顾减少动效的系统设置。