跳到正文
贡献者

Icon 图标

统一图标组件,所有内置图标都需要通过 <mc-icon> 或组件的 icon 属性生效。

命名规则:普通图标 mc-xxx 可改色;按键映射 mc-key-xxx 与彩色图标 mc-x-xxx 保持原色。

类型命名是否可改色说明
普通图标mc-xxx编辑器/工具类白色图标,会继承 currentColor
按键映射图标mc-key-xxx键盘、鼠标、手柄等输入映射图标,保持原色
彩色图标mc-x-xxx游戏内容类彩色图标,保持原色

基础用法

尺寸

像素图标放大时建议使用整数倍尺寸,例如 243648,可减少边缘发糊。

像素渲染

通过 pixelSize 控制像素化光栅分辨率,默认 24×24,越小越有极简像素风。

注意:像素渲染通过 path prop 传入 SVG 路径 d 属性,经 Canvas 光栅化后输出像素 PNG。

按钮图标

更多图标按钮

自定义 SVG 图标

通过 path prop 传入任意 SVG 路径 d 属性值,配合像素渲染使用,即使第三方图标库(如 Material Design Icons)也能呈现 Minecraft 风格的像素质感。

需要注册可复用图标名时,使用安全的结构化 McIconDefinition,不传原始 SVG 字符串:

ts
import { createMcUI, type McIconDefinition } from 'mcui-oreui'

const saveIcon: McIconDefinition = {
  name: 'save',
  type: 'normal',
  colorable: true,
  node: {
    name: 'svg',
    attrs: { viewBox: '0 0 24 24', xmlns: 'http://www.w3.org/2000/svg' },
    children: [{ name: 'path', attrs: { d: 'M4 4h16v16H4z', fill: 'currentColor' } }],
  },
}

const mcui = createMcUI({
  icons: { sets: { mc: { icons: { save: saveIcon } } } },
})

节点只允许 svgpath 和内嵌 PNG data URL 的 image,并校验安全属性。事件属性、script/style/foreignObject、外部 URL 和 javascript: 会被拒绝;组件内部不使用 v-html。Vue Component 图标仍可作为 icon set 的值。

使用 MDI 图标

Material Design Icons 拥有 7000+ 图标,安装 @mdi/js 后将路径传给 McIcon 即可全部使用:

bash
npm install @mdi/js

自定义路径

提示:如果不传 color,图标会使用 CSS mask + currentColor 着色,可继承文字颜色。

API

Props

名称类型默认说明
namestring''图标名称;不传时读取默认插槽文本
pathstring''自定义 SVG 路径 d 属性值,传入后忽略 name
viewBoxstring'0 0 24 24'配合 path 使用的 SVG viewBox
sizenumber | string24图标尺寸;数字按 px 处理
pixelSizenumber24像素化光栅分辨率;如 8 为极简像素风,24 为清晰像素风
colorstring''图标颜色,对普通图标和像素化渲染生效
aria-label标准 Attr-可访问性标签;不传则作为装饰图标隐藏给读屏器

注意事项:普通图标可继承文本颜色,也可通过 color 指定颜色。按键映射图标和彩色图标保持原色,不支持改色。像素图标通过 Canvas 光栅化渲染(crispEdges 无抗锯齿),默认 24×24,可通过 pixelSize 调整分辨率;渲染结果进入共享的 128 项 LRU 缓存,异步失败、竞态或组件卸载都会释放临时 Blob URL。图标内部已设置 image-rendering: pixelated / crisp-edges,但浏览器缩放仍可能有差异;像素风图标建议使用整数倍尺寸。

最后更新于

MIT Licensed · Ore UI 风格 Vue 3 组件库