--- localeCode: zh-CN order: 10 category: 基础 title: Icon 图标 icon: doc-icons brief: 语义化的矢量图形。 --- ## 图标列表 ```icon ``` ## 代码演示 ### 如何引入 ```jsx import import Icon, { IconHome } from '@douyinfe/semi-icons'; ``` ### 基础使用 从`@douyinfe/semi-icons`包中引入图标 ```jsx live=true import React from 'react'; import { IconHome } from '@douyinfe/semi-icons'; () => ; ``` ### 旋转 从`@douyinfe/semi-icons`包中引入图标,自带尺寸、旋转、spin功能 ```jsx live=true import React from 'react'; import { IconHome, IconEmoji, IconSpin } from '@douyinfe/semi-icons'; () => (
) ``` ### 尺寸 > 可以改变`font-size`来更改图标大小 > Icon组件封装了size属性,可以更方便地定义图标尺寸,支持 `extra-small` (8x8),`small` (12x12), `default` (16x16), `large` (20x20), `extra-large` (24x24)。 ```jsx live=true import React from 'react'; import { IconSearch, IconHelpCircle, IconAlertCircle, IconMinusCircle, IconPlusCircle, IconPlus, IconRefresh } from '@douyinfe/semi-icons'; () => { const types = [, , , , , , ]; const sizes = ['extra-small', 'small', 'default', 'large', 'extra-large']; let icons = types.map((type, i) => { return
{sizes.map(size => React.cloneElement(type, {size, key:size}))}
}) return icons; } ``` ### 颜色 图标会自动继承外部容器 CSS 的 `color` 属性 你还可以通过给 Icon 设置 style props 来修改图标的颜色。 ```jsx live=true import React from 'react'; import { IconLikeHeart, IconFlag, IconLock, IconUnlock } from '@douyinfe/semi-icons'; () => (

) ``` ### 自定义图标 可以使用自定义图标传入Icon组件 Icon组件支持size、rotate、spining等属性 ```jsx live=true import React from 'react'; import { Icon } from '@douyinfe/semi-ui'; () => { function CustomIcon(){ return } return (
} /> } rotate={180} />
) } ``` ### 使用svgr将svg文件转成ReactComponent 如果 Semi 提供的图标不足以满足业务需求,你也可以通过@svgr/webpack引入自定义图标,并以React组件形式使用 ``` // webpack.config.js { test: /\.svg$/, use: ['@svgr/webpack'], } import { Icon } from '@douyinfe/semi-ui'; import StarIcon from './star.svg'; } /> ``` ## API参考 ### Icon | 属性 | 说明 | 类型 | 默认值 | |-------|-------------|-----------------|--------| | className | 类名 | string | 无 | | onClick | 单击图标的回调事件 | (e: Event) => void | 无 | | onMouseDown | 鼠标按钮按下的回调事件 >=v1.21 | (e: Event) => void | 无 | | onMouseEnter | 进入图标的回调事件 | (e: Event) => void | 无 | | onMouseLeave | 离开图标的回调事件 | (e: Event) => void | 无 | | onMouseMove | 移动鼠标的回调事件 >=v1.21 | (e: Event) => void | 无 | | onMouseUp | 鼠标按钮抬起的回调事件 >=v1.21 | (e: Event) => void | 无 | | rotate | 旋转度数 | number | | | size | 尺寸,支持`extra-small`,`small`, `default`, `large`, `extra-large` | string | `default` | | spin | 旋转动画 | boolean | | | style | 图标样式 | CSSProperties | 无 | | svg | 图标内容 | ReactNode | 无 |