在VUE项目中使用svg图标

在VUE项目中使用svg图标

安装项目依赖

npm i svg-sprite-loader@4.1.3

这里之后打包的时候,可能会报非常多错误,比如:Error Cannot find module ‘webpacklibRuleSet‘
若有报这个错误,重新安装一下webpack

npm i webpack@4.29.5 --force

在src目录下新建文件夹

在这里插入图片描述

index.vue:

<template>
  <div v-if="isExternal" :style="styleExternalIcon" class="svg-external-icon svg-icon" v-on="$listeners" />
  <svg v-else :class="svgClass" aria-hidden="true" v-on="$listeners">
      <use :xlink:href="iconName" />
  </svg>
</template>

<script>
// doc: https://panjiachen.github.io/vue-element-admin-site/feature/component/svg-icon.html#usage
import { isExternal } from '../../utils/validate'

export default {
  name: 'SvgIcon',
  props: {
      iconClass: {
          type: String,
          required: true
      },
      className: {
          type: String,
          default: ''
      }
  },
  computed: {
      isExternal() {
          return isExternal(this.iconClass)
      },
      iconName() {
          return `#icon-${this.iconClass}`
      },
      svgClass() {
          if (this.className) {
              return 'svg-icon ' + this.className
          } else {
              return 'svg-icon'
          }
      },
      styleExternalIcon() {
          return {
              mask: `url(${this.iconClass}) no-repeat 50% 50%`,
              '-webkit-mask': `url(${this.iconClass}) no-repeat 50% 50%`
          }
      }
  }
}
</script>

<style scoped>
.svg-icon {
  width: 1.2em;
  height: 1.2em;
  /* vertical-align: -0.15em; */
  fill: currentColor;
  overflow: hidden;
}

.svg-external-icon {
  background-color: currentColor;
  mask-size: cover !important;
  display: inline-block;
}
</style>

在src目录下新建文件夹

在这里插入图片描述

index.js:

import Vue from 'vue'
import SvgIcon from '@/components/SvgIcon'// svg component
 
// register globally
Vue.component('SvgIcon', SvgIcon)
 
const req = require.context('./svg', false, /\.svg$/)
const requireAll = requireContext => requireContext.keys().map(requireContext)
requireAll(req)

在svg中放我们需要引用的svg图片

在这里插入图片描述

在main中引用:

Vue.config.productionTip = false
import '@/icons'

配置 vue.config.js

const { defineConfig } = require('@vue/cli-service')
const path = require("path");
function resolve(dir) {
  return path.join(__dirname, dir);
}

module.exports = defineConfig({
  transpileDependencies: true,
   chainWebpack (config) {
    // set svg-sprite-loader
    config.module
      .rule('svg')
      .exclude.add(resolve('src/icons'))
      .end()
    config.module
      .rule('icons')
      .test(/\.svg$/) //不要压缩,会出不来
      .include.add(resolve('src/icons'))
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
      .end()
  }
})

使用

<SvgIcon
                icon-class="limit"
                class="item_icon"
              ></SvgIcon>

在这里插入图片描述
去掉可以改svg颜色

参考:

https://blog.csdn.net/m0_57524265/article/details/131487957?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170243566916800197061381%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=170243566916800197061381&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-131487957-null-null.142v96pc_search_result_base7&utm_term=svg%20vue&spm=1018.2226.3001.4187

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/287689.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Selenium教程06:单选框+多选框+下拉框组件的示例练习

1.Radio单选框的示例用法&#xff0c;通过网页元素class和type属性多条件共同定位元素&#xff0c;模拟依次选中Android&#xff0c;Apple&#xff0c;Windows。 网页元素结构 <input type"radio" class"ivu-radio-input" name"ivuRadioGroup_170…

二叉树的层序遍历,力扣

目录 题目地址&#xff1a; 题目&#xff1a; 我们直接看题解吧&#xff1a; 解题方法&#xff1a; 方法分析&#xff1a; 解题分析&#xff1a; 解题思路&#xff1a; 代码实现&#xff1a; 代码补充说明&#xff1a; 题目地址&#xff1a; 102. 二叉树的层序遍历 - 力扣&…

ansible 配置jspgou商城上线(MySQL版)

准备环境 准备两台纯净的服务器进行&#xff0c;在实验之前我们关闭防火墙和selinux systemctl stop firewalld #关闭防火墙 setenforce 0 #临时关闭selinux hosts解析(两台服务器都要去做) [rootansible-server ~]# vim /etc/hosts 10.31.162.24 ansible-ser…

python中除以0的情况

python中除以0的情况 通常情况下在 numpy 中 通常情况下 在 Python 中&#xff0c;除以零会导致一个 ZeroDivisionError 在 numpy 中 “invalid value encountered in scalar divide” 是一个运行时警告&#xff0c;通常在你试图将一个数值除以零或者一个非常接近零的数值时…

玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— DevEco Studio下载与安装

一、下载DevEco Studio IDE开发工具 1. 登录鸿蒙官网 网址为&#xff1a; ​​​​​​​华为HarmonyOS智能终端操作系统官网 | 应用设备分布式开发者生态 页面如下&#xff1a; 2. 搜索“DevEco Studio IDE” 点击右上角的“请输入关键词”&#xff0c;在其中搜索“DevEc…

【Unity嵌入Android原生工程】

Unity嵌入Android原生工程 本章学习,Unity模块嵌入Android## 标题Unity导出Android工程创建Android Studio工程Unity嵌入到Andorid StudioAndroid原生代码跳转到Unity场景工作需要嵌入原生工程,并实现热更,记录一下 工具,Unity2023.3.14,Android Studio 2022.3.1 patch3 Un…

