vue里组件化引入svg图标的方式

配置好后可以轻松从iconfont导入svg图标或者任意svg图标。
参考:https://blog.csdn.net/weixin_39729729/article/details/137348970

https://blog.csdn.net/CMDN123456/article/details/139854354

官网https://www.iconfont.cn/help/detail?spm=a313x.help_detail.i1.d8d11a391.550b3a81PTK8cM&helptype=code

重点是 symbol 引用,以下是vite配置使用的方式:

  1. 首先安装 pnpm add vite-plugin-svg-icons -D,然后配置:

    // vite.config.ts
    import { resolve } from "path"
    import { createSvgIconsPlugin } from "vite-plugin-svg-icons"const pathSrc = resolve(__dirname, "src")export default defineConfig({...plugins: [createSvgIconsPlugin({// 指定需要缓存的图标文件夹,也就是项目实际存放svg图标的文件夹iconDirs: [resolve(pathSrc, "assets/icons")],// 指定symbolId格式symbolId: "icon-[name]",}),]
    })
    
  2. 项目的main.ts中导入:

    // 本地SVG图标
    import "virtual:svg-icons-register"
    
  3. 参考这个组件 SvgIcon 写法,需要使用iconfont图标时,直接在调用组件时传入 :icon-class=“图标名” 即可,例如:<svg-icon :icon-class=" isFullscreen ? ‘fullscreen-exit’ : ‘fullscreen’ " /> (fullscreen-exit和fullscreen是两个图标)。图标存放地址,例如:src/assets/icons/fullscreen.svg

<!-- SvgIcon.vue -->
<template><svgaria-hidden="true"class="svg-icon":style="'width:' + size + ';height:' + size"><use :xlink:href="symbolId" :fill="color" /></svg>
</template><script setup lang="ts">
const props = defineProps({prefix: {type: String,default: "icon",},iconClass: {type: String,required: false,default: "",},color: {type: String,default: "",},size: {type: String,default: "1em",},
});const symbolId = computed(() => `#${props.prefix}-${props.iconClass}`);
</script><style scoped>
.svg-icon {display: inline-block;width: 1em;height: 1em;overflow: hidden;vertical-align: -0.15em; /* 因icon大小被设置为和字体大小一致,而span等标签的下边缘会和字体的基线对齐,故需设置一个往下的偏移比例,来纠正视觉上的未对齐效果 */outline: none;fill: currentcolor; /* 定义元素的颜色,currentColor是一个变量,这个变量的值就表示当前元素的color值,如果当前元素未设置color值,则从父元素继承 */
}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 设计模式——策略模式

策略模式 策略模式主要组成部分例一&#xff1a;逐步重构并引入策略模式第一步&#xff1a;初始实现第二步&#xff1a;提取共性并实现策略接口第三步&#xff1a;实现具体策略类第四步&#xff1a;实现上下文类策略模式 UML 图策略模式的 UML 图解析 例二&#xff1a;逐步重构…

Flask-SQLAlchemy 和 Alembic 的结合

Flask-SQLAlchemy 和 Alembic 的结合 安装必要的库配置 Flask-SQLAlchemy定义数据库模型初始化 Alembic配置 Alembic配置 env编写迁移脚本应用迁移后续迁移Flask-SQLAlchemy 和 Alembic 是两个非常流行的 Python 库,它们通常一起使用来管理 Flask 应用中的数据库迁移。Flask-S…

低功耗神经网络

低功耗神经网络&#xff08;Low-Power Neural Networks&#xff09;是指在有限能源或资源条件下设计和实现的高效神经网络模型。这些网络旨在减少能耗&#xff0c;同时在性能上保持与传统神经网络相近的水平。随着深度学习在移动设备、物联网&#xff08;IoT&#xff09;和边缘…

【c语言】整数在内存中的储存(大小端字节序)

整数在内存中的储存&#xff08;大小端字节序&#xff09; 1.整数在内存中的储存 2.大小端字节序 3.整数在内存中储存例子 4.字节序判断 5.死循环现象 文章目录 整数在内存中的储存&#xff08;大小端字节序&#xff09;整数在内存中的储存大小端字节序什么是大小端为什么会有…

深入理解 Go 语言原子内存操作

原子内存操作提供了实现其他同步原语所需的低级基础。一般来说,你可以用互斥体和通道替换并发算法的所有原子操作。然而,它们是有趣且有时令人困惑的结构,应该深入了解它们是如何工作的。如果你能够谨慎地使用它们,那么它们完全可以成为代码优化的好工具,而不会增加复杂性…

Unity 麦扣 x 勇士传说 全解析 之 怪物基类(2)(附各模块知识的链接,零基础也包学会的牢弟)(案例难度:★★☆☆☆)

1.怪物的动画逻辑一览 2.怪物的受伤死亡逻辑一览 using System.Collections; using System.Collections.Generic; using System.Xml; using UnityEngine;public class Monster : MonoBehaviour {[Header("速度")]public float normalSpeed;public float chaseSpeed;…

在国产芯片上实现YOLOv5/v8图像AI识别-【2.5】yolov8使用C++部署在RK3588更多内容见视频

本专栏主要是提供一种国产化图像识别的解决方案&#xff0c;专栏中实现了YOLOv5/v8在国产化芯片上的使用部署&#xff0c;并可以实现网页端实时查看。根据自己的具体需求可以直接产品化部署使用。 B站配套视频&#xff1a;https://www.bilibili.com/video/BV1or421T74f 背景…

valgrind 工具helgrind使用

valgrind --toolhelgrind --log-file./valgrind.log ./game_50 可能的错误报告&#xff1a;Possible data race during read/write of size X at address Y by thread #Z. Locks held: none。这表示在地址Y处&#xff0c;大小为X的数据被线程#Z在没有持有锁的情况下读写&…

nginx简介及功能

一、简介&#xff1a; 1、nginx、apache是什么&#xff1f; ‌Nginx‌是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。它由伊戈尔赛索耶夫为Rambler.ru站点开发&#xff0c;以其稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而…

专业技能(挖坑填坑)——MYSQL的索引、日志、事务、存储引擎、锁机制等相关原理

熟悉MySQL的使用&#xff0c;熟悉MYSQL的索引、日志、事务、存储引擎、锁机制等相关原理。 1.mysql索引&#xff0c;索引的底层数据结构实现 索引就是目录可以帮助快速的找到对应的资源。 MySQL默认的InnoDB存储引擎使用的索引底层数据结构是BTree。BTree是一种多路搜索查找树…

OSI七层网络模型 /TCP/IP五层模型以及封装分用的详细讲解

文章目录 协议分层的好处OSI七层网络模型TCP/IP五层网络模型网络设备所在的分层(重点)封装和分用 协议分层的好处 第一点&#xff1a; 在网络通信中&#xff0c;如果使用一个协议来解决所有的问题&#xff0c;那么这个协议就会非常的庞大&#xff0c;非常不利于去学习和理解&…

2023华为od机试C卷【转盘寿司】C 实现 单调栈

#include <stdio.h> #include <stdlib.h>/*单调栈 旋转寿司3 15 6 14 3 21 9 17*/ int main() {int i 0;int len 0;int data 0;int nums[501];char c ;while(scanf("%d",&nums[i]) 1){i;len;c getchar();if(c \n)break;}int *out NULL;int *s…

实现多goroutine之间的发布和订阅

实现多goroutine之间的发布和订阅 一、实现思路 一个发布者&#xff0c;三个订阅者发布者需要跟每个订阅者之间&#xff0c;都要建立一个chan调用发布方法后&#xff0c;三个订阅者都能收到发布的信息在发布和接收之间&#xff0c;增加暂停&#xff0c;使运行结果更加直观 二…

CSS使用touch-action属性控制设备的触摸行为

touch-action CSS 属性是一个用于设置触摸操作&#xff08;如触摸滑动、双击缩放等&#xff09;在特定元素上的默认行为如何被浏览器处理的属性。这个属性主要用于优化移动端和触摸设备的交互体验&#xff0c;减少不必要的触摸事件处理或冲突&#xff0c;特别是在处理滚动、缩放…

C语言-部分字符串函数详解 1-4

C语言-部分字符串函数详解 1-4 前言1.strlen1.1基本用法1.2注意事项\0size_t 1.3模拟实现 2.strcpy2.1基本用法2.2注意事项**源字符串必须以 \0 结束****会将源字符串中的 \0拷贝到目标空间****目标空间必须可修改****目标空间必须能容纳下源字符串的内容** 2.3模拟实现 3.strn…

【深度学习】【语音TTS】GPT-SoVITS v2 实战,训练一个人的音色,Docker镜像

文章目录 原理Dockerdocker push训练教程: https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/xyyqrfwiu3e2bgyk 原理 Docker 不用docker不行,不好分配显卡, 做个docker镜像: docker pull pytorch/pytorch:2.1.2

windows 本地安装 Llama3.1 记录

1. 参考博客&#xff1a;1. 只要8G显卡&#xff01;本地运行最强Llama 3.1大模型&#xff01;&#xff1a;https://zhuanlan.zhihu.com/p/711409433 2. 只要8G显卡&#xff01;本地运行最强Llama 3.1大模型&#xff01;&#xff1a;https:/…

接口基础知识9:详解response body(响应体)

课程大纲 一、定义 HTTP响应体&#xff08;HTTP Response Body&#xff09;&#xff1a;服务器返回给客户端的数据部分&#xff0c;‌它包含了服务器对客户端请求的响应内容&#xff08;如客户端请求的资源、客户端请求的执行结果&#xff09;。 与请求类似&#xff0c;HTTP …

vue中父组件向子组件传值,子组件向父组件传值,简洁易懂

Vue中父组件传值到子组件 Vue中父组件传值分为两步&#xff1a; 一、父组件中代码中&#xff0c;使用属性绑定向子组件传递数据&#xff0c; 如图, 其中&#xff0c;:titles"title"就是在将父组件的title属性值&#xff0c;传递到子组件所绑定的titles属性中&#x…

python之matplotlib (3 坐标轴设置)

写在前面 在说明坐标轴设置之前&#xff0c;我有必要和大家说清楚图像设置的一些方法&#xff0c;避免陷入困扰模糊的地步。前面我们说过&#xff0c;画图的三种方法&#xff08;python之matplotlib &#xff08;1 介绍及基本用法&#xff09;-CSDN博客&#xff09;。而设置也…