Vue3中使用svg图标

这篇具有很好参考价值的文章主要介绍了Vue3中使用svg图标。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、为什么要使用svg图标

在开发项目的时候经常会用到svg矢量图,而且我们使用SVG以后,页面上加载的不再是图片资源,
这对页面性能来说是个很大的提升,而且我们SVG文件比img要小的很多,放在项目中几乎不占用资源。

二、安装SVG依赖插件

pnpm install vite-plugin-svg-icons -D

三、在vite.config.ts中配置插件

import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import path from 'path'
export default () => {
  return {
    plugins: [
      createSvgIconsPlugin({
        // Specify the icon folder to be cached
        iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
        // Specify symbolId format
        symbolId: 'icon-[dir]-[name]',
      }),
    ],
  }
}

四、入口文件导入

import 'virtual:svg-icons-register'

五、svg封装为全局组件

因为项目很多模块需要使用图标,因此把它封装为全局组件!!!
在src/components目录下创建一个SvgIcon组件:代表如下

<template>
  <div>
    <svg :style="{ width: width, height: height }">
      <use :xlink:href="prefix + name" :fill="color"></use>
    </svg>
  </div>
</template>

<script setup lang="ts">
defineProps({
  //xlink:href属性值的前缀
  prefix: {
    type: String,
    default: '#icon-'
  },
  //svg矢量图的名字
  name: String,
  //svg图标的颜色
  color: {
    type: String,
    default: ""
  },
  //svg宽度
  width: {
    type: String,
    default: '16px'
  },
  //svg高度
  height: {
    type: String,
    default: '16px'
  }

})
</script>
<style scoped></style>

在src文件夹目录下创建一个index.ts文件:用于注册components文件夹内部全部全局组件!!!

import SvgIcon from './SvgIcon/index.vue';
import type { App, Component } from 'vue';
const components: { [name: string]: Component } = { SvgIcon };
export default {
    install(app: App) {
        Object.keys(components).forEach((key: string) => {
            app.component(key, components[key]);
        })
    }
}

在入口文件引入src/index.ts文件,通过app.use方法安装自定义插件文章来源地址https://www.toymoban.com/news/detail-454546.html

import gloablComponent from './components/index';
app.use(gloablComponent);

到了这里,关于Vue3中使用svg图标的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Vue3.0里为什么要用 Proxy API 替代 defineProperty API ?

    Vue3.0里为什么要用 Proxy API 替代 defineProperty API ?

    定义: Object.defineProperty()  方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象 为什么能实现响应式 通过 defineProperty  两个属性, get 及 set get 属性的 getter 函数,当访问该属性时,会调用此函数。执行时不传入任何参数,但是会传入 th

    2024年03月09日
    浏览(11)
  • 小白详解Vue3项目中怎么引入 SVG 图标

    小白详解Vue3项目中怎么引入 SVG 图标

    今天一淘模板给大家来详解Vue3项目中怎么引入 SVG 图标具体流程 SVG 图标 既然是页面,肯定离不开一些图标 icon ,所以肯定要去最全的 阿里图标库 来寻找 这里讲解下如何将 阿里图标库 里面的东西,放到我们的页面上 阿里图标库 进入页面,找到 资源管理 下面的 我的

    2024年02月09日
    浏览(5)
  • 表单的总数据为什么可以写成一个空对象,不用具体的写表单中绑定的值,vue3

    表单的总数据为什么可以写成一个空对象,不用具体的写表单中绑定的值,vue3

      from为空对象  在v-model里写form.name,其实就是在form这个空对象里添加了一个键名为name的成员,你不用在script标签的form对象里面特意写name属性。

    2024年01月23日
    浏览(13)
  • vue本地运行开发,为什么要配置changeOrigin: true

    changeOrigin: true 是在配置反向代理时常见的一个选项,通常用于解决跨域请求的问题。Vue本地运行时,可能会涉及到前端应用与后端服务不在同一个域的情况,这就会触发浏览器的同源策略,阻止跨域请求。 使用Vue CLI(或其他类似的工具)在本地运行时,可以通过配置代理来

    2024年01月18日
    浏览(6)
  • Vue-33、Vue中为什么使用render函数

    Vue-33、Vue中为什么使用render函数

    1、main.js 2、查看引入vue 引入的dist/vue.runtime.esm.js 查看vue.runtime.esm.js 大小 此时引入的是残缺的Vue 无模板解析器。打包之后体积小一点。 而render: h = h(App), 可以进行模板解析。

    2024年01月23日
    浏览(11)
  • 我为什么使用Linux做开发

    目前市面上主流的桌面操作系统在大多数人眼里只有Windows和MacOS,那为什么我没选择它们两呢? 首先,不选MacOS的原因,就是太贵。当然这是我的原因不是苹果的原因,我最早使用Linux写代码的时候是2018年,那时候刚毕业上班不久,根本买不起Mac(虽然现在也觉得有点贵)。

    2024年03月11日
    浏览(7)
  • spark底层为什么选择使用scala语言开发

    基于Scala的语言特性 集成性:Scala 是一种运行在 Java 虚拟机(JVM)上的静态类型编程语言,可以与 Java 代码无缝集成。由于 Spark 涉及到与大量 Java 生态系统的交互,例如 Hadoop、Hive 等,使用 Scala 可以方便地与这些组件进行集成和交互。 函数式编程支持:Scala 是一种面向函数

    2024年02月10日
    浏览(13)
  • 【VS Code 与 Qt6】QCheckBox的图标为什么不会切换?

    【VS Code 与 Qt6】QCheckBox的图标为什么不会切换?

    本篇专门扯一下有关 QCheckBox 组件的一个问题。老周不水字数,直接上程序,你看了就明白。 QCheckBox、QRadioButton、QPushButton 都是 QAbstractButton 的子类,所以这几个家伙都归属于按钮组件。在 QAbstractButton 类中已定义有 checkable 属性,表示按钮是否支持 check 操作。这种按钮就类似

    2024年02月07日
    浏览(8)
  • Java开发手册中为什么禁止使用BigDecimal的equals方法做等值比较已经为什么禁止使用double直接构造BigDecimal

    Java开发手册中为什么禁止使用BigDecimal的equals方法做等值比较已经为什么禁止使用double直接构造BigDecimal

    阿里Java开发手册嵩山版中明确指出: 1、BigDecimal的等值比较应使用compareTo()方法,而不是equals()方法 equals()方法会比较值和精度(1.0与1.00返回结果为false),而compareTo()则会忽略精度 2、禁止使用构造方法BigDecimal(double)的方式把double值转换为BigDecimal对象 BigDecimal(double)存在精度损

    2024年02月07日
    浏览(10)
  • 为什么要使用零知识证明来开发跨链协议

    在过去的几年当中出现了各种各样的独立公链以及以太坊 Layer 2。 由于在安全性、低成本、快速交易以及开发者和用户社区差异等方面,不同链都具有各自不同的优势,用户在不同链之间切换使用的行为是很常见的。 比起以太坊链,Layer2 以及其他独立公链上的手续费会更加

    2024年01月19日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包