Icon
小于 1 分钟
实现
symbol
代码文件
1. 生成所需图标的 使用阿里巴巴矢量图标库 iconfont
iconfont.js
到组件下的 font
目录中
2. 导入生成的文件 src
┣ components
┣ icon
┣ font
┃ ┗ iconfont.js
┣ style
┃ ┗ index.less
┗ Icon.vue
./font/iconfont.js
文件
3. 引入 // Icon.vue
import "./font/iconfont.js";
svg
html 结构
4. 添加 <template>
<svg class="icon" aria-hidden="true" :style="`height:${size};width:${size};`">
<use :xlink:href="iconName"></use>
</svg>
</template>
5. 添加 Icon 的默认样式
/* index.less */
.icon {
width: 1em;
height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
6. 定义组件所需属性
// Icon.vue
const props = defineProps({
name: {
type: String,
required: true,
},
size: {
type: String,
},
});
name
属性转为实际图标名称
7. 通过计算属性将传入的 // Icon.vue
import { computed } from "vue";
const iconName = computed(() => "#icon-" + props.name);
效果
🌰
<Icon name="lizi" size="1rem" />