Skyroc UI
通用

Icon

基于 Iconify 渲染 SVG 图标的通用图标组件

Icon 用于通过 Iconify 图标名渲染 SVG 图标。组件直接封装 @iconify/reactIcon,默认宽高为 1.25em,可以随文本字号缩放,也可以通过 widthheight 显式设置尺寸。

import { Icon } from '@skyroc/web-ui';

何时使用

  • 需要在按钮、菜单、提示或表单中展示语义图标。
  • 需要统一使用 Iconify 图标集,例如 lucide:homemdi:accountri:settings-3-line
  • 图标需要跟随文字颜色或主题色变化。
  • 如果是纯图标按钮,优先使用 ButtonIcon;如果需要在按钮内组合文字和图标,使用 Button 的 leadingtrailing 插槽。

基础用法

通过 icon 传入 Iconify 图标名称,格式通常为 prefix:name

Preview
Code
Loading...

尺寸

默认尺寸为 1.25em,会跟随当前字号。也可以通过 widthheight 设置固定尺寸。

Preview
Code
Loading...

颜色

Icon 支持通过 className 使用主题色,也支持通过 color 传入 CSS 颜色值。颜色只对可重设颜色的单色图标生效,带固定调色板的图标不会被强制改色。

Preview
Code
Loading...

动画与变换

Icon 透传 Iconify 的变换属性和 SVG 属性,可以使用 rotateflipinlineclassName 等能力。

<Icon
  className="animate-spin text-primary"
  icon="lucide:loader-circle"
/>

API

Icon

通用属性参考:继承 @iconify/react 的 Icon props,并支持常规 SVG 元素属性。

属性说明类型默认值
icon*Iconify 图标名称或图标数据对象string | icon data-
width图标宽度string | number | null'1.25em'
height图标高度string | number | null'1.25em'
color图标颜色,支持任意 CSS 颜色值string-
className自定义 class,可用于颜色、尺寸、动画等样式string-
style内联样式,来自 svg 元素属性style object-
inline是否按内联图标方式对齐文本基线booleanfalse
rotate旋转图标,可传角度字符串或四分之一圈数值string | number-
flip翻转图标'horizontal' | 'vertical' | 'horizontal,vertical'-
mode渲染模式'style' | 'bg' | 'mask' | 'svg'-
fallback图标加载前或加载失败时展示的内容ReactNode-
onLoad图标数据加载完成时触发(name: string) => void-
ssr是否启用 Iconify 的服务端立即渲染模式boolean-
id图标唯一 id,也会透传给底层 SVGstring-
aria-label无文字说明的语义图标应提供可访问名称string-

类型

IconProps

Icon 组件属性。来自 @iconify/react 的 IconProps,并由本组件补充默认 width 和 height。

字段类型说明
icon*string | icon dataIconify 图标名称或图标数据对象。
widthstring | number | null图标宽度。默认值为 1.25em。
heightstring | number | null图标高度。默认值为 1.25em。
colorstring图标颜色。
classNamestring自定义 class。
stylestyle object内联样式。
inlineboolean是否按内联图标方式对齐文本基线。
rotatestring | number旋转图标。
flip'horizontal' | 'vertical' | 'horizontal,vertical'翻转图标。
mode'style' | 'bg' | 'mask' | 'svg'Iconify 渲染模式。
fallbackReactNode加载前或加载失败时的回退内容。
onLoad(name: string) => void图标数据加载完成回调。
ssrboolean是否启用 Iconify 服务端立即渲染模式。
...svgPropssvg element props透传常规 svg 元素属性。

On this page