vue項目本地svg圖標使用

提前準備:

1、一個本地的svg圖片

這個直接從網上找一個就行

2、文件整體目錄

在這里插入圖片描述

安裝插件

npm i vite-plugin-svg-icons

vite.config.ts中配置插件

在這里插入圖片描述

完整代碼

import { fileURLToPath, URL } from 'node:url'
import { resolve } from 'path'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import vueDevTools from 'vite-plugin-vue-devtools'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import px2rem from 'postcss-plugin-px2rem'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'const px2remOptions = {rootValue: 19.2,  //換算基數, 默認100 ,也就是1920px ,這樣的話把根標簽的字體規定為1rem為50px,這樣就可以從設計稿上量出多少個px直接在代碼中寫多少px了unitPrecision: 5, //允許REM單位增長到的十進制數字,其實就是精度控制// propWhiteList: [], // 默認值是一個空數組,這意味著禁用白名單并啟用所有屬性。// propBlackList: [], // 黑名單// exclude:false,  //默認false,可以(reg)利用正則表達式排除某些文件夾的方法,例如/(node_module)/ 。如果想把前端UI框架內的px也轉換成rem,請把此屬性設為默認值// selectorBlackList: [], //要忽略并保留為px的選擇器// ignoreIdentifier: false, //(boolean/string)忽略單個屬性的方法,啟用ignoreidentifier后,replace將自動設置為true。// replace: true, // (布爾值)替換包含REM的規則,而不是添加回退。mediaQuery: false, //(布爾值)允許在媒體查詢中轉換pxminPixelValue: 0  //設置要替換的最小像素值(3px會被轉rem)。 默認 0
}// https://vite.dev/config/
export default defineConfig({plugins: [vue(),vueJsx(),vueDevTools(),AutoImport({resolvers: [ElementPlusResolver()],}),Components({resolvers: [ElementPlusResolver()],}),createSvgIconsPlugin({// 指定需要緩存的圖標文件夾iconDirs: [resolve(process.cwd(), 'src/assets/icons')],// 指定symbolId格式symbolId: 'icon-[dir]-[name]',}),],resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))},},css: {postcss: {plugins: [px2rem(px2remOptions),],},},
})

創建自定義圖標組件svgIcon.vue

文件路徑:@/components/svgIncos/indexView.vue

<template><svg :style="{ width: size, height: size }"><use :href="prefix+name" :fill="color"></use></svg>
</template><script lang="ts" setup>
defineProps({prefix: {type: String,default: '#icon-',},name: {type: String,required: true,},color: {type: String,default: 'currentColor',},size: {type: String,default: '1em',},
})
</script>

注冊一下這個自定義的圖標組件:

在@/src/components/index.ts文件中

import SvgIcon from './svgIcons/indexView.vue'const allGloablCom = {SvgIcon,
}
export default {install(app) {Object.keys(allGloablCom).forEach((key) => {app.component(key, allGloablCom[key])})}
}

main.ts文件中引入

截圖:

在這里插入圖片描述

完整代碼:

import './assets/main.css'import { createApp } from 'vue'
import { createPinia } from 'pinia'
import ElementPlus from 'element-plus'
import zhCn from 'element-plus/es/locale/lang/zh-cn'
import en from 'element-plus/es/locale/lang/en'
//引入vite-plugin-svg-icons的腳本
import 'virtual:svg-icons-register'import './utils/rem.js'import gloalComponent from './components/index.ts'  // 引入自定義插件對象:注冊整個項目全局組件import App from './App.vue'
import router from './router'const app = createApp(App)app.use(gloalComponent)app.use(createPinia())
app.use(ElementPlus,{size:'small',zIndex:3000,locale:zhCn})
app.use(router)app.mount('#app')

使用:

隨便找個文件在其中使用:
當前文件地址(隨便新建一個vue文件) @/views/aboutView.vue

<template><SvgIcon name="logo" size="20px" :color="'#0aa1ed'"/>
</template><script setup lang="ts"> 
</script>

效果:

在這里插入圖片描述

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

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

相關文章

Go: 使用VS Code配置Go項目支持Windows與Linux雙系統調試

在現代軟件開發中&#xff0c;越來越多的開發者開始使用VS Code等集成開發環境&#xff08;IDE&#xff09;來提高生產力&#xff0c;特別是在支持遠程開發時。VS Code的遠程SSH功能&#xff0c;使得開發者可以在本地Windows電腦上&#xff0c;通過遠程SSH連接到Linux服務器&am…

萌新學 Python 之集合 set

集合 set&#xff1a;使用一對大括號&#xff0c;元素寫在大括號之間&#xff0c;使用逗號分隔 集合中的元素只能是不可變的數據類型&#xff0c;不能是列表、字典和集合 set1 {1, 2, 3} set2 {1, a, (1, 2, 3)} print(type(set1), type(set2)) # <class set> <c…

python中使用數據庫sqlite3

Python使用sqlite3數據庫 python3.x標準庫內置了SQLite3 查看sqlite的版本 import sqlite3 sqlite_version sqlite3.sqlite_version print(f"SQLite version: {sqlite_version}") 顯示 導入模塊連接sqlitte3 import sqlite3 consqlite3.connect("d:/fi…

maven使用默認settings.xml配置時,Idea基于pom.xml更新依賴時報錯,有些組件下載時連接超時

1、問題背景&#xff1a;maven使用默認settings.xml配置時&#xff0c;Idea基于pom.xml更新依賴時報錯&#xff0c;有些組件下載時連接超時&#xff0c; 通過日志發下&#xff0c;去連接maven.org網站下載依賴&#xff0c;有時候肯定會超時。 2、解決辦法&#xff1a;使用國外…

小狐貍ai3.1.2版本源碼無授權版本內 含搭建教程+各種上線教程

內容目錄 一、詳細介紹小狐貍3.1.2版本源碼&#xff0c;新增deepseek接口 文件夾說明&#xff1a; 1、后端&#xff1a;文件夾是后臺文件 5、.sql文件是數據庫文件后臺安裝步驟&#xff1a; 1、在寶塔新建個站點&#xff0c;php版本使用7.4&#xff0c;將“后端”文件夾里的文件…

C#之上位機開發---------C#通信庫及WPF的簡單實踐

〇、上位機&#xff0c;分層架構 界面層 要實現的功能&#xff1a; 展示數據 獲取數據 發送數據 數據層 要實現的功能&#xff1a; 轉換數據 打包數據 存取數據 通信層 要實現的功能&#xff1a; 打開連接 關閉連接 讀取數據 寫入數據 實體類 作用&#xff1a; 封裝數據…

Python Django 入門教程

Django 構建一個完整的博客平臺,包含用戶認證、評論、權限控制等功能。 環境搭建 安裝依賴 先確保已經安裝了 Python 環境,并通過 pip 安裝 Django 及其它依賴: pip install django pip install djangorestframework創建項目和應用 創建一個 Django 項目并進入該項目目錄:…

今日行情明日機會——20250217

2025年02月17日行情 后續投資機會分析 根據最新盤面信息&#xff0c;以下板塊和個股具備潛在投資機會&#xff0c;需結合市場動態和基本面進一步驗證&#xff1a; 1. 騰訊系AI&#xff08;18家漲停&#xff09; 核心邏輯&#xff1a;漲停家數最多&#xff08;18家&#xff0…

常見的IP地址分配方式有幾種:深入剖析與適用場景?

在數字互聯的世界里&#xff0c;IP地址如同網絡世界的“門牌號”&#xff0c;是設備間通信的基礎。隨著網絡技術的飛速發展&#xff0c;IP地址的分配方式也日趨多樣化&#xff0c;以適應不同規模、不同需求的網絡環境。本文將深入探討當前主流的幾種IP地址分配方式&#xff0c;…

快速搭建 OLLAMA + DeepSeek 模型并對接 Cherry Studio

快速搭建 OLLAMA DeepSeek 模型并對接 Cherry Studio 本文將指導您在基于 GPU 的 Ubuntu 服務器上快速搭建 OLLAMA&#xff0c;部署 DeepSeek 模型&#xff0c;并接入 Cherry Studio 進行使用。 環境說明 GPU 服務器: GeForce RTX 2080 Ti, 16 核, 64G 內存系統: Ubuntu 24.…

floodfill算法系列一>掃雷游戲

目錄 題目思路&#xff1a;代碼設計&#xff1a;代碼呈現&#xff1a; 題目思路&#xff1a; 代碼設計&#xff1a; 代碼呈現&#xff1a; class Solution {int m,n;int[] dx {0,0,-1,1,-1,-1,1,1};int[] dy {-1,1,0,0,-1,1,-1,1};public char[][] updateBoard(char[][] boa…

Java 中操作文件

文章目錄 Java 中操作文件File 概述屬性構造方法方法代碼示例文件內容的讀寫--數據流InputStream 概述常用方法FileInputStream 概述構造方法常用方法代碼示例通過 Scanner 進行字符讀取FileReaderOutputStream 概述常用方法FileOutputStream 概述構造方法常用方法代碼示例File…

什么是RDD以及它在Spark中的作用

RDD&#xff08;Resilient Distributed Dataset&#xff09;&#xff0c;即彈性分布式數據集&#xff0c;是Spark中最基本的數據抽象。以下是對RDD的詳細解釋以及它在Spark中的作用&#xff1a; 一、RDD的定義與特性 定義&#xff1a; RDD是一個不可變、可分區、里面的元素可并…

【附帶腳本】解決notion加載慢問題

問題原因 notion網站的服務器在國外&#xff0c;因為網絡問題&#xff08;國際出口帶寬限制&#xff09;導致訪問速度較慢和域名解析延遲等問題。 解決方案 通過在 hosts 文件中直接指定一個更快的 IP 地址&#xff08;例如國內鏡像服務器&#xff09;&#xff0c;可以顯著提…

Banana Pi OpenWRT One 官方路由器的第一印象

OpenWRT One是OpenWRT開源社區推出的首款官方開發板&#xff0c;與Banana Pi社區共同設計&#xff0c;由Banana Pi制造和發行。路由器采用藍色鋁合金外殼&#xff0c;質感極佳&#xff0c;視覺效果遠超宣傳圖。整體設計簡潔&#xff0c;呈長方形&#xff0c;雖然不是特別時尚&a…

【信息學奧賽一本通 C++題解】1285:最大上升子序列和

信息學奧賽一本通&#xff08;C版&#xff09;在線評測系統 基礎算法 第一節 動態規劃的基本模型 1285&#xff1a;最大上升子序列和 “最大上升子序列和”問題課堂講解 1. 理解題意 同學們&#xff0c;想象我們有一串數字&#xff0c;就像一串彩色的珠子&#xff0c;每個珠子…

刷題記錄Day4(補)

24. 兩兩交換鏈表中的節點 ① 使用虛擬節點 ② 最后返回頭結點的時候&#xff0c;head 本來的頭節點已經和第二位交換了&#xff0c;需要重新賦值 ③ 使用臨時指針保存變量 ④ 如果是空的不用特殊判斷&#xff0c;空的返回頭節點也還是空的 class Solution { public:ListNo…

花西子攜手賽博威共創新品創新平臺,驅動“新質美力”高質量發展

國貨彩妝品牌花西子與賽博威信息科技達成【新品創新平臺】項目合作&#xff0c;共探“新質美力”的高質量發展路徑。 近日&#xff0c;賽博威信息科技CEO陳國平攜團隊走進花西子“百年之詩”館&#xff0c;深入了解花西子的品牌理念、企業文化及百年愿景&#xff0c;并與花西子…

[JVM篇]垃圾回收器

垃圾回收器 Serial Seral Old PartNew CMS(Concurrent Mark Sweep) Parallel Scavenge Parallel Old G1 ZGC

在VScode內接入deepseek(本地部署版包會)

目錄 1. 首先得有vscode軟件 2. 在我們的電腦本地已經部署了ollama&#xff0c;我將以qwen作為實驗例子 3. 在vscode上的擴展商店下載continue 4. 下載完成后&#xff0c;依次點擊添加模型 5. 在這里可以添加&#xff0c;各種各樣的模型&#xff0c;選擇我們的ollama 6. 選…