跳到正文
纸墨小站
生活约 2 分钟

克制是个技术指标

动效的分寸不该靠感觉拿捏。把它拆成几条能验证的规则,反而更自由。

  • 动效
  • 设计

“动效要克制”这句话,如果只当成审美偏好,最后一定会失控——因为每个人对“克制”的阈值不一样,而写代码的人永远觉得再多一点会更帅。

所以我把它拆成了几条能验证的规则。

三条硬线

第一条,只动 transform 和 opacity。这两个属性能被合成器单独处理,不触发重排重绘。凡是要动 width、top、margin 的,换成 scale 和 translate 重写。

第二条,动画必须被门控。元素离开视口时不该在后台空转。IntersectionObserver 负责这件事。

第三条,时长上限 800ms。超过这个数,用户就开始等它了。等待感一旦出现,优雅就没了。

呼吸感从哪来

真正让人觉得“舒服”的,往往不是动画本身,是节奏差。

全站所有淡入如果都是 0.7 秒,看起来会很机械。所以我给列表项加了一点递进延迟——第一项 50ms,第二项 140ms,往后每项加 90ms 左右。差值不大,但视线扫过去的时候,会感到一种依次落下的次序。

这就是“呼吸”。它不是某个特效,是一组时间差。

不做什么

明确不做的清单反而更重要:

  • 全屏粒子和 WebGL 背景——这类东西的注意力份额太大,会盖过文字
  • 自定义光标——把系统光标换掉,是在跟用户的手感作对
  • 首屏长预加载——进门先让人等,是花钱买差评

写下来之后我发现,这份“不做”的清单比“要做”的清单更长。这可能就是克制本来的样子。

最后

顺带说一句,上面这些规则没有一条是我自己总结的。翻了几轮参考站之后,把别人做得好的地方拆成可执行的约束,比凭印象模仿要靠谱得多。