返回项目目录
开发工具精选项目

Heroicons

由 Tailwind CSS 团队手工设计的 MIT SVG 图标集,提供四种光学尺寸及 React、Vue 官方组件。

主要语言TypeScript
开源许可MIT
项目类型开发工具
维护状态活跃维护
OVERVIEW

项目概述

Heroicons 收录 316 个界面图标,每个图标提供 24px Outline、24px Solid、20px Mini 和 16px Micro 版本。图标可以直接复制为 SVG,也可以通过官方 React 与 Vue 包按组件导入。

Heroicons 是 Tailwind Labs 为产品界面手工设计的开源 SVG 图标集,但它并不依赖 Tailwind CSS:任何 HTML、模板或前端框架都可以直接使用 SVG。官方网站当前列出 316 个图标,每个图标分别针对 24×24 Outline、24×24 Solid、20×20 Mini 和 16×16 Micro 四种场景绘制,而不是简单缩放同一条路径。项目提供 `@heroicons/react` 与 `@heroicons/vue` 两个官方组件包,组件名称采用 UpperCamelCase 并以 `Icon` 结尾。代码和图标采用 MIT 许可证。它是一套范围克制、风格稳定的界面图标系统,而不是覆盖品牌、Emoji 和行业图形的超大聚合平台。

图标数量316
样式尺寸24 Outline / 24 Solid / 20 Mini / 16 Micro
官方组件React / Vue
FEATURES

主要特点

Heroicons 的重点不是追求最大数量,而是以清晰的光学尺寸、统一命名和轻量交付覆盖常见产品界面。

01

316 个手工界面图标

覆盖导航、操作、状态、媒体、设备和商务等常见产品语义,目录规模适中,容易建立统一的图标词汇。

02

24px Outline 与 Solid

描边版适合常规操作,填充版适合选中和强调状态,两套图标均针对 24×24 画布绘制。

03

20px Mini

Mini 版本针对 20×20 画布优化,适合输入框、紧凑按钮、菜单项和表格操作。

04

16px Micro

Micro 版本为高密度界面和小字号文本旁的图标设计,在 16×16 尺寸下保持清晰轮廓。

05

独立光学尺寸

不同尺寸拥有针对目标画布调整的几何细节,不是将一个 SVG 等比缩放,因此小尺寸下更容易辨认。

06

直接复制 SVG

官方网站允许复制单个 SVG,原生 HTML、服务端模板、静态站点和没有官方组件包的框架都能使用。

07

React 与 Vue 官方组件

`@heroicons/react` 和 `@heroicons/vue` 按尺寸与风格提供命名导出,支持类型检查和静态导入。

08

可预测的组件命名

图标名称采用 UpperCamelCase 并统一追加 `Icon`,例如 `BeakerIcon`、`XMarkIcon`,便于搜索。

09

继承 currentColor

图标继承文字颜色,可使用普通 CSS、Tailwind 的 text-* 类或设计令牌控制主题色与状态色。

10

无运行时服务依赖

SVG 或组件随应用交付,不需要浏览器再请求图标 API,适合离线、严格 CSP 和隐私敏感场景。

11

MIT 许可证

代码与图标可在个人和商业项目中使用、修改与分发,只需遵守版权与许可声明要求。

USE CASES

适用场景

它适合需要一套克制、统一、可直接进入 React、Vue、Tailwind CSS 或原生 HTML 工作流的界面图标。

Tailwind CSS 产品界面

使用 `size-*`、`text-*` 和状态变体控制图标,与 Tailwind 的布局、颜色和交互类自然组合。

React 与 Vue 控制台

通过官方包为导航、表格、表单、空状态和操作按钮提供类型友好的静态组件。

高密度菜单与表格

根据控件密度选择 20px Mini 或 16px Micro,提升小尺寸下的清晰度。

按钮和表单反馈

用 Outline 表达普通操作、Solid 表达选中或强调状态,并通过颜色继承完成交互效果。

静态 HTML 与服务端模板

直接复制 SVG 到 Astro、Eleventy、Hugo、Rails 或普通 HTML,无需客户端 JavaScript。

设计系统图标层

