vue3中引入svg矢量圖

vue3中引入svg矢量圖

  • 1、前言
  • 2、安裝SVG依賴插件
  • 3、在vite.config.ts 中配置插件
  • 4、main.ts入口文件導入
  • 5、使用svg
    • 5.1 在src/assets/icons文件夾下引入svg矢量圖
    • 5.2 在src/components目錄下創建一個SvgIcon組件
    • 5.3 封裝成全局組件,在src文件夾下創建plugin/index.ts
    • 5.4 在main.ts中引入plugin/index.ts文件
    • 5.5 在頁面使用

1、前言

在項目開發過程中,我們經常會用到svg矢量圖,而且我們使用svg以后,頁面上加載的不再是圖片資源,這對頁面性能來說是個很大的提升,而且我們svg文件比img要小的很多,放在項目中幾乎不占用資源。

2、安裝SVG依賴插件

npm install vite-plugin-svg-icons -Dyarn add vite-plugin-svg-icons -Dpnpm install vite-plugin-svg-icons -D

3、在vite.config.ts 中配置插件

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

4、main.ts入口文件導入

import 'virtual:svg-icons-register'

5、使用svg

5.1 在src/assets/icons文件夾下引入svg矢量圖

在這里插入圖片描述

5.2 在src/components目錄下創建一個SvgIcon組件

