iconfont官网

一、如何使用iconfont

首先需要到【我的项目】 --> 【新建项目】

修改【项目名称】、字体格式勾选【SVG】

选择需要的icon添加到购物车

点击购物车【添加至项目】

为了方便使用在线链接,将在线链接复制到项目

二、iconfont引入到项目中

帮助中心

将在线链接使用script引入

// index.html

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Test</title>
    <script src="//at.alicdn.com/t/c/font_4648898_0qeynnuuzkqh.js"></script>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>

xlink:href是从iconfont【复制代码】,并且需要前缀保留#

// 子组件
// src\components\Icon\Icon.vue

<template>
  <!-- Icon组件 -->
  <div>
    <svg class="icon" aria-hidden="true">
      <use xlink:href="#icon-cz_mtiIcon-caozuo-you"></use>
  </svg>
  </div>
</template>

<script setup>

</script>

<style lang="scss" scoped>
.icon {
  width: 1em; height: 1em;
  vertical-align: -0.15em;
  fill: currentColor;
  overflow: hidden;
}
</style>
// 父组件
// src\App.vue

<script setup lang="ts">
import Icon from './components/Icon/Icon.vue'
</script>

<template>
  <div>
    <Icon />
  </div>
</template>

三、封装Icon组件

考虑到封装组件,需要将class与xlink:href用动态传入,以及将点击事件方法传出给父组件处理

// 子组件
// src\components\Icon\Icon.vue

<template>
  <!-- Icon组件 -->
  <div>
    <svg :class="svgClass" aria-hidden="true" @click="clickIcon">
      <use :xlink:href="iconName"></use>
  </svg>
  </div>
</template>

<script setup>
import { defineProps, ref, defineEmits } from 'vue';

const props = defineProps({
  svgClass: {
    type: String,
    default: '', // 默认值
  },
  iconName: {
    type: String,
    required: true // 必传
  }
});

const svgClass = ref(`icon ${props.svgClass}`);
const iconName = ref(`#${props.iconName}`);

const emit = defineEmits(); // 引入emit  
const clickIcon = () => {
  emit('clickIcon');
};
</script>

<style lang="scss" scoped>
.icon {
  width: 1em; height: 1em;
  vertical-align: -0.15em;
  fill: currentColor;
  overflow: hidden;
  cursor: pointer;
}
</style>
// 父组件
// src\App.vue

<script setup lang="ts">
import Icon from './components/Icon/Icon.vue'

const handleClick = () => {
  console.log('点击了icon')
};

</script>

<template>
  <div>
    <Icon iconName="icon-cz_mtiIcon-caozuo-you" @clickIcon="handleClick"/>
  </div>
</template>

CcChan
53 声望5 粉丝