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

vue3中使用插件vite-plugin-svg-icons

在vue3 + vite 项目中使用svg图标
插件:vite-plugin-svg-icons

  • 预加载 在项目运行时就生成所有图标,只需操作一次 dom
  • 高性能 内置缓存,仅当文件被修改时才会重新生成

安装

yarn add vite-plugin-svg-icons -D
# or
npm i vite-plugin-svg-icons -D
# or
pnpm install vite-plugin-svg-icons -D

使用

  • vite.config.ts 中的配置插件
import { createSvgIconsPlugin } from "vite-plugin-svg-icons";plugins: [createSvgIconsPlugin({// 指定缓存文件iconDirs: [resolve(process.cwd(), "src/assets/icons/svg")],// 指定symbolId格式symbolId: "icon-[dir]-[name]",}),
]

配置 main.ts

import 'virtual:svg-icons-register'

封装SvgIcon组件 src/components/SvgIcon

<template><div v-if="isExter" :style="styleExternalIcon" v-bind="$attrs" class="svg-external-icon svg-icon" /><svg v-else :class="svgClass" aria-hidden="true" v-bind="$attrs"><use :xlink:href="iconName" /></svg>
</template><script setup lang="ts">
import { isExternal } from '@/utils/validate'
defineOptions({name: 'SvgIcon',
})const props = withDefaults(defineProps<{iconClass: string,className?: string
}>(), {className: ''
})const isExter = computed(() => {return isExternal(props.className)
})
const iconName = computed(() => {return `#icon-${props.iconClass}`
})
const svgClass = computed(() => {if (props.className) {return 'svg-icon ' + props.className} else {return 'svg-icon'}
})
const styleExternalIcon = computed(() => {return {mask: `url(${props.iconClass}) no-repeat 50% 50%`,'-webkit-mask': `url(${props.iconClass}) no-repeat 50% 50%`}
})
</script><style scoped lang="scss">
.svg-icon {width: 1em;height: 1em;vertical-align: -0.15em;fill: currentColor;overflow: hidden;
}.svg-external-icon {background-color: currentColor;mask-size: cover!important;display: inline-block;
}
</style>

组件使用

<svg-icon icon-class="404" />
http://www.lryc.cn/news/184809.html

相关文章:

  • 面试题20231008
  • 2023全新小红书图集和视频解析去水印网站源码
  • 2023去水印小程序源码修复版-前端后端内置接口+第三方接口
  • 鸿蒙手表开发之使用adb命令安装线上包
  • 华为OD机试 - 计算最大乘积(2022Q4 100分)
  • 安卓RecycleView包含SeekBar点击列表底部圆形阴影处理
  • 计算机视觉中的可解释性分析
  • Python 爬虫报错分析
  • [python 刷题] 3 Longest Substring Without Repeating Characters
  • 阿里云轻量应用服务器流量价格表(计费/免费说明)
  • C++设计模式-装饰器(Decorator)
  • 【C语言】结构类型的定义和使用
  • C++内存管理:其二、数组内存管理
  • No169.精选前端面试题,享受每天的挑战和学习
  • Hadoop设置hdfs全局指令
  • IDEA 2023.1.3图文安装教程及下载
  • 【JVM】运行时数据区(内存区域划分)详解
  • Python-Scrapy框架(框架学习)
  • flink生成水位线记录方式--基于特殊记录的水位线生成器
  • Arcgis日常天坑问题(1)——将Revit模型转为slpk数据卡住不前
  • JavaWeb:上传文件
  • STM32 大小端与字节对齐使用记录
  • RabbitMQ中basic**方法汇总与参数解释
  • linux之/etc/default/useradd文件
  • 3.primitive主数据类型和引用 认识变量
  • 【群智能算法改进】一种改进的光学显微镜算法 IOMA算法[1]【Matlab代码#60】
  • 第三课-软件升级-Stable Diffusion教程
  • 【C++】设计模式之——建造者
  • 【C++】基础语句(学习笔记)
  • 大厂秋招真题【DP】米哈游20230924秋招T2-米小游与魔法少女-奇运