Skip to content

Iconify Updates 2024 ​

Iconify 图标组件、工具库和工具的新版本 7 Dec ​

发布了以下软件包的新次版本:

包含 2 项变更:

  • 图标命名要求
  • 自定义图标加载器

命名规范变更 ​

最大的变更在于命名规范。

此前,所有组件仅允许包含小写字母、数字和短横线的图标名称:[a-z0-9-]。

现在这些限制已被移除。允许使用任何非空字符串。

自定义加载器 ​

图标组件现在支持自定义图标加载器,你可以使用以下函数之一进行定义:

  • setCustomIconLoader()。
  • setCustomIconsLoader()。

它的作用是什么?

  • 从自定义源加载图标,而非使用 Iconify API。
  • 自定义图标。

目前,新的 Nuxt Icon 组件正使用它在 Nuxt 应用中加载自定义图标。

请参阅 Iconify Icon 组件文档。

Penpot 的 Iconify 插件 6 Dec ​

Penpot 的 Iconify 插件现已可用

请参阅 Penpot 的 Iconify 插件文档。

Penpot 的 Iconify:主页

浏览图标的新网站 1 Dec ​

经过数月的辛勤工作,Iconify 图标集网站 已全面重建。

全新的图标集网站现已上线。由 Nuxt 驱动!

有哪些更新?

  • 界面更简洁,专注于开发者体验。告别色彩过载。
  • 为每个图标集展示更多示例。
  • 收藏图标集,自定义列表。
  • 搜索功能仅搜索当前可见的图标集:收藏的图标集、图标集列表或已筛选的图标集。
  • 提供更优质的图标代码示例。

新 Logo 30 Nov ​

旧 Logo 只是一个临时方案。它本应在很久以前就被一个合适的独特标志所取代,但由于 时间紧迫和缺乏灵感(设计独特的标志真的非常难!),我们花了数年时间才构思出 新 Logo。

新 Logo 终于准备就绪。

多年来,Iconify 项目已成为开源图标的家园。 许多开发者和设计师在日常工作流程中使用 Iconify 来寻找最优质的开源图标。

新 Logo 代表一个房屋图标,以独立的线条形式呈现。

Figma 插件重写 23 Oct ​

适用于 Figma 的 Iconify 插件新版本现已上线!

您可以从 Figma 官网的 Iconify 插件页面 进行安装。

这是一次完全重写,而非小幅更新。插件中采用的新 UI 也将很快应用于全新的 Iconify 网站。

主要新功能:

  • 更出色的 UI 和 UX。
  • 图标集的高级筛选功能。
  • 收藏图标集与自定义图标集列表。
  • 每个图标集的详细许可信息,搜索结果中的图标也会同步显示。
  • 浏览图标时无需再翻页。
  • 快速导入按钮。
  • 支持颜色样式(仅限纯色)。
  • 更精准的拖放操作。

Figma 插件预览 22 Oct ​

Figma 的 Iconify 插件已重新设计。

不过,它尚未正式上线。还需要更多测试。

您可以从 GitHub 仓库下载并安装该插件。

此外,该插件的旧版本已备份在仓库的 archive/v3-dist 分支中,因此在新版本上线后,您仍可使用旧版本。

有关更多详细信息和截图,请参阅插件重新设计页面。

Iconify 包语法更新 1 Sep ​