python+pygame+opencv+gpt实现虚拟数字人直播(一)

AI技术突飞猛进&#xff0c;不断的改变着人们的工作和生活。数字人直播作为新兴形式&#xff0c;必将成为未来趋势&#xff0c;具有巨大的、广阔的、惊人的市场前景。它将不断融合创新技术和跨界合作&#xff0c;提供更具个性化和多样化的互动体验&#xff0c;成为未来的一种趋…

【基础篇】九、程序计数器 JVM栈

文章目录 0、运行时数据区域1、程序计数器2、JVM栈3、JVM栈--栈帧--局部变量表4、JVM栈--栈帧--操作数栈5、JVM栈--栈帧--桢数据6、栈溢出7、设置栈空间大小8、本地方法栈 0、运行时数据区域 JVM结构里&#xff0c;类加载器下来&#xff0c;到了运行时数据区域&#xff0c;即Ja…

Linux用shell脚本执行乘法口诀表的两种方式

#!/bin/bash # *********************************************************# # # # * Author : 藻头男 # # * QQ邮箱 : 2322944912qq.com # …

数据库选择题 (期末复习)

2015期末 1、在数据库中&#xff0c;下列说法&#xff08;A&#xff09;是不正确的 A. 数据库避免了一切数据的重复 B. 数据库可以实现数据的独立性 C. 数据库中的数据可以共享 D. 数据库减少了数据冗余 2、事务日志一般用于保存&#xff08;C&#xff09; A. 程序运行过程 B…

怎么规划自己的现货白银交易生涯?

做现货白银交易不是儿戏的&#xff0c;应该对自己的生涯进行有效的规划&#xff0c;那么投资者如何规划自己的交易生涯呢&#xff1f;下面&#xff0c;我们将从资金管理和增长的角度来讨论一下。 首先我们讨论一下&#xff0c;在现货白银交易中应该如何管理盈利。我们应该要注意…

ByteTrack算法流程的简单示例

ByteTrack ByteTrack算法是将t帧检测出来的检测框集合 D {\mathcal{D}} D 和t-1帧预测轨迹集合 T ~ t − 1 {\tilde{T}_{t-1}} T~t−1​ 进行匹配关联得到t帧的轨迹集合 T t {T_{t}} Tt​。 首先使用检测器检测t帧的图像得到检测框集合 D {\mathcal{D}} D&#xff0c;再…

Oracle-增删改查

增删改 处理日期 oracle 处理date 类型 必须使用 to_date 函数或 sysdate oracle 与 mysql 处理 date 的区别mysql 中的 date 类型 只 支持 年月日, 使用 2000-10-01 oracle 中 date 类型 包含 年月日时分秒, 使用 to_date 函数to_date(1999-10-15,yyyy-MM-dd)​orac…

思科校园网搭建及配置综合小型实验

思科校园网搭建及配置综合小型实验 实验拓扑配置步骤配置聚合链路配置VTP&#xff0c;vlan域模板第一步 配置二层VLAN第二步 配置生成树第三步 配置相关IP地址第四步 配置DHCP及DHCP中继第五步 配置三层的网关冗余协议 双机热备及OSPF第六步 配置静态路由,NAT地址转换及其他配置…

STM32 ESP8266 物联网智能温室大棚 (附源码 PCB 原理图 设计文档)

资料下载: https://download.csdn.net/download/vvoennvv/88680924 一、概述 本系统以STM32F103C8T6单片机为主控芯片&#xff0c;采用相关传感器构建系统硬件电路。其中使用DHT11温湿度传感器对温度和湿度的采集&#xff0c;MQ-7一氧化碳传感器检测CO浓度&#xff0c;GP2Y101…

深度思考,AI项目的人工智能到底引领的是什么?

项目深度思考&#xff0c;人工智能到底引领的是什么&#xff1f; 人工智能引领技术之舞&#xff1a;项目深度思考项目背景&#xff1a;人工智能的魔法时代技术选择的深度思考&#xff1a;AI大决战团队协作的深度思考&#xff1a;AI联盟大会用户体验的深度思考&#xff1a;AI之光…

Redis命令---String篇 (超全)

目录 1.Redis Setnx 命令 - 只有在 key 不存在时设置 key 的值。简介语法可用版本: > 1.0.0返回值: 设置成功&#xff0c;返回 1 。 设置失败&#xff0c;返回 0 。 示例 2.Redis Getrange 命令 - 返回 key 中字符串值的子字符简介语法可用版本: > 2.4.0返回值: 截取得到…

Sigmaplot14安装包下载及安装教程

Sigmaplot 14下载链接&#xff1a;https://docs.qq.com/doc/DUnR0QmVzRVRXdGdB 1.鼠标右键解压到“Sigmaplot 14.0” 2.选中Sigmaplot14.0&#xff0c;鼠标右击选择“以管理员身份运行” 3.点击“Next” 4.选择I accept the terms of the license agreement&#xff0c;点击“N…

九州金榜|家庭教育中如何让孩子听话

心理学上有个专业名词叫做超限效应&#xff0c;是说如果外来刺激过多、过强或者是作用时间过久&#xff0c;就会让人感觉不耐烦&#xff0c;甚至是产生逆反心理。 这就是为什么现实生活中&#xff0c;很多父母就一件事唠叨无数遍&#xff0c;孩子依然不为所动的原因所在。 九…

Java获取windows操作系统基本信息

Java可以通过使用System类中的一些属性和方法来获取Windows操作系统的基本信息。以下是一些示例代码&#xff1a; public class WindowsInfo {public static void main(String[] args) {// 获取操作系统名称String osName System.getProperty("os.name");System.ou…