<template><svg :style="{ width, height }"><use :xlink:href="prefix + name" :fill="color"></use></svg>
</template><script setup>
defineProps({// 是否顯示prefix: {type: String,default: '#icon-',},name: String,color: {type: String,default: '#000',},width: {type: String,default: '16px',},height: {type: String,default: '16px',},})
</script><style lang='scss' scoped></style>

5.3 封裝成全局組件,在src文件夾下創建plugin/index.ts

//引入項目中的全局組件
import SvgIcon from '@/components/svgIcon.vue'//全局對象
const allGlobalComponents = { SvgIcon }//對外暴露插件對象
export default {install(app) {//注冊項目的全部組件Object.keys(allGlobalComponents).forEach((key) => {//注冊為全局組件app.component(key, allGlobalComponents[key])})},
}

5.4 在main.ts中引入plugin/index.ts文件

import GlobalComponents from '@/plugin'
app.use(GlobalComponents)

5.5 在頁面使用

<svg-icon name="tick" width="20px" height="20px"></svg-icon>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166961.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166961.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166961.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SQLserver 數據庫導入MySQL的方法

原文&#xff1a; https://blog.csdn.net/lht631935612/article/details/132086172#httpspanbaiducoms1TlLiRI9stxqTcwBJ5p6UAE993BEE68EA5EFBC9Ahttpspanbaiducoms1TlLiRI9stxqTcwBJ5p6UA2020E68F90E58F96E7A081EFBC9Av6d5_font_colordd0000v6d5font_8 下載鏈接&#xff1a;…

使用openfeign調用下載流的文件不完整的替代方案

OpenFeign是一種聲明式的Web服務客戶端&#xff0c;它使得編寫HTTP客戶端變得更加簡單和直觀。它使用了注解方式來描述HTTP API&#xff0c;使得開發者可以使用Java接口來調用遠程HTTP服務。 OpenFeign的核心特點包括&#xff1a; 聲明式API: 您可以使用注解聲明要調用的遠程AP…

一鍵創新 | 拓世法寶AI智能直播一體機激發房產自媒體創造力

在數字化時代&#xff0c;房產銷售已然不再是傳統的模式。隨著社交媒體和自媒體的興起&#xff0c;短視頻直播成為房產自媒體營銷的新風口。然而&#xff0c;行業也面臨著諸多挑戰&#xff0c;如何更好地利用新媒體拓展市場&#xff0c;提升自媒體效果成為擺在業內人士面前的難…

JMeter測試報錯422 Unprocessable Entity

添加HTTP信息頭&#xff1a; ? HTTP請求-》添加-〉配置元件-》HTTP信息頭管理器 ? 如果需要送json&#xff0c;需要添加Content-Type:application/json&#xff0c;否則會報【422 Unprocessable Entity】

好用的CRM系統到底有多重要?怎么選?

我們都知道&#xff0c;CRM軟件可以讓企業效率加倍。但如果選錯了CRM&#xff0c;企業損失點錢是小&#xff0c;客戶轉化率下降才是大。下面我們就來說說&#xff0c;市面上有哪些好用的CRM&#xff1f;以及好用的CRM軟件的重要性。 好用的CRM軟件的重要性&#xff1a; 客戶管…

Qt 軟件調試(一) Log日志調試

終于這段時間閑下來了&#xff0c;可以系統的編寫Qt軟件調試的整個系列。前面零零星星的也有部分輸出&#xff0c;但終究沒有形成體系。借此機會&#xff0c;做一下系統的總結。慎獨、精進~ 日志是有效幫助我們快速定位&#xff0c;找到程序異常點的實用方法。但是好的日志才能…

百度 文心一言 sdk 試用

JMaven Central: com.baidu.aip:java-sdk (sonatype.com) Java sdk地址如上&#xff1a; 文心一言開發者 文心一言 (baidu.com) ERNIE Bot SDK https://yiyan.baidu.com/developer/doc#Fllzznonw ERNIE Bot SDK提供便捷易用的接口&#xff0c;可以調用文心一言的能力&#…

口袋參謀:如何避免寶貝被降權?這招屢試屢爽!

?至少99.99999%的店鋪在今年都被降權過&#xff01;各家店鋪被降權的原因&#xff0c;無非就一個原因&#xff0c;那就是s單&#xff01; s單的風險也就兩種&#xff0c;一是操作問題&#xff0c;二是賬號問題。 操作問題被降權&#xff0c;這個大家都心知肚明&#xff0c;s…

5大原因,設備校準為什么是實驗室搬遷后的首要任務?

實驗室搬遷是一個復雜而緊張的過程。要考慮的事情太多&#xff0c;很容易忽視您最重要的任務之一——檢查設備在新環境中的性能。 校準對于確保設備安全運行和遵守監管標準至關重要。 1.保持合規性并遵守法律要求 生物技術和制藥等行業有特定的校準要求&#xff0c;實驗室必…

Java詳解之I/O[BIO、NIO、AIO使用方法和示范代碼]

前言&#xff1a; 小弟能力不足&#xff0c;認知有限&#xff0c;難免考慮不全面&#xff0c;希望大佬能給出更好的建議&#xff0c;指出存在的問題和不足&#xff0c;在此跪謝。 IO發展史 Java中對于I/O能力的支持主要分為三個比較關鍵的階段&#xff1a; BIO 第一個階段…

淺談安科瑞直流電表在印尼某基站的應用

摘要&#xff1a;本文介紹了安科瑞直流電表在印尼的應用。主要用于印尼某基站的電流電壓電能的計量&#xff0c;配合霍爾傳感器對基站進行計量。 Abstract: This article introduces the application of Acrel DC meters in base station in Indonesia.The device is measuri…

【此時不應有 \anaconda3\envs\ blenderproc \Library\ssl\cacert.pem】問題已解決

conda 創建新環境后&#xff0c;使用conda activate blenderproc命令激活環境時出現以下錯誤&#xff1a; 此時不應有 \anaconda3\envs\ blenderproc \Library\ssl\cacert.pem 其他博客里面https://blog.csdn.net/weixin_46599926/article/details/132576960解釋這個是因為co…

前端 HTML 和 JavaScript 的基礎知識有哪些?

前端開發是Web開發的一個重要領域&#xff0c;涉及到HTML&#xff08;Hypertext Markup Language&#xff09;和JavaScript兩個主要的技術。HTML用于定義網頁的結構和內容&#xff0c;而JavaScript用于實現網頁的交互和動態效果。以下是前端HTML和JavaScript的基礎知識&#xf…

如何做好測試管理崗?深度分析職業規劃

在給學生做職業規劃的時候&#xff0c;經常就有同學說&#xff1a;我以后要做管理崗&#xff01;其實對于很多剛入行的同學&#xff0c;可能說這句話的時候并沒有真正理解管理崗需要做什么事&#xff0c;以及需要具備什么樣的技能。所以&#xff0c;作為資深測試經理&#xff0…

飛翔的小鳥——Java

一、創建文件、包、類、插入圖片文件 二、app包 1、Gameapp類&#xff08;運行游戲&#xff09; package app;import main.GameFrame;public class Gameapp {public static void main(String[] args) {//游戲的入口new GameFrame();} } 三、main包 1、Barrier&#xff08…

無需外接顯示器,直接使用windows安裝樹莓派系統并可遠程桌面登錄

準備工作: 1.安裝樹莓派官方燒錄工具 raspberry pi imager 2.下載樹莓派系統鏡像(也可選擇在線下載安裝) 打開imager工具&#xff0c;選擇需要安裝包樹莓派版本 點擊"NEXT"&#xff0c;在彈出的選項中選擇編輯設置。 設置登錄名和密碼&#xff0c;已經所連接的wif…

統一用戶桌面壁紙怎么設置

統一用戶桌面壁紙的設置方法有多種&#xff0c;以下列舉兩種&#xff1a; 方法一&#xff1a;個人更換壁紙 1、右鍵桌面&#xff0c;鼠標選擇“個性化”。 2、進入個性化之后&#xff0c;單擊下面的“桌面背景”圖標。 3、點擊“瀏覽”選擇自己備好的桌面壁紙&#xff0c;點擊…

昇騰Atlas 200I DK A2實現安全帽識別

文章目錄 環境依賴編譯測試總結 環境依賴 軟件版本說明獲取方式mxVision5.0.RC2mxVision軟件包獲取方式Ascend-CANN-toolkit6.2.RC2Ascend-cann-toolkit開發套件包獲取方式Ubuntu22.04 代碼倉庫地址&#xff1a; https://gitee.com/ascend/ascend_community_projects/tree/31…

01_原理-事件循環

01_原理-事件循環 文章目錄 01_原理-事件循環一、瀏覽器的進程模型①&#xff1a;何為進程&#xff1f;②&#xff1a;何為線程&#xff1f;③&#xff1a;瀏覽器有哪些進程和線程&#xff1f; 二、渲染主線程是如何工作的&#xff1f;三、若干解釋①&#xff1a;何為異步&…

不展現報表直接打印

不展現直接打印可以考慮這么幾種方式&#xff1a;1、如果使用自帶 demo 下的 jsp&#xff0c;可以把展現報表的 div 設置為隱藏&#xff0c;點擊打印按鈕可以打印&#xff1b;如果按鈕都不想點&#xff0c;看下 toolbar.jsp 內打印按鈕的 js 函數&#xff0c;在 jsp 末尾調用一…