CityPulso/PulsoIcon
开发工具面向 React、Vue、Svelte、Jetpack Compose 和 SwiftUI 的动画图标库,每个图标都有单独编写的动效。
项目介绍
PulsoIcon 是一个动画图标库:约 9,955 个图标各自拥有为该形状编写的动效,而不是所有图标共用一种效果。其中约 3,700 个图标为本项目绘制,包括约 2,770 个线条风格的品牌标识;其余形状基于 Lucide、Tabler Icons 和 Iconoir。图标静止时是普通静态图标,指针悬停或焦点进入所在控件时播放动画,并遵循系统的减少动效设置。
同一套图标数据同时驱动 React、Vue、Svelte、Jetpack Compose 和 SwiftUI 包,适合希望不同平台保持图标和动效一致、又不想手写 SVG 动画的界面开发者。
快速使用
先安装对应框架的包,再把图标放进按钮、链接、标签或其他可识别的触发元素中。
React 18+ 安装 pulsoicon-react 后按名称导入:
import { Bell, Trash2 } from "pulsoicon-react";
<button><Bell size={20} /> Notifications</button>
<button><Trash2 color="crimson" strokeWidth={1.5} /> Delete</button>
悬停按钮即可播放动效。Vue 3.5+、Svelte 5、Jetpack Compose 和 SwiftUI 的使用方式相同;各框架的包名和快速开始见 React 指南、Vue 指南、Svelte 指南、Compose 指南 和 SwiftUI 指南。也可以先在 在线演练场 预览并复制图标代码,再安装使用。
属性与触发方式
各平台包使用同一组属性:size、color、strokeWidth、absoluteStrokeWidth、solid、animated、autoAnimated 和 play。animated={false} 让图标完全静止;autoAnimated={false} 关闭内置的悬停/焦点触发,但通过 ref 或 play 仍可手动播放。Web 端图标会在指针进入或焦点移入最近的按钮、链接、标签、summary,或带有 button、link、tab、menuitem 角色的元素时播放;自定义元素可通过 data-icon-trigger 成为触发器。
使用填充图标时设置 solid 并指定颜色;约 1,700 个图标有来自 Tabler 或 Phosphor 填充集的专用填充图形,其余图标则填充其闭合轮廓。Web 包还导出 ICONS、ICON_NAMES、kebab-case 图标名称,以及按 icons/<name> 单模块导入的图标。
使用约束
React 要求 18+,Vue 要求 3.5+,Svelte 要求 5。Web 端图标渲染时带有 aria-hidden="true",因此外层按钮或链接需要自行提供可访问名称。各平台包版本号同步,React 包从 6.0.1 起由 pulsoicon 改名为 pulsoicon-react。
代码采用 ISC 许可证,派生自其他开源图标集的形状保留各自的许可声明。将 PulsoIcon 打包进应用、网站、模板或自己的库时,需要附带 LICENSE 文件,其中已汇总 Lucide、Tabler、Iconoir、Hugeicons 和 Phosphor 的声明。品牌图标归各品牌所有,使用不代表获得背书。
HotRepo 点评
在 2026-11-08 的新项目榜记录中,PulsoIcon 为 165 Star、4 Fork,统计窗口从 03:45 到 05:15 UTC,期间新增 63 Star。采集到的 Star 曲线在约一个半小时内从 102 升至 165。观察窗口很短,不能据此判断持续采用情况,但该项目确实进入了当轮增速排名。多框架统一设计、React 端一行替换 lucide-react,以及逐图标编写动效,是能解释开发者为何浏览它的具体差异点;目前没有记录到全部语言日榜名次。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。