当前位置: 首页 > news >正文

项目中的svg图标的封装与使用

1.安装

npm install vite-plugin-svg-icons -D

2.在vite.config.ts中配置

       **所有的svg图标都必须放在assets/icons

// 引入svg
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'export default defineConfig({plugins: [vue(),createSvgIconsPlugin({iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],symbolId: 'icon-[dir]-[name]',}),],、
})

3.在入口文件引入

// svg插件需要配置代码
import 'virtual:svg-icons-register'

4.使用

在阿里巴巴图标生成的svg图标放在assets/icons下

<!-- svg:图标外层容器节点,内部需要use标签结合使用 -->
<svg><!-- xlink:href 执行哪一个图标,属性值必须 #icon-图标名字 --><!-- use标签使用fill属性设置图标颜色 --><use xlink:href="#icon-phone" fill="yellow"></use></svg>

封装一个svg组件

一:局部组件

<template><svg :style="{ width, height }"><use :xlink:href="prefix + name" :fill="color"></use></svg>
</template>
<script setup lang="ts">defineProps({// xlink:href属性前缀prefix: {type: String,default: '#icon-',},// 图标名字name: String,// 图标颜色color: {type: String,default: '',},// 图标宽度width: {type: String,default: '16px',},// 图标高度height: {type: String,default: '16px',},
})
</script>
<script scoped lang="scss"></script>

引用

import SvgIcon from "@/components/SvgIcon/index.vue"
<svg-icon name="expand" color="pink" height="20px" width="20px"></svg-icon>

二、全局组件

1.在components文件夹下新建一个index.ts,将在所有的svg图标组件引入在index.ts中,这个文件载全体暴露出来。

// 引入项目中全部的全局组件
import SvgIcon from './SvgIcon/index.vue'// 全局对象
const allGloablComponent = { SvgIcon }
// 暴露插件对象
export default {install(app) {Object.keys(allGloablComponent).forEach((key) => {app.component(key, allGloablComponent[key])})},
}

2.在main.ts中设置全局组件

// 引入自定义插件对象,注册整个项目全局组件
import gloablComponent from '@/components'
// 安装自定义插件
app.use(gloablComponent)

进行以上操作之后,在项目的中可以直接使用组件就可以了,不需要引入

http://www.lryc.cn/news/246695.html

相关文章:

  • 文件服务器迁移
  • 虹科Pico汽车示波器 | 汽车免拆检修 | 2011款瑞麒M1车发动机起动困难、加速无力
  • 深度学习之图像分类(十五)DINAT: Dilated Neighborhood Attention Transformer详解(一)
  • 和数集团出席中科院上海高研院​第三十三期“高研交叉论坛”信息能源融合专场
  • GitHub----使用记录
  • 大数据平台/大数据技术与原理-实验报告--实战HDFS
  • C#中的事件(委托的发布和订阅、事件的发布和订阅、EventHandler类、Windows事件)
  • 世微 舞台灯深度调光 大功率 dc-dc降压恒流驱动IC APS54083
  • 【nlp】3.3 Transformer论文复现:2. 编码器部分(掩码张量、多头注意力机制、前馈全连接层)
  • vue3中shallowReactive与shallowRef
  • 蓝桥杯-动态规划-子数组问题
  • CDA一级备考思维导图
  • 【傻瓜级JS-DLL-WINCC-PLC交互】1.C#用windows窗体控件创建.net控件
  • Unity中Shader的BRDF解析(一)
  • 《软件工程原理与实践》复习总结与习题——软件工程概述
  • acwing算法基础之动态规划--线性DP和区间DP
  • 力扣 622.设计循环队列
  • 初识Linux(2).妈妈再也不用担心我Linux找不到门了。
  • 房屋租赁出售经纪人入驻小程序平台
  • 【计算方法与科学建模】矩阵特征值与特征向量的计算(五):乘幂法的加速(带有原点移位的乘幂法)
  • 2023年【起重机械指挥】考试题库及起重机械指挥考试资料
  • GoLang语言范围(Range)
  • 汽车电子 -- 车载ADAS之FCW(前方碰撞预警)
  • 爬虫系统Docker和Kubernetes部署运维最佳实践
  • 音视频5、libavformat-1
  • 【数据结构复习之路】树和二叉树(严蔚敏版)万字详解主打基础
  • nginx使用详解:转发规则、负载均衡、server_name
  • HarmonyOS 数据持久化 Preferences 如何在页面中对数据进行读写
  • ESP32-Web-Server编程- JS 基础 4
  • JAVA的反射机制