你是否曾为菜单按钮从「三道杠」变成「X」时生硬的跳变而皱眉?是否厌倦了为每个图标切换手动写关键帧、配对路径、调试旋转角度?morphicons 就是为此而生——它不是简单的 SVG 动画工具,而是一套真正“懂图形”的智能形态变换引擎。只需传入两个图标(比如 Lucide 的 Menu 和 X),它就能自动计算最优变形路径,让图标像有生命般自然伸展、旋转、融合,全程无需手写路径、不依赖动画框架、甚至不用声明“从哪来、到哪去”。
核心功能
- 任意图标 → 任意图标:支持 Lucide、Tabler、Heroicons、Iconoir 等主流 stroke-based 图标库,也可直接传入自定义 SVG 路径,无需统一节点数或结构
- 数学驱动的智能变形:基于 2D Procrustes 分析 + 极坐标插值,自动推导旋转、缩放与形变逻辑——旋转不再靠 guess,而是由几何关系自然“涌现”
- 物理感弹簧动画:内置轻量弹簧物理引擎(spring physics),告别机械线性过渡,带来真实回弹、缓冲与张力,交互更富呼吸感
- 零运行时依赖:压缩后仅约 7 KB(gzip),无 React、Framer Motion 或 GSAP 等第三方依赖,开箱即用,不污染项目体积
- React 集成极简:提供
<MorphIcon />组件,仅需一个iconprop;状态交由开发者管理,组件专注“如何动”,而非“何时动” - 开箱即用的开发体验:自带在线 Playground(morphicons.com),拖拽试玩、实时预览、一键复制代码,降低学习门槛
适合哪些人用
前端工程师、UI 开发者、设计系统构建者、以及任何追求精致微交互的网页/应用创作者。尤其适合需要高频切换状态图标(如折叠/展开、播放/暂停、编辑/保存)的产品界面;也适用于设计工具、低代码平台、仪表盘等强调视觉流畅性的场景。如果你曾为图标动画反复调整贝塞尔曲线、校准路径点、或在 useTransition 里写一堆配置项——morphicons 正是你等待已久的“隐形动画师”。
快速上手
以 React 项目为例(支持 Vite、Next.js、Create React App 等主流环境):
<button onClick={() => setOpen(o => !o)} aria-expanded={open}>
<MorphIcon icon={open ? X : Menu} />
</button>
就这么简单!只要 icon 属性变化,动画自动触发——没有 key、没有 from/to、不用 AnimatePresence,状态与动画彻底解耦。
项目信息
Any icon morphs into any other — universal morphing for stroke-based icons with spring physics. Zero dependencies, ~7 KB gzip.
TypeScript 编写|GitHub Star 数:488|MIT 开源协议|GitHub 项目地址
如果你想要图标动画既专业又省心,既轻量又富有生命力,morphicons 就是那个“写一次,处处丝滑”的答案。


