Skip to content

SvgIcon 本地 SVG 图标

使用 UnoCSS Icons 加载和使用本地 SVG 图标。

简介

项目通过 @unocss/preset-icons 实现本地 SVG 图标的加载和使用。只需将 SVG 文件放入指定目录,即可在项目中通过 CSS 类名使用图标。

基本用法

1. 添加 SVG 图标

访问 iconfont 下载所需的 SVG 图标,并将其复制到 src/assets/icons 目录下。

命名规范

  • 使用小写字母命名
  • 多个单词使用连字符分隔
  • 例如:home.svguser-info.svgshopping-cart.svg

2. 使用图标

下载一个名为 home.svg 的图标后,可以通过 i-svg:图标名称 调用:

vue
<template>
  <!-- 默认尺寸 1em,颜色 currentColor,继承父级的文本颜色 -->
  <div class="i-svg:home"></div>

  <!-- 自定义颜色和尺寸 -->
  <div class="i-svg:home text-xl text-blue-500"></div>
</template>

自定义样式

设置大小

使用 UnoCSS 的文本大小类名控制图标尺寸:

vue
<template>
  <!-- 小尺寸 -->
  <div class="i-svg:home text-sm"></div>

  <!-- 中等尺寸 -->
  <div class="i-svg:home text-base"></div>

  <!-- 大尺寸 -->
  <div class="i-svg:home text-2xl"></div>

  <!-- 超大尺寸 -->
  <div class="i-svg:home text-4xl"></div>
</template>

设置颜色

图标默认继承父级文本颜色(currentColor),可以通过文本颜色类名修改:

vue
<template>
  <!-- 蓝色图标 -->
  <div class="i-svg:home text-blue-500"></div>

  <!-- 红色图标 -->
  <div class="i-svg:home text-red-500"></div>

  <!-- 绿色图标 -->
  <div class="i-svg:home text-green-500"></div>

  <!-- 自定义颜色 -->
  <div class="i-svg:home" style="color: #409EFF"></div>
</template>

组合样式

vue
<template>
  <div class="flex items-center gap-2">
    <div class="i-svg:user text-xl text-blue-500"></div>
    <span>用户中心</span>
  </div>
</template>

使用场景

菜单图标

vue
<template>
  <el-menu-item index="1">
    <div class="i-svg:dashboard text-xl"></div>
    <span>仪表盘</span>
  </el-menu-item>
</template>

按钮图标

vue
<template>
  <el-button>
    <div class="i-svg:plus text-base"></div>
    <span>新增</span>
  </el-button>
</template>

页面标题

vue
<template>
  <div class="flex items-center gap-2">
    <div class="i-svg:setting text-2xl text-primary"></div>
    <h1>系统设置</h1>
  </div>
</template>

实用技巧

1. 图标库管理

建议在 src/assets/icons 目录下创建子目录分类管理图标:

src/assets/icons/
├── menu/           # 菜单图标
│   ├── dashboard.svg
│   ├── system.svg
│   └── user.svg
├── action/         # 操作图标
│   ├── add.svg
│   ├── edit.svg
│   └── delete.svg
└── common/         # 通用图标
    ├── search.svg
    ├── refresh.svg
    └── close.svg

使用时需要包含子目录路径:

vue
<div class="i-svg:menu/dashboard"></div>
<div class="i-svg:action/add"></div>
<div class="i-svg:common/search"></div>

2. SVG 优化

使用 SVGO 或在线工具优化 SVG 文件,减小文件体积:

  • 移除无用的元素和属性
  • 优化路径数据
  • 移除注释和元数据

3. 图标预览

在开发环境中,可以创建一个图标预览页面,展示所有可用的图标。

常用图标资源

注意事项

1. 图标格式

  • 仅支持 SVG 格式
  • 建议使用单色图标
  • 确保 SVG 使用 currentColor 作为填充色

2. 命名规范

  • 使用英文命名
  • 避免使用特殊字符
  • 保持命名简洁明了

3. 性能优化

  • 及时清理未使用的图标
  • 避免使用过大的 SVG 文件
  • 复杂图标建议转为图片格式

相关链接

基于 MIT 许可发布