将 16、20、24 像素和 Outline、Solid 映射为明确的组件尺寸与语义规则。

离线与严格安全环境

所有资源进入本地构建产物,不依赖外部字体、CDN 或图标 API。

EVALUATION

优点与注意事项

技术选型不仅要看能力,也要理解它带来的团队成本。

主要优点

Heroicons 擅长的地方

  • 由 Tailwind CSS 团队维护,图标视觉语言统一,适合现代产品界面。
  • 同一语义提供 16、20、24 像素光学版本,小尺寸不是简单缩放。
  • Outline 与 Solid 可建立普通、选中、强调等清晰的状态层级。
  • React 和 Vue 官方包拥有简单、类型友好且可静态分析的导入方式。
  • 直接 SVG 不绑定任何框架,也不要求项目必须使用 Tailwind CSS。
  • 基于 currentColor,普通 CSS、Tailwind 与设计令牌都能控制颜色。
  • 不依赖图标字体、CDN 或运行时 API,离线能力和加载行为可预测。
  • MIT 许可宽松,适合商业产品、设计系统与内部工具。

需要注意

采用前应考虑的问题

覆盖范围比大型图标库小

316 个图标能覆盖常见 UI,但专业行业、品牌或长尾语义可能需要 Lucide、Iconify 或自定义图标补充。

官方组件仅覆盖 React 和 Vue

Svelte、Solid、Angular 等没有官方包;可复制原始 SVG 或选择社区封装,但需自行评估维护质量。

当前仅接受错误修复

官方仓库明确表示目前不接受新图标或新框架支持,需求缺口不能预期通过普通提案快速进入上游。

不以品牌和多彩图标为目标

Heroicons 主要是单色产品界面符号;品牌 Logo、Emoji 或多彩图形更适合专门图标集。

必须选择正确的光学尺寸

16、20、24 像素版本细节不同。把 24px 图标压到 16px 会损失清晰度。

Outline 与 Solid 需要语义规则

随意混用描边和填充会破坏层级,应明确默认、选中、告警和强调状态。

原始 SVG 与 JSX 属性不同

复制到 React 时需将 `stroke-width` 等属性转换为 JSX 形式;官方 React 包可避免手动转换。

动态导入可能扩大产物

推荐从明确的尺寸子路径静态导入;导入完整命名空间可能把大量未使用图标打入 Bundle。

图标按钮仍需无障碍名称

装饰图标应设置 `aria-hidden="true"`;仅有图标的按钮必须提供 `aria-label` 或可见文本。

currentColor 会继承父级颜色

这有利于主题适配,也可能在嵌套链接、禁用态和深色模式中产生意外颜色。

稳定不等于频繁发布

当前 npm 稳定版为 2.2.0,仓库仍有 2026 年维护活动,但目录和 API 已较成熟。

重新分发要保留许可

MIT 允许商用和修改,但分发代码或图标副本时仍需保留版权与许可声明。

QUICK START

快速开始

下面展示 React、Vue 与原生 SVG 的官方使用方式,并补充尺寸选择、无障碍和发布前检查。

1安装 React 官方包
bash
npm install @heroicons/react
2在 React 中使用 24px 图标
tsx
import { BeakerIcon as BeakerOutline } from "@heroicons/react/24/outline";
import { BeakerIcon as BeakerSolid } from "@heroicons/react/24/solid";

export function ExperimentStatus({ active }: { active: boolean }) {
  const Icon = active ? BeakerSolid : BeakerOutline;

  return (
    <span className="inline-flex items-center gap-2 text-sky-600">
      <Icon className="size-6" aria-hidden="true" />
      实验 {active ? "进行中" : "未开始"}
    </span>
  );
}
3为紧凑控件选择 Mini 与 Micro
tsx
import { CheckIcon } from "@heroicons/react/20/solid";
import { XMarkIcon } from "@heroicons/react/16/solid";

export function CompactActions() {
  return (
    <div className="flex items-center gap-2">
      <CheckIcon className="size-5 text-emerald-600" aria-hidden="true" />
      <button type="button" aria-label="关闭">
        <XMarkIcon className="size-4" aria-hidden="true" />
      </button>
    </div>
  );
}
4安装 Vue 官方包
bash
npm install @heroicons/vue
5在 Vue 中使用图标组件
vue
<script setup lang="ts">
import { MagnifyingGlassIcon } from "@heroicons/vue/24/outline";
import { CheckIcon } from "@heroicons/vue/20/solid";
</script>

