Icon

语义化的矢量图形。

设计文档(新窗口打开)

图标列表

默认的图标集 @chenzy-design/icons 包含面性、线性、AI 三套图标。面性图标、线性图标,以及 AI 图标中的单色图标默认不带颜色,可通过 css color 属性更改颜色。 AI 图标中的双色,多色图标有默认颜色,可以通过 fill 更改颜色。

@chenzy-design/icons-lab 为彩色图标集,需单独安装,不可改色。

@chenzy-design/icons 523 @chenzy-design/icons-lab 101

代码演示

如何引入

import { Icon } from '@chenzy-design/svelte';
import { IconHome } from '@chenzy-design/icons';
import { IconAvatar, IconCard } from '@chenzy-design/icons-lab';

基础使用

从@chenzy-design/icons包中引入图标

旋转

从@chenzy-design/icons包中引入图标,自带尺寸、旋转、spin功能

尺寸

可以改变font-size来更改图标大小

Icon组件封装了size属性,可以更方便地定义图标尺寸,支持 extra-small (8x8),small (12x12), default (16x16), large (20x20), extra-large (24x24),当size指定为inherit时,图标大小继承当前上下文字体大小

颜色

单色图标会自动继承外部容器 CSS 的 color 属性 你还可以通过给 Icon 设置 style props 来修改图标的颜色。


双色图标

双色图标可以通过 fill 属性设置颜色,支持 string 以及 string[]。

多色按钮

多色图标,当前的多色按钮可传入四个颜色。可以通过 fill 属性设置颜色,支持 string 以及 string[]。

自定义图标

可以使用自定义图标传入Icon组件。Icon组件支持 size、rotate、spin 等属性。React 的 svg={<CustomIcon />} 在本库映射为 svg={snippet}(svg 亦接受可信来源的 SVG 字符串,见下)。

使用 SVG 字符串作为图标源

Semi 通过 @svgr/webpack 把 svg 文件转成 ReactComponent;本库对应做法是以 Vite 的 ?raw 导入把 svg 文件读成字符串传给 svg prop(内部 {@html} 渲染,来源须可信)。提供 type 后根元素为 role="img" + aria-label,供屏幕阅读器读出;fill 可覆盖填充色。

<script>
  import { Icon } from '@chenzy-design/svelte';
  import star from './star.svg?raw';
</script>

<Icon svg={star} />

UnoCSS 图标(纯 class,本库补充)

文档站另内置一条不经过组件的图标路径:UnoCSS preset-icons 的 i-<图标集>-<图标名> class,可渲染任意 Iconify 图标。图标以纯 CSS 渲染,尺寸随 font-size、颜色随 currentColor;class 必须静态出现在源码中(构建期生成 CSS),a11y 需自理(装饰性加 aria-hidden,语义性加 role="img" + aria-label)。

API参考

Icon

属性说明类型默认值
class类名string无
fill双色,多色图标的填充颜色。具名 AI 图标(IconAI…Level2/3)支持 string 与 string[];<Icon> 基座上为 string(以 color 覆盖 currentColor 填充)string | string[]无
onclick单击图标的回调事件(原生事件透传)(e: Event) => void无
onmousedown鼠标按钮按下的回调事件(原生事件透传)(e: Event) => void无
onmouseenter进入图标的回调事件(原生事件透传)(e: Event) => void无
onmouseleave离开图标的回调事件(原生事件透传)(e: Event) => void无
onmousemove移动鼠标的回调事件(原生事件透传)(e: Event) => void无
onmouseup鼠标按钮抬起的回调事件(原生事件透传)(e: Event) => void无
rotate旋转度数number
size尺寸,支持inherit,extra-small,small, default, large, extra-largestringdefault
spin旋转动画boolean
style图标样式string无
svg图标内容:SVG 字符串({@html} 渲染,来源须可信)或自定义图标 Snippetstring | Snippet无
type图标语义类型,映射到 aria-label 与 cd-icon-{type} 类string无
children自定义图标内容(svg 未传时的备选插槽)Snippet无

Accessibility

ARIA

  • Icon 组件 role 为 img,它的 aria-label 默认为组件的文件名。例如 IconHome 的 aria-label 为 home,如果你有更好的语义化名字,可以通过 aria-label 传入。
  • Icon 内部的 svg 元素为装饰元素,默认设置了 aria-hidden 以不被屏幕阅读器阅读

设计变量

变量
默认值
用法
--cd-width-icon-extra-large 24px icon · 宽度特大尺寸
--cd-width-icon-extra-small 8px icon · 宽度特小尺寸
--cd-width-icon-large 20px icon · 宽度大尺寸
--cd-width-icon-medium 16px icon · 宽度medium
--cd-width-icon-small 12px icon · 宽度小尺寸
显示第 1 条-第 5 条,共 5 条
  • 1