Skip to content

🚀 Icon 革命:用 UnoCSS Icons Preset 告别图标管理噩梦!

2026 年 2 月 11 日

📌 一、痛点直击:你的 Icon 管理是不是这样的?

在前端开发中,Icon 管理一直是个令人头疼的问题:

痛点具体表现
样式难找需要翻遍各种图标库,下载、筛选、对比,浪费大量时间
样式调整困难图标颜色、大小需要额外写 CSS,甚至需要设计师重新出图
项目臃肿传统图标库动辄几十 MB,即使只用几个图标也要全量引入
维护成本高图标分散在各个文件夹,命名不规范,难以统一管理
打包体积大大量未使用的图标也被打包进项目,影响加载速度

🎯 二、终极解决方案:UnoCSS Icons Preset

什么是 UnoCSS Icons Preset?

UnoCSS 是一个即时按需的原子化 CSS 引擎,而 Icons Preset 是其强大的图标预设插件。它让你能够:

  • 零配置使用 100,000+ 图标
  • 纯 CSS 渲染,无需额外组件
  • 动态调整 颜色、大小、旋转等样式
  • 按需打包,只打包你用到的图标
  • 支持主流图标集:Iconify、FontAwesome、Material Design 等

相关资源:


🛠️ 三、实战操作:5 分钟上手指南

步骤 1:安装依赖

bash
# npm
npm install -D @unocss/preset-icons

# yarn
yarn add -D @unocss/preset-icons

# pnpm
pnpm add -D @unocss/preset-icons

步骤 2:配置 UnoCSS

uno.config.tsvite.config.ts 中配置:

typescript
import { defineConfig, presetUno } from 'unocss'
import presetIcons from '@unocss/preset-icons'

export default defineConfig({
  presets: [
    presetUno(),
    presetIcons({
      // 配置项(按需配置,或使用默认配置)
      scale: 1.2,                    // 缩放比例
      warn: true,                     // 警告未找到的图标
      extraProperties: {
        'display': 'inline-block',
        'vertical-align': 'middle',
      },
      collections: {
        // 自定义图标集合
      },
    }),
  ],
})

步骤 3:在项目中引入

Vite 项目:

js
// main.ts
import 'uno.css'

vite.config.ts:

js
import UnoCSS from 'unocss/vite'

export default {
  plugins: [
    UnoCSS(),
    // ... 其他插件
  ],
}

🎨 四、使用技巧:一行代码搞定图标

安装图标集合

bash
# npm
npm install -D @iconify-json/bxl

# yarn
yarn add -D @iconify-json/bxl

# pnpm
pnpm add -D @iconify-json/bxl

基础用法

html
<div class="i-bxl:baidu"></div>

样式调整

html
<!-- 调整大小 -->
<div class="i-bxl:baidu text-18px"></div>

<!-- 调整颜色 -->
<div class="i-bxl:baidu text-red-500"></div>

<!-- 旋转和动画 -->
<div class="i-bxl:baidu rotate-45"></div>

💡 五、高级玩法

自定义图标集合

typescript
import { FileSystemIconLoader } from '@unocss/preset-icons'

presetIcons({
  collections: {
    // 从本地 SVG 文件加载
    'my-icons': FileSystemIconLoader(
      './src/assets/icons',
      svg => svg.replace(/^<svg /, '<svg fill="currentColor" ')
    ),
  },
})

使用本地 SVG

html
<!-- 使用自定义图标 -->
<div class="i-my-icons:custom-logo w-12 h-12 text-primary"></div>

📊 六、性能对比

方案打包体积开发体验灵活性
传统图标库500KB+⭐⭐⭐⭐
SVG Sprite100KB+⭐⭐⭐⭐⭐⭐
IconFont200KB+⭐⭐⭐⭐
UnoCSS Icons<10KB⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

✅ 七、总结

UnoCSS Icons Preset 的核心优势:

  1. 🎯 极简集成:3 步搞定,无需复杂配置
  2. 🚀 极致性能:按需打包,体积最小化
  3. 🎨 灵活定制:颜色、大小、动画随心所欲
  4. 📦 海量资源:100,000+ 图标任你挑选
  5. 💪 类型安全:完美支持 TypeScript

告别繁琐的图标管理,拥抱高效开发! 🎉