如何在 Vite + Vue 中使用 Svg 图标

在写前端的时候觉得 Element Plus 的图标库不够或不是很符合,想要使用自定义的图标,但是又不想引入额外的图标库,这时候就可以使用 Svg 图标,这篇文章就是介绍如何在 Vite + Vue 中使用 Svg 图标。以及封装成组件使用。

初始化项目

首先我们需要初始化一个 Vite + Vue + TS 的项目,这里使用 pnpm 作为包管理工具,当然你也可以使用 npm 或者 yarn。

pnpm create vite svg-example --template vue-ts
cd svg-example
pnpm install
pnpm run dev

添加 Svg 插件

创建项目后会有一个 vue 的图标,我们就使用这个图标来展示。

我们需要安装一个插件来处理 Svg 文件,这里使用 @tangllty/vite-plugin-svg

pnpm install @tangllty/vite-plugin-svg -D

然后在 vite.config.ts 中添加插件。

import { svgIconsPlugin } from '@tangllty/vite-plugin-svg'

export default defineConfig({
  plugins: [
    svgIconsPlugin({
      pattern: 'src/assets/**/*.svg',
    })
  ]
})

创建 Svg 组件

我们需要创建一个 Svg 组件来展示 Svg 图标。

<template>
  <svg
    aria-hidden="true"
    class="svg-icon"
    :style="`width: ${size};
    height: ${size};`"
  >
    <use :href="symbolId" :fill="color" />
  </svg>
</template>

<script lang="ts" setup>
import { computed } from 'vue'

const props = defineProps({
  prefix: {
    type: String,
    default: 'icon'
  },
  name: {
    type: String,
    required: false
  },
  color: {
    type: String
  },
  size: {
    type: String,
    default: '1em'
  }
})

const symbolId = computed(() => `#${props.prefix}-${props.name}`)
</script>

<style scoped>
.svg-icon {
  overflow: hidden;
  fill: currentColor;
}
</style>

使用 Svg 组件

我们在 App.vue 中使用 Svg 组件。

<template>
  <div id="app">
    <SvgIcon name="vue" size="16em" />
  </div>
</template>

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

效果如下:

插件地址:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值