Iconify 包 @iconify-json/* 使用 JSON 文件来存储数据。

此前,JSON 文件使用旧的 assert 语法进行导入:

jsimport icons from './icons.json' assert { type: 'json' };

现在所有包均使用新的 with 语法:

jsimport icons from './icons.json' with { type: 'json' };

所有运行时均支持新语法。对于 Node.js,你需要 18 或更高版本。

如果你正在使用 Node 16 或更早版本,建议进行升级。旧的导入语法已被 Node 弃用 并即将移除,因此继续使用旧语法已不可行。

UnoCSS 和 Unplugin Icons 更新 29 Jul ​

UnoCSS 和 Unplugin Icons 均已更新。

虽然这些库不属于 Iconify 项目的一部分,但它们共享相同的图标加载器,这些加载器包含在 Iconify Utils 包 中。

这是一次相当大的更新。

变更:

  • 修复了 scale 选项。详见下文。
  • cwd 选项现在可以是路径数组,从而便于在 monorepo 中搜索多个 node_modules 目录。
  • 为 customize 回调添加了两个参数,其中一个是可变的图标数据。这允许自定义图标内容。

缩放 ​

在旧版本中,非方形图标的 scale 选项存在 bug:

  • 如果设置了该选项,会导致 width 与 height 相同,从而渲染出方形图标。
  • 如果未设置该选项,则会以正确的宽高比渲染图标。

虽然方形图标可能对细长图标有用,但对于宽图标,这会导致图标部分被裁剪,这显然是一个 bug。

在新版本中,scale 选项会正确缩放图标,保持图标的宽高比。

它现在也能与 customize 选项良好配合,将缩放应用于自定义的图标尺寸。

自定义 ​

在旧版本中,customize 选项几乎没什么用。它只能用于旋转或翻转图标,而且由于缺乏上下文,用户甚至不知道正在自定义哪个图标。

在新版本中,customize 函数新增了两个参数:

  • data,包含图标数据的 IconifyIcon 类型。
  • name,包含 "prefix:name" 格式图标名称的 string 类型。

图标名称让你知道正在自定义哪个图标。

图标数据是一个可变对象,你可以修改它来自定义图标。 你可以更改具有硬编码调色板的图标颜色、不透明度、动画计时,添加额外形状等等…… 你还可以通过调整 width、height、left 和 top 属性来调整图标大小或添加内边距。

有关图标数据格式,请参阅 IconifyIcon 类型。

示例 ​

将所有图标设为方形:

jspresetIcons({
   customizations: {
       customize: (defaultCustomizations, data, name) => {
           // 将图标设为方形
           const width = data.width ?? 16;
           const height = data.height ?? 16;
           if (height > width) {
             // 设置宽度以匹配高度
             data.width = height;
             // 通过更改 viewBox 的左侧位置使图标水平居中
             data.left = (data.left ?? 0) - (height - width) / 2;
           }
           
           return defaultCustomizations
       },
   }
})

更改颜色:

jspresetIcons({
   customizations: {
       customize: (defaultCustomizations, data, name) => {
           if (name === 'twemoji:blue-square') {
               // 将蓝色方块变为红色方块
               data.body = data.body.replaceAll('#55ACEE', '#e83933')
           }
           
           return defaultCustomizations
       },
   }
})

如果某些功能未正常工作,别忘了你始终可以使用 console.log(data) 来查看图标数据。

Iconify for Tailwind CSS 更新 28 Jul ​

适用于 Tailwind CSS 的 Iconify 插件 迎来了一次小幅更新:

  • 插件 addIconSelectors() 现已支持渲染非正方形图标。

请参阅 addIconSelectors 插件尺寸与颜色文档。

Iconify for React 5.0.0 30 May ​

适用于 React 的 Iconify 图标组件的新主版本已发布。

变更:

  • 使用现代 React Hooks 重写。
  • 支持 Next.js(作为纯客户端组件)。
  • 软件包默认使用 ES 模块,同时也支持 CommonJS。
  • 新增 ssr 属性,与近期 Vue 组件的更新类似。

请参阅组件文档。

Iconify for Tailwind CSS 重大更新 13 May ​

Iconify 的 Tailwind CSS 插件 迎来了重大更新:

  • 软件包新增了一个插件:addIconSelectors()。
  • 现在您可以自定义所有图标。

自定义选项 ​

新的 customise 选项允许您更改图标的内容。

它有什么用?

  • 您可以更改使用描边的图标中的 stroke-width。
  • 您可以更改使用硬编码调色板的图标(例如表情符号)中的颜色。
  • 您可以更改动态图标中的动画持续时间。
  • 您可以更改半透明元素的不透明度。
  • 您可以向图标添加额外的形状。

……等等。您可以完全控制 SVG 内容。

请参阅自定义选项文档。

新插件 ​

新的 addIconSelectors() 插件取代了旧的 addCleanIconSelectors() 插件,不过旧插件仍然可用。

使用示例:

html<span class="iconify ph--alarm-duotone"></span>
<span class="iconify-color fluent-emoji-flat--alarm-clock"></span>
<span class="iconify carbon--edit-off"></span>

新插件有哪些优势?

请参阅Tailwind CSS 新插件文档。

Iconify for React 重写 27 Apr ​

React 的 Iconify 图标组件已重写。

新版本已发布为 "5.0.0-beta.1"。你可以通过安装 @iconify/react@next 来使用它。

变更:

  • 使用现代函数式 React 重写。旧版组件仍使用类组件。
  • 修复了 TypeScript 错误。
  • 添加了 ssr 属性,与近期 Vue 组件的更新类似。

SSR 属性 ​

新属性 ssr 启用后,如果图标数据可用,将使图标立即渲染,且不会出现闪烁。

jsx<Icon icon="mdi:home" ssr={true} />

为什么默认不启用? ​

在 SSR 中渲染动态加载的内容比较棘手。 当页面进行水合时,服务器和客户端渲染的内容必须一致。 为避免出现问题,Iconify 图标组件在组件挂载之前不会渲染任何内容,而挂载发生在水合完成之后。

何时使用? ​

新属性将在数据可用时立即渲染图标,无论组件是否已挂载。

在 SSR(服务器端渲染,如 Next)中使用时应谨慎。 在渲染组件之前,请确保服务器和客户端上都有可用的图标数据。

如果你不使用 SSR,可以安全地使用该属性来强制图标更快渲染,因为不存在水合过程。 当图标数据可用时,它将立即渲染图标。

或者,为了绝对安全,请使用 Iconify Icon Web 组件。无论是否使用 SSR,它都可以安全使用。

Iconify API 3.1.0 26 Apr ​

Iconify API 3.1.0 版本已发布至 NPM 和 Docker。

修复了一个导致名为 "constructor" 的图标无法正确显示的 bug(代码中某处忘记为对象使用 null 构造函数)。

Figma 插件预览 25 Apr ​

Figma 新版 Iconify 插件的预览版现已完全可用。

所有功能与页面均运行正常。

您可以从 GitHub 仓库下载并安装该插件。

此外,该插件的旧版本已备份至仓库的 archive/v3-dist 分支中,因此在新版本正式上线后,您仍可使用旧版本。

Iconify for Vue 4.1.2 19 Apr ​

Vue 的 Iconify 图标组件 已更新。

4.1.2 版本新增了布尔属性:ssr。

如果启用,只要图标数据可用,图标将立即渲染,不会出现闪烁。

vue<Icon icon="mdi:home" :ssr="true" />

为什么默认不启用? ​

在 SSR(服务端渲染)中渲染动态加载的内容比较棘手。 当页面进行水合(hydration)时,服务端和客户端渲染的内容必须保持一致。 为了避免出现问题,Iconify 图标组件在组件挂载之前不会渲染任何内容,而挂载发生在水合完成之后。

何时使用它? ​

无论挂载状态如何,只要数据可用,新属性就会立即渲染图标。

在 SSR(服务端渲染,如 Nuxt)中使用时应格外小心。 在渲染组件之前,请确保服务端和客户端都已获取到图标数据。

如果你没有使用 SSR,可以安全地使用该属性来强制图标更快渲染,因为不存在水合过程。 只要图标数据可用,它就会立即渲染图标。

或者,为了绝对安全,请使用 Iconify Icon Web 组件。无论是否使用 SSR,它都可以安全使用。

Figma 插件预览 18 Apr ​

Figma 新版 Iconify 插件的预览版现已可用!

这是一个完全重写的版本,基于 Vue 构建。

新功能简要列表:

  • 更紧凑的 UI,在小屏幕上使用更加便捷。
  • 提供图标集高级筛选、收藏图标集以及详细的许可信息。
  • 图标列表现已支持滚动,您不再需要使用分页。
  • 拖放操作更加精准。
  • 更好地处理图标尺寸。替换图标时,新图标将以相同尺寸导入。新图标将作为小图标导入。
  • 更好地处理动态图标。由于 Figma 不支持动画,因此在导入图标前会正确剥离动画效果。

您可以从 GitHub 仓库下载并安装该插件。

Iconify Icon 2.1.0 15 Apr ​

Iconify Icon Web 组件 2.1.0 版本已发布。

Iconify Icon Web 组件使用 IntersectionObserver 来检测图标何时可见。 如果不可见,则不会渲染该图标。 不渲染不可见的图标可大幅提升页面性能,尤其是在使用动画图标时。

新版本添加了 noobserver 属性,可用于禁用 IntersectionObserver:

html<iconify-icon icon="line-md:bell-alert-loop" noobserver></iconify-icon>

将图标下载为 PNG 9 Apr ​

在 Iconify 图标集 网站上,您现在可以将图标下载为 PNG 格式!

  • 您可以自定义 PNG 尺寸,默认为 512x512。
  • 动画 SVG 中的动画效果会被自动移除。
  • 您可以下载和/或复制到剪贴板。
  • 网站会显示示例 PNG,您可以将其拖放至其他应用程序。它在界面中会缩小显示,但拖放时仍为完整尺寸。

截图

自定义图标描边宽度并移除动画 6 Feb ​

Iconify 图标集 网站已更新。

您现在可以:

  • 更改使用描边的图标的描边宽度。
  • 移除动态 SVG 中的动画。

如果您想在设计工具中使用图标,移除 SVG 中的动画将非常有帮助。 目前,所有设计工具均不支持动态 SVG,导入动态图标通常会导致图标损坏或显示为空白。

通过为设计工具移除动画,您可以在设计中使用静态图标,而在 HTML 中使用动态图标。

快速演示:

Iconify Icon 2.0.0 4 Feb ​

Iconify Icon Web 组件 2.0.0 版本已发布。

请参阅此前发布的 Iconify Icon 2.0.0 Beta 版公告 以获取变更列表。

弃用旧版软件包 ​

是时候弃用一些不再适用的旧版软件包了:

这些旧的图标组件将不再更新,其源代码已归档:

  • Vue 2(Vue 3 早已发布,继续支持旧版本已无意义)
  • Ember(Ember 框架已过时)
  • SVG Framework(最古老的组件,已被 IconifyIcon Web 组件取代)

您仍可在旧项目中使用它们,但建议考虑升级到现代替代方案,例如 Web 组件。

自定义动画 SVG 的速度 3 Feb ​

Iconify 图标集 网站已更新。

现在您可以更改动画 SVG 的播放速度。

它目前还不是一个完整的编辑器,您只能通过乘以动画时长值来减慢或加快动画速度。

您可以将其用于任何动画图标,例如来自以下图标集的图标:

快速演示:

Iconify Icon 2.0.0-beta.1 29 Jan ​

Iconify Icon Web 组件 2.0.0 beta 1 版本已发布。

此版本在 SVG 性能方面带来了巨大提升:它使用 IntersectionObserver 来检查 图标对当前访问者是否可见,仅在图标可见时才进行渲染。

作为一个不错的附带效果,带有淡入动画的图标会在其进入视口时开始播放动画。

新版本已应用于本网站以及全新的 Iconify 图标集网站。

要安装 beta 版本,请使用 @next 标签:

npm install --save iconify-icon@next

新增 "observe" 属性 ​

您可以通过更改 observe 属性来改变观察器的行为。

默认情况下,该功能是启用的。如需禁用,请将 observe 设置为 "false"。

html<iconify-icon icon="mdi:home" observe="false"></iconify-icon>

在 IconifyIconHTMLElementClass 的实例中,您可以使用 observe 属性来设置/获取布尔值。

用于浏览图标的新网站 28 Jan ​

经过数月的辛勤工作,Iconify 图标集网站 已完全重建。

新版图标集网站现已上线。它现在由 Nuxt 驱动!

有哪些新功能?

  • 图标集的高级筛选功能。
  • 图标的无限智能滚动,显示尽可能多能适配您浏览器窗口的图标。
  • 提供多种格式的更优图标代码示例。
  • 您可以自定义图标中的所有颜色。如果图标包含半透明元素,您还可以自定义不透明度。
  • 深色/浅色模式,在浏览带有硬编码颜色的图标时非常实用。

更多详情和截图:

主页

图标的无限智能滚动 ​

在浏览任何图标集或搜索图标时,图标会占满所有可用的浏览器空间。要显示更多或更少的图标,您只需调整浏览器窗口的大小即可。

您不再需要点击分页来查看更多图标,只需滚动即可。不过,如果您想快速跳转到最后一页,分页功能仍然可用。

主页

图标提示 ​

在浏览搜索结果时,图标会显示有用的提示信息,包括图标尺寸和图标集许可证。

主页

在浏览图标集时不会显示许可证信息,它位于图标集信息中图标的上方。

高级搜索 ​

您现在可以按许可证、网格和调色板筛选图标集。

如果您筛选了图标集,搜索功能将提供一个选项,仅在当前可见的图标集中搜索图标。

主页

更优的代码示例 ​

图标的代码示例已得到改进。

您现在可以复制或下载多种格式和软件包的代码示例。

主页

Iconify 图标组件 ​

旧网站展示了 Iconify 图标组件的示例,而新网站则专注于完整的组件,您可以将其添加到应用程序中,无需额外的依赖项。

虽然 Iconify 图标组件非常方便,但它们需要从 API 加载图标数据,运行成本非常高,目前的 GitHub 赞助 根本无法覆盖。远远不够。 因此,最好鼓励使用不依赖 API 的替代方案。

此外,如果您自定义图标(例如更改不透明度或硬编码颜色),Iconify 图标组件并没有按需执行这些操作的代码。

Iconify 图标组件的代码示例仍然可用。

自定义颜色和不透明度 ​

您现在拥有更多自定义图标代码的选项:

  • 您可以更改任何图标中的任意颜色,而不仅仅是 currentColor。
  • 包含透明元素的图标的不透明度。

主页

复制图标名称 ​

如果您只需要在项目中使用的图标名称(例如用于 Iconify 图标组件,或用于 UnoCSS 或 Tailwind CSS 中的类名),您现在可以选择图标名称的格式。

将图标名称复制到剪贴板的按钮位于图标名称下拉菜单旁边。

主页

所有更改都会保存在浏览器存储中,因此您无需多次更改设置。

面向未来的设计 ​

此次全新重建最棒的一点是,新代码完全可复用。

该代码库将用于:

  • 更新 Figma 的 Iconify 插件。
  • 为各种设计和开发软件创建新插件。