<template>
  <label class="flex items-center gap-2">
    <MagnifyingGlassIcon class="size-6" aria-hidden="true" />
    <input type="search" aria-label="搜索项目" />
    <CheckIcon class="size-5 text-emerald-600" aria-hidden="true" />
  </label>
</template>
6在原生 HTML 中直接使用 SVG
html
<button type="button" aria-label="打开菜单">
  <svg
    class="size-6 text-slate-700"
    viewBox="0 0 24 24"
    fill="none"
    stroke="currentColor"
    stroke-width="1.5"
    aria-hidden="true"
  >
    <path
      stroke-linecap="round"
      stroke-linejoin="round"
      d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"
    />
  </svg>
</button>
7执行发布前检查
bash
npm run lint
npm run typecheck
npm run build

# 检查 Bundle、无障碍名称、16/20/24px 清晰度和深色模式

下一步:先按实际显示尺寸选择 16、20 或 24 像素版本,再决定 Outline 或 Solid;不要把 24px 图标机械缩小到密集控件中,也不要用动态图标名称导入整个组件目录。

ALTERNATIVES

类似项目

这些项目分别代表前端框架、Tailwind CSS 生态、统一线性图标库和多图标集聚合平台,可帮助判断 Heroicons 是否适合当前产品。

COMPARISON

Heroicons vs Lucide

Heroicons 和 Lucide 都提供简洁、可直接嵌入应用的 SVG 图标,但 Heroicons 强调少而精的四套光学尺寸与 React/Vue 官方体验,Lucide 强调更大的统一线性目录和更广泛的框架生态。

比较维度HeroiconsLucide
核心定位Tailwind Labs 的克制型产品界面图标集社区维护的大规模统一线性图标库
目录规模316 个图标1,600+ 图标,覆盖语义更广
视觉样式Outline 与 Solid 两种主要风格以可调线宽的 Outline 为主
光学尺寸16、20、24px 独立绘制版本主要基于 24×24 网格并通过 size 调整
官方框架React、Vue,以及原始 SVGReact、Vue、Svelte、Solid、Angular 等广泛生态
定制能力选择尺寸与 Outline/Solid,继承 currentColor可调 size、color、strokeWidth 等描边属性
社区扩展当前只接受错误修复,不接收新图标和新框架持续接受社区图标贡献,并有实验性 Lucide Lab
品牌与多彩不以品牌或多彩图标为目标同样不收录品牌 Logo,主要是单色界面图标
许可证MITISC,部分 Feather 衍生图标同时保留 MIT
更适合重视光学尺寸、Solid 状态与 Tailwind/React/Vue 体验需要更大目录、更多框架和可调描边的产品
如何选择

如果产品主要使用 React、Vue 或 Tailwind CSS,且希望用 16/20/24px 光学尺寸与 Outline/Solid 建立明确状态,优先选择 Heroicons;如果需要更大的图标目录、更广泛的框架官方包或可调线宽,Lucide 通常更合适。两者都不以品牌 Logo 为目标。

VERIFICATION

资料核验

版本、维护信息与本页采用的官方资料来源。

最后核验2026 年 7 月 29 日
核验版本Heroicons 2.2.0
内容维护Tailwind Labs / tailwindlabs
项目维护状态活跃维护

官方首页核验为 316 个图标;React npm 稳定版与仓库主包均为 2.2.0。官方 README 列出四种尺寸、React/Vue 安装方式,并说明当前只接受错误修复。GitHub 官方仓库核验时未归档,最近可见提交日期为 2026 年 5 月 12 日。

维护状态核验2026 年 7 月 26 日 · 最近可见代码活动:2026 年 5 月 12 日

官方仓库未归档,核验时最近可见的代码活动日期为 2026 年 5 月 12 日。该状态表示项目近期仍有公开维护活动,不代表固定发布频率或长期支持承诺。

查看官方仓库