统一的图标组件,支持 UnoCSS 图标类、Iconify、SVG 雪碧图和外部图片 URL 四种图标来源。
<template>
<FmIcon name="i-lucide:search" />
<FmIcon name="heroicons:information-circle" />
</template>| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
name | string | 必需 | 图标名称(支持多种格式) |
transition | boolean | false | 是否开启图标切换动画 |
class | HTMLAttributes['class'] | - | 自定义 CSS 类 |
| 格式 | 示例 | 说明 |
|---|---|---|
| UnoCSS | i-lucide:search | 使用 UnoCSS 图标类 |
| Iconify | heroicons:information-circle | 使用 Iconify 在线图标 |
| SVG 雪碧图 | #icon-my-icon | 使用项目内 SVG 雪碧图 |
| 图片 URL | https://example.com/icon.svg 或 /assets/icon.svg | 使用外部图片或本地图片 |
无
无
<template>
<FmIcon name="i-lucide:home" />
<FmIcon name="i-ri:user-line" />
<FmIcon name="i-ant-design:search-outlined" />
</template><template>
<FmIcon name="heroicons:academic-cap" />
<FmIcon name="ph:bell" />
</template>先在项目中引入 SVG 雪碧图,然后使用:
<template>
<FmIcon name="#icon-custom" />
</template><template>
<!-- 网络图片 -->
<FmIcon name="https://example.com/icon.svg" />
<!-- 本地图片 -->
<FmIcon name="/assets/icons/logo.svg" />
<FmIcon name="./icon.png" />
</template><template>
<!-- 通过 class 控制尺寸 -->
<FmIcon name="i-lucide:search" class="text-xl" />
<FmIcon name="i-lucide:home" class="size-6" />
<!-- 通过 class 控制颜色 -->
<FmIcon name="i-lucide:heart" class="text-red-500" />
<FmIcon name="i-lucide:star" class="text-yellow-500" />
</template><script setup lang="ts">
const isActive = ref(false)
</script>
<template>
<!-- 默认:直接切换,无动画 -->
<FmIcon :name="isActive ? 'i-lucide:star' : 'i-lucide:star-outline'" />
<!-- 开启切换动画 -->
<FmIcon :name="isActive ? 'i-lucide:star' : 'i-lucide:star-outline'" transition />
</template><template>
<FmIcon name="i-lucide:trash-2" class="cursor-pointer hover:text-destructive" @click="handleDelete" />
</template>1em,可通过父元素的 font-size 或图标的 class 控制currentColor,继承父元素的文字颜色transition prop 开启翻转动画(0.2s)