Skip to content

Icon 图标 ​

简介 ​

Cosey 中所有展示图标的地方都会使用 Icon 组件,包括标签栏、菜单栏和页面其他地方。

图标数据来源有四个,一是 iconify,二是本地的 svg 文件,三是图标字体,四是直接使用图标组件。

iconify ​

下面演示如何安装 element-plus 官方图标集。

先安装 @iconify-json/ep。

再进行注册:

ts
import { icons as epIcons } from '@iconify-json/ep';
import { addIconifyIcon } from 'cosey/components';

addIconifyIcon('ep', epIcons);

使用:

tsx
<Icon name="ep:avatar" />

本地 svg 图标 ​

如果 iconify 不能满足需求,觉得引入的包太大,或者想引入定制性的图标。可以将 svg 文件放在 src/assets/icons 目录。

create-cosey 在 vite.config.ts 配置了 vite-plugin-svg-icons 插件,会将此目录下的 svg 文件自动打包在一起。

假如此目录下有一个 vite.svg 文件,可以这样使用:

tsx
<Icon name="svg:vite" />

name 以 svg: 开头的图标就是引用 src/assets/icons 目录下的图标。

字体图标 ​

Icon 组件也支持字体图标。

先加载字体图标资源,可以直接在 html 引入:

html
<link
  rel="stylesheet"
  href="https://netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
/>

也可以下载到本地并导入:

main
js
import '@/style/font-awesome.min.css';

然后就可以使用了:

tsx
<Icon name="fa fa-tachometer" />

直接使用图标组件 ​

前面三种方式都是通过 name 指定图标。如果手里已经有一个图标组件,可以直接放进 Icon 的默认插槽——richtext-icons 是本库的依赖,Cosey 内部组件(如 Close)就是用它来渲染图标的:

ts
import { RtiClose } from 'richtext-icons';
tsx
<Icon>
  <RtiClose />
</Icon>

传了默认插槽后 name 会被忽略,Icon 只负责外层容器,尺寸和颜色仍由它统一控制:图标组件按 1em 设置宽高、用 currentColor 作为颜色,就会自动跟随 Icon 的 size 与当前文字颜色。

代码演示 ​

Iconify ​

SvgIcon ​

FontIcon ​

图标组件 ​

API ​

IconProps ​

属性描述类型默认值
name图标名称string-
size图标尺寸'sm' | 'md' | 'lg' | 'xl' | number | string-

IconSlots ​

插槽描述属性
default自定义图标内容,可传入任意图标组件-

基于 MIT 许可发布