前端字体图标配置
框架支持三种图标使用方式:Element Plus 内置图标、阿里巴巴在线图标库、本地 SVG 图标,满足不同场景的图标需求。
Element Plus 图标
Element Plus 提供了丰富的内置图标,可以直接在项目中使用。
使用方式
访问 Element Plus 图标库 选择所需图标,使用 <el-icon> 组件包裹图标组件。
<el-input
type="text"
:placeholder="$t('message.account.accountPlaceholder1')"
v-model="ruleForm.userName"
clearable
autocomplete="off"
>
<template #prefix>
<el-icon class="el-input__icon"><ele-User /></el-icon>
</template>
</el-input>
💡图标选择
Element Plus 图标库提供了常用的基础图标,适合快速开发和保持统一风格。
本地 SVG 图标
本地 SVG 图标适合离线部署、私有图标管理和需要跟随项目一起版本控制的场景。
使用前说明
- 项目会自动读取
pigx-ui/src/assets/icons/ 目录下的 .svg 文件
- 支持在
icons 目录下继续按业务创建子目录
- 图标引用名只取文件名,不包含目录名
💡适用场景
需要离线访问、自定义品牌图标,或希望图标资源跟随代码一起管理时,优先使用本地 SVG 图标。
配置本地图标
- 访问 iconfont 官网 或其他图标来源,下载所需的
.svg 文件
- 将图标文件放到
pigx-ui/src/assets/icons/ 目录中
- 新增、删除或重命名图标后,重启前端项目,让图标重新注册
⚠命名规则
组件通过 local-文件名 的方式引用图标。例如 gitee.svg 对应 local-gitee,ai/db.svg 对应 local-db。由于目录名不会参与生成图标名,不同目录下不要放置同名 SVG 文件。
菜单图标选择器
放在本地目录中的 SVG 图标,会自动出现在菜单图标选择器的 local 分组中,并根据文件名顺序加载。
使用本地图标
使用 local- 前缀加文件名加载本地图标:
<SvgIcon name="local-gitee" :size="30" />
<SvgIcon name="local-db" :size="24" color="#2970ff" />
阿里巴巴在线图标
阿里巴巴图标库提供了海量的图标资源,支持在线引用和自定义图标集。
创建图标项目
- 访问 iconfont 官网 并登录
- 创建新项目,设置
FontClass/Symbol 前缀 为 icon,Font Family 为 iconfont
- 添加所需图标到项目,生成在线链接
配置在线链接
在 /@/utils/setIconfont.ts 文件的 cssCdnUrlList 数组中添加生成的在线链接。
// 字体图标 URL
const cssCdnUrlList: Array<string> = [
'//at.alicdn.com/t/font_2298093_y6u00apwst.css',
'//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css',
];
⚠链接更新
每次在 iconfont 项目中添加或删除图标后,需要重新生成链接并更新配置文件。
在界面中使用
不同的图标库需要添加对应的前缀:
⚠前缀规则
iconfont(阿里巴巴素材库)需要添加 iconfont 前缀,如:iconfont xitongshezhi;font-awesome 需要添加 fa 前缀,如:fa xitongshezhi。
<!-- 使用 i 标签 -->
<i class="iconfont xitongshezhi"></i>
<!-- <i class="fa xitongshezhi"></i> -->
<!-- 使用 SvgIcon 组件 -->
<SvgIcon name="iconfont xitongshezhi"></SvgIcon>
<!-- <SvgIcon name="fa xitongshezhi"></SvgIcon> -->
SvgIcon 组件使用
SvgIcon 组件提供了统一的图标使用接口,支持局部注册和全局注册两种方式。
局部注册
在单个组件中使用时,需要先导入 SvgIcon 组件:
<!-- 页面上使用 -->
<SvgIcon :name="item.meta.icon" />
<script setup lang="ts" name="xxx">
import SvgIcon from '/@/components/svgIcon/index.vue';
</script>
全局注册
框架中使用全局注册方式,在 /@/utils/other.ts 的 elSvg 方法中注册:
// 全局注册
import SvgIcon from '/@/components/svgIcon/index.vue';
app.component('SvgIcon', SvgIcon);
注册后可以直接在页面中使用:
<!-- 基础使用 -->
<SvgIcon :name="item.meta.icon" />
<!-- 自定义大小和颜色 -->
<SvgIcon name="ele-Aim" :size="14" color="#333333" />
💡组件优势
使用 SvgIcon 组件可以统一管理图标,支持动态切换、自定义样式,代码更简洁易维护。
自定义引入本地图标
除了使用 SvgIcon 组件,也可以通过传统方式引入图标:
<!-- 使用 i 标签 -->
<i class="iconfont xitongshezhi"></i>
<!-- 使用 SvgIcon 组件 -->
<SvgIcon name="iconfont xitongshezhi"></SvgIcon>
进阶:阿里巴巴图标库离线使用
为了提高系统的稳定性和加载速度,可以将阿里巴巴在线图标库转换为本地离线使用。
下载图标资源包
点击下载 PIGX-UI 依赖的阿里巴巴图标
创建本地图标目录
mkdir -p pigx-ui/public/assets/iconfont
复制资源文件
将下载的资源包中的以下文件复制到 public/assets/iconfont/ 目录:
- iconfont.css
- iconfont.ttf
- iconfont.woff
- iconfont.woff2
修改配置文件
修改 src/utils/setIconfont.ts 文件中的图标引用路径:
const cssCdnUrlList: Array<string> = [
'/assets/iconfont/iconfont.css', // 本地图标文件
'/assets/styles/font-awesome.min.css',
];
验证
- 启动项目
- 检查图标是否正常显示
- 在断网情况下验证图标是否仍然可用
⚠文件路径
确保复制的文件名与代码中引用的路径完全一致。如果后续需要添加新图标,重复以上步骤更新本地图标文件即可。
✓离线优势
离线部署可以避免外部 CDN 服务不可用的风险,提升系统稳定性和加载速度,特别适合内网环境部署。