跳到正文

弹性

Spring

中级通用

弹性(Spring)是一种用弹簧运动规律计算动画的方式:元素朝目标位置移动,速度会随距离和阻尼变化。它解决固定时长动画在目标突然改变时容易显得生硬的问题,比如抽屉打开一半又被关上。

你可能会说:「我想让侧边抽屉滑动得自然一点,中途反向操作时也别突然卡住或跳位置。」

读之前建议先了解

动手看看

订单管理
待处理订单3 笔订单等待确认
订单详情
订单 #2408客户:林女士 · 待发货
按住收起,松开打开
运动方式

等抽屉滑入后,按住右侧的“按住收起”区域,再松开:目标会立刻从收起变回打开。切换运动方式或时长,会自动重播入场动画。

轻阻尼会略微冲过终点再回来,看起来有弹劲;但这里用缓动曲线模拟外观,并不是真正按弹簧物理规律计算。

要点

  1. 1

    目标位置决定往哪里走

    你可以把元素当前的位置看成弹簧的一端,把目标位置看成另一端。打开抽屉时,目标移到屏幕内;关闭时,目标回到屏幕外。动画每一刻都根据当前状态向目标靠近。

  2. 2

    刚度和阻尼决定运动感

    刚度影响元素被拉向目标的力度,阻尼影响它的运动如何逐渐停下。阻尼较小时可能越过目标再返回;阻尼较大时则可能不回弹。所以“弹性”不等于一定要弹过头。

  3. 3

    中途改目标也能接着运动

    假设你刚打开抽屉,马上又点关闭。弹性动画可以从当时的位置和速度继续计算,转向新目标。你和 AI Agent 沟通时,可以明确说“保留当前运动状态”,避免抽屉先跳到终点再重新播放。

容易混淆的地方

缓动通常是在一段预设时长内,规定动画从起点到终点如何分配速度;弹性则根据当前位置、速度和目标持续计算运动,因此更适合目标可能中途变化的交互。关键帧用来指定若干时刻的画面,适合有明确编排的动作。三者都能做出回弹外观,但实现思路不同。

什么时候用

适合用

  • 做可拖拽的后台侧栏时,松手后让它接着移动到展开或收起的位置。
  • 用户连续打开、关闭 App 抽屉时,让动画从当前状态平顺地改变方向。
  • 卡片被拖动并放手后,让它回到原位或移动到选定位置。

不适合用

  • 品牌片头需要每个动作按指定时间点出现时,用关键帧更方便控制编排。
  • 进度条要如实反映上传比例时,直接用实际进度驱动宽度,而不是让弹簧替它决定数值。
  • 界面只需瞬间显示提交结果时,直接更新状态即可,不必为了变化而加弹性动画。

练一练

你在做一个可拖拽的侧边抽屉:用户松手后,抽屉要滑向最近的停靠位置;滑动途中再次拖动,也不能跳位置。你会怎样向 AI Agent 描述实现方式?

让 AI 帮你做

请给后台侧边抽屉的位置使用弹性(Spring)动画:打开和关闭只改变目标位置,连续点击或中途拖动时,从当前位置和速度继续运动,不要跳到端点重播。调节刚度与阻尼,让它停得干净,不需要明显越界回弹;同时照顾减少动效的系统设置。

接下来学什么