图标
关于图标的管理
- 项目的图标主要由
@components/icon
组件提供,建议统一在该组件内部管理,以便于统一管理和维护。 - 如果你使用的是
Vscode
,推荐安装 Iconify IntelliSense 插件,可以方便的查找和使用图标。
项目中有以下多种图标使用方式,可以根据实际情况选择使用:
Iconify 图标 推荐
集成了 iconify 图标库
使用
<script setup lang="ts">
import { Icon } from '@components/icon';
</script>
<template>
<Icon icon="ant-design:alert-outlined" />
</template>
Svg 图标 推荐
没有采用 Svg Sprite 的方式,而是直接引入 Svg 图标,
新增
可以在 src/components/icon/svg
目录下新增图标文件test.svg
, 然后就可以使用Icon组件中的icon属性引入:
使用
<template>
<div>
<Icon icon="svg:test" />
<Icon icon="svg:gitee" />
<Icon icon="svg:download" />
</div>
</template>
<script setup lang="tsx">
import { Icon } from '@/components/icon'
</script>
离线图标
可通过修改.env
配置启用离线图标
# 是否启用离线图标
VITE_APP_ICON_OFFLINE=true
注:目前只默认增加了下面几组图标库,如果需要其他图标库,请在该文件上src\utils\load-icon.ts
自行添加。
import { addCollection } from '@iconify/vue'
import AntDesignIcons from '@iconify/json/json/ant-design.json'
import CarbonIcons from '@iconify/json/json/carbon.json'
import IcIcons from '@iconify/json/json/ic.json'
import LogosIcons from '@iconify/json/json/logos.json'
import LucideIcons from '@iconify/json/json/lucide.json'
import EP from '@iconify/json/json/ep.json'
addCollection(AntDesignIcons)
addCollection(LucideIcons)
addCollection(CarbonIcons)
addCollection(IcIcons as any)
addCollection(LogosIcons as any)
addCollection(EP)
IconPicker 图标选择器
src/components/form/components/icon-picker.vue
IconPicker 是一个图标选择器组件,用于在页面中选择图标。这里对原Art Design Pro的ArtIconSelector
进行了改造,使其支持更多图标库。目前支持Iconify图标库、本地Svg图标、原内置图标三种方式,其中使用.env
下的配置可支持更多的Iconify图标组:
# 图标前缀-提供给icon-picker选择的图标,这里的值建议和src/utils/load-icon.ts中引入的一致
VITE_APP_ICONIFY_PREFIX = ep,ant-design,carbon,ic,logos,lucide