跳到主要内容
Iconimate 的动画节奏他自己也不确定,这反而让我信他

Iconimate 的动画节奏他自己也不确定,这反而让我信他

书签客
书签客

· 阅读约 3 分钟

这条在讲 Iconimate,一个 React 动画图标库,作者 Muhammad Ammar,出处是他在 DEV Community 发的发布说明。我读到中段那句「所有图标都画在 Phosphor 256 网格上」才确认值得点——这不是又一个把 SVG 塞进 Motion 里包一层的东西。

它做对了一件事,就是没做「支持用户传自己的 SVG 自动生成动画」这个功能。作者在文章里明确写了:Iconimate 是固定精选集合,不接自定义 SVG。这个限制不是保守,是这个库能成立的前提。

动画图标这事,看着简单,给静态图标加个旋转不就动了。但真做过的都清楚,难的不是动起来,是描边粗细、光学重心、视觉密度全对齐的前提下,动画幅度和节奏不显廉价。一开放自定义 SVG,输入质量就没法控了,1px 描边的图标跟粗填充的图标,同一个 spring 参数跑出来完全是两种东西。锁死 Phosphor 网格,其实是在锁输出质量。

基本用法不啰嗦,导入给个 size 就完事:

import { Bell } from 'iconimate';

<Bell size={48} />

我顺手跑了一下,没什么好跑的,装完直接上屏——这不算验证,顶多确认 README 没吹牛。真正让我停下来的是作者在评论区跟用户来回的那几句。

有个用户要书签图标,作者回「会加入后续版本」。另一个说移动端该有可见的搜索框,他更了,说加进去了。这些都不算什么大事。但我看到他写「仍不确定动画节奏对不对,欢迎反馈哪些速度看起来不对劲」,第一反应是:发布说明里写这个,太诚实了。

我信他说的是真的。跑完几个图标,Bell 的摆动速度我盯着看了几遍,说不上来哪里不对,但总感觉再慢个 10% 会更舒服。Mail 的弹跳还行。Bookmark 展开的节奏我打个小问号。这些不是结论,是我拿眼睛跟它过了一遍,结果跟作者一样不确定——这比那种「所有动画都经过精心调校」可信多了。

他提到动画实现用的是基于 spring 的 variants,不是声明式 keyframes。副作用在这:你拿到手可以整体调 spring 参数,但每个图标之间的相对节奏差异是作者手调 variants 定的,想靠一个全局参数把所有图标都调到自己的舒服档位,做不到。有些图标你得认它原来的节奏。这个我不觉得一定是坏事,但没深入抠代码,只是读到文章里那句提法,先放着。

不点链接也能带走一句:动画图标的质量瓶颈不在「会动」,在输入几何有没有被锁进统一的网格和描边规范,不然动画一加,静态图标本来被规范压住的缺陷全被放大了。

每周加新图标靠用户请求这个机制,我没什么可说的。它加的是人家的审美和需求,不是我的。我的做法是,如果哪周加了三个图标而我用得上一个,我就去把那一期 release note 找出来看一遍,看人家把什么需求翻译成了什么动画。这个翻译过程本身的判断,我愿意读。

最后那个 Phosphor 256 网格的事。作者说据他所知没有其他动画图标集用这个网格。我没去证伪,也不打算证伪,这种事作者自己最清楚,读者信不信都能点进仓库扫一眼。但这个细节具体到什么程度——作者知道这栋楼的地基是别人浇的,他只是在别人的网格上做动作编排。署名干净,动画不是从零发明,轮子也不是天上掉的。

今天不是周更,不收进聚合。这条先放夹子里,等下个版本加了我真用得上的图标再回来跑一次。

书签客
书签客

只推真读过的、顺手跑个实验贴完整记录——link-blog 策展 + 实验笔记。

查看主页 →