首页 > 其他分享 >封装svg通用组件

封装svg通用组件

时间:2023-06-20 12:55:20浏览次数:34  
标签:封装 String icons default svg 组件 type vite

  1. 安装vite-plugin-svg-icons插件
pnpm i vite-plugin-svg-icons -D
  1. 在main.ts中引入vite-plugin-svg-icons
import 'virtual:svg-icons-register'
  1. 创建src/assets/icons目录,用来存放svg图片

在这里插入图片描述

  1. 配置vite.config.ts
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
plugins: [
    vue(),
    createSvgIconsPlugin({
      // 指定要缓存的文件夹
      iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
      // 指定symbolId格式
      symbolId: 'icon-[dir]-[name]'
    })
  ],
  1. 封装SvgIncon通用组件
<template>
  <div>
    <svg :style="{ width, height }">
      <use :xlink:href="prefix + name" :fill="color" />
    </svg>
  </div>
</template>

<script setup lang="ts" name="svgIcon">
defineProps({
  prefix: {
    type: String,
    default: '#icon-'
  },
  name: {
    type: String,
    default: ''
  },
  color: {
    type: String,
    default: ''
  },
  width: {
    type: String,
    default: ''
  },
  height: {
    type: String,
    default: ''
  }
})
</script>
<style scoped></style>
  • xlink:href:图片名称
  • fill:图片颜色,如果这里不生效,可以去svg图片里,把fill相关属性删除即可
  1. 使用
<template>
  <div>
    <svg-icon name="demo" color="green"></svg-icon>
  </div>
</template>

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

<style scoped></style>

这里是需要引入SvgIcon组建的,可以考虑把该组件做全局注册,那样在使用的时候就不用到处注册了

标签:封装,String,icons,default,svg,组件,type,vite
From: https://www.cnblogs.com/sun2020/p/17493338.html

相关文章

  • 【HarmonyOS】如何解决智能穿戴设备中swiper组件右滑与系统退出应用冲突问题(API6 JS)
    【关键字】API6、JS、swiper组件、智能穿戴、setSwipeToDismiss 【问题描述】使用API6JS开发智能穿戴设备HarmonyOS应用,在首页使用swiper组件时,右滑swiper时会退出应用,无法实现swiper右滑效果,效果如下所示:​ 【问题分析与原因】当页面栈只有一个页面时,默认滑动事件分发......
  • fileinput.input函数 是对 fileinput.FileInput 类的再封装
    definput(files=None,inplace=False,backup="",bufsize=0,mode="r",openhook=None):"""ReturnaninstanceoftheFileInputclass,whichcanbeiterated.Theparametersarepassedtotheconstructorof......
  • Axios封装
    vue-axiosAxios是一个基于promise的HTTP库,可以用在浏览器和node.js中一、流程:1.拿到项目和后端接口,首先要配置全局代理;2.接着全局封装axios和request.js;3.过滤axios请求方式,控制路径,参数的格式,http.js;4.正式封装api.js;5.页面调用;二、具体(1)前......
  • 子组件调用父组件的方法
    子组件调用父组件的方法使用场景:父组件中有个弹窗(子组件),需要结合父组件和子组件的数据作为参数去请求调用父组件的方法关闭子组件等如:父组件是输入提现或充值的金额,点击确定弹出子组件,弹窗是展示输入的金额和费率,发送验证码输入验证码,输入验证码,点击确定的时候需要给父组件传......
  • v2和v3组件通信方式的区别
    https://gitee.com/jch1011/vue3_communication.git通信方式vue2props:父子组件、子父组件、甚至兄弟组件自定义事件:可以实现子父组件$bus:任意组件通信pubsub:发布订阅,任意组件通信vuex:集中式状态管理容器,实现任意组件通信ref:获取子组件的响应式数据及方法slot:插槽(默认、......
  • 常见k8s开源网络组件
    目前,已经有多个开源组件支持容器网络模型。常见的网络组件,包括Flannel、Open vSwitch、直接路由和Calico。1.FlannelFlannel之所以可以搭建k8s依赖的底层网络,是因为它能实现以下两个功能。(1)它能协助k8s,给每一个Node上的Docker容器分配互相不冲突的IP地址。(2)它能在这些IP地址之......
  • 记录--Vue3 封装 ECharts 通用组件
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助按需导入的配置文件配置文件这里就不再赘述,内容都是一样的,主打一个随用随取,按需导入。import*asechartsfrom"echarts/core";//引入用到的图表import{LineChart,typeLineSeriesOption}from"echarts/......
  • python3 面向对象编程--类的封装和继承
    #python3importrefromurllibimportrequestimportosclassPosterSpider(object):def__init__(self,path='./'):self.path=path#theentryofthisprocessdefgetStart(self,url):page=self.reqPage(url)......
  • 【工程应用八】终极的基于形状匹配方案解决(小模型+预生成模型+无效边缘去除+多尺度+各
      我估摸着这个应该是关于形状匹配或者模版匹配的最后一篇文章了,其实大概是2个多月前这些东西都已经弄完了,只是一直静不下来心整理文章,提醒一点,这篇文章后续可能会有多次修改(但不会重新发文章,而是在后台直接修改或者增加),所以有需要的朋友可以随时重复查看。 这次带来的更新......
  • 在.Net Core6中使用log4net组件写日志到本地文件的操作流程
    原文链接:https://blog.csdn.net/kevin860/article/details/1068810621.引用包: Log4Net  Microsoft.Extensions.Logging.Log4Net.AspNetCore Microsoft.Extensions.Logging //loggingbuilder.AddFilter该方法需要引入Microsoft.Extensions.Logging名称空间 ......