vue項目使用svg圖標

下面是在 Vue 3 項目中完整引入和使用?vite-plugin-svg-icons?的步驟

1、安裝插件

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

2、配置 Vite

在?vite.config.ts?或?vite.config.js?中配置:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import path from 'path'export default defineConfig({plugins: [vue(),createSvgIconsPlugin({// 指定需要緩存的圖標文件夾iconDirs: [path.resolve(process.cwd(), 'src/assets/svg')],// 指定symbolId格式symbolId: 'icon-[name]',// 可選配置svgoOptions: {plugins: [{ name: 'removeAttrs', params: { attrs: ['fill'] } } // 移除svg默認顏色]}})]
})

3. 創建 SVG 組件

<script setup>
import { computed } from 'vue'const props = defineProps({name: {type: String,required: true,},className: {type: String,default: '',},size: {type: [Number, String],default: 15,},circle: {type: Boolean,default: false,},color: String,defaultImg: String,
})
const style = computed(() => {const size = typeof props.size === 'string' ? props.size : `${props.size}px`return {width: size,height: size,borderRadius: props.circle ? '50%' : null,color: props.color,}
})
const symbolId = computed(() => `#icon-${props.name}`)
</script>
<template><svg aria-hidden="true" class="svg-icon" :class="className" :style="style"><use :xlink:href="symbolId" /></svg>
</template>
<style scoped>
.svg-icon {/* width: 30px;height: 30px; */display: inline-block;vertical-align: -2px;fill: currentColor;
}
</style>

4. 全局注冊組件

在?main.js?中:

import { createApp } from 'vue'
import App from './App.vue'
import 'virtual:svg-icons-register' // 引入注冊腳本
import SvgIcon from '@/components/SvgIcon.vue' // 引入組件const app = createApp(App)// 全局注冊svg組件
app.component('SvgIcon', SvgIcon)app.mount('#app')

5. 使用圖標

  1. 將 SVG 文件放入?src/assets/svg?目錄

  2. 在組件中使用:

    <div class="img-list" v-for="(item, index) in iconlist" :key="index" @click="itemClick(item)">
    <div class="default-img"><!-- 在組件中使用 --><SvgIcon :name="item.iconname" size="30" class="svg-icon" />
    </div>
    </div>
    const list = ref([{iconname: 'float-robot',id: 1},{iconname: 'float-wx',id: 2},{iconname: 'float-tell',id: 3},{iconname: 'float-qq',id: 4},{iconname: 'float-message-board',id: 5}
    ])
    <style scoped lang="scss">
    .img-list{padding: 20px;background: #fff;display: flex;flex-direction: column;justify-content: space-between;justify-items: center;height: 330px;cursor: pointer;box-shadow: 0px 0px 14px 0px rgba(0, 0, 0, 0.12);border-radius: 34px;box-sizing: border-box;&:hover {.default-img {.svg-icon {color: #005fff; // 默認顏色fill: currentColor; // 繼承color顏色transition: color 0.3s ease; // 添加過渡效果}}}
    }
    </style>
    

    最后看效果:鼠標經過svg圖標變藍色

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

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

相關文章

元器件基礎學習筆記——結型場效應晶體管 (JFET)

場效應晶體管&#xff08;Field Effect Transistor&#xff0c;FET&#xff09;簡稱場效應管&#xff0c;是一種三端子半導體器件&#xff0c;它根據施加到其其中一個端子的電場來控制電流的流動。與雙極結型晶體管 &#xff08;BJT&#xff09; 不同&#xff0c;場效應晶體管 …

拆解實戰案例:電商ERP管理系統從需求到原型全流程設計

ERP即企業資源計劃系統&#xff0c;全稱為Enterprise Resource Planning&#xff0c;其核心在于運用系統化管理思想&#xff0c;為企業員工及管理層構建一個提供決策支持的管理系統平臺。它匯聚貫通企業各個業務模塊產生的數據流&#xff0c;實現資源配置與業務流程高效協同。尤…

【面試題】如何保證MQ的消息不丟失、不重復

文章目錄 一、消息丟失問題的解決方案&#xff08;一&#xff09;發送端丟失&#xff08;二&#xff09;存儲端丟失1. 同步刷盤2. Broker 集群 &#xff08;三&#xff09;消費端丟失 二、消息重復問題的解決方案&#xff08;一&#xff09;唯一鍵約束&#xff08;二&#xff0…

ArcGIS Maps SDK for JavaScript:使用圖層過濾器只顯示FeatureLayer的部分要素

文章目錄 引言1 需求場景分析2精確過濾實現方案2.1 基礎過濾語法2.2 動態過濾實現 3 模糊查詢進階技巧3.1 LIKE操作符使用3.2 特殊字段處理 4. 性能優化與注意事項4.1 服務端vs客戶端過濾4.2 最佳實踐建議 5 常見問題解答 引言 在地圖應用開發中&#xff0c;圖層過濾是常見的需…

day25-計算機網絡-3

1. DNS解析流程 windows host文件是否配置域名對應的ip查詢本地DNS緩存是否有這個域名對應的ip詢問本地DNS&#xff08;網卡配置的&#xff09;是否知曉域名對應的ip本地DNS訪問根域名解析服務器&#xff0c;但是根DNS只有頂級域名的記錄&#xff0c;根告訴我們.cn頂級域名的D…

中達瑞和SHIS高光譜相機在黑色水彩筆墨跡鑒定中的應用

在文件檢驗與物證溯源領域&#xff0c;對書寫材料&#xff08;如墨水&#xff09;進行快速、準確、無損的鑒別至關重要。由陳維娜等人撰寫的《高光譜技術結合化學計量法鑒別黑色水彩筆墨跡》&#xff08;發表于《光譜學與光譜分析》2023年第7期&#xff09;利用中達瑞和SHIS凝采…

華為OD機考 - 水仙花數 Ⅰ(2025B卷 100分)

import java.util.*; public static Integer get(int count,int c){if(count<3||count>7){return -1;}//存儲每位數的最高位……最低位int[] arr new int[count];List<Integer> res new ArrayList<>();for(int i(int) Math.pow(10,count-1);i<(int) Math…

Go 標準庫 encoding/gob 快速上手

文章目錄 1.簡介2.基礎3.類型和值4.編碼細節5.安全6.主要函數6.1 注冊1. 接口的底層類型在運行時才能確定2.類型標識的唯一性3.安全性與顯式意圖4.與結構體的自動處理對比5.示例分析為什么不能像 JSON 那樣自動處理&#xff1f;總結 6.2 編碼6.3 解碼 7.示例7.1 編解碼結構體7.…

Ubuntu ifconfig 查不到ens33網卡

BUG&#xff1a;ifconfig查看網絡配置信息&#xff1a; 終端輸入以下命令&#xff1a; sudo service network-manager stop sudo rm /var/lib/NetworkManager/NetworkManager.state sudo service network-manager start - service network - manager stop &#xff1a;停止…

算法-數論

C-小紅的數組查詢&#xff08;二&#xff09;_牛客周賽 Round 95 思路&#xff1a;不難看出a數組是有循環的 d3,p4時&#xff0c;a數組&#xff1a;1、0、3、2、1、0、3、2....... 最小循環節為4&#xff0c;即最多4種不同的數 d4,p6時&#xff0c;a數組&#xff1a;1、5、3、…

CSS中text-align: justify文本兩端對齊

text-align: justify; 是 CSS 中用于控制文本對齊方式的屬性值&#xff0c;它的核心作用是讓文本兩端對齊&#xff08;分散對齊&#xff09;&#xff0c;使段落左右邊緣整齊排列。以下是詳細解析&#xff1a; 作用效果 均勻分布間距 瀏覽器會自動調整單詞/字符之間的間距&#…

WebFuture:啟動數據庫提示: error while loading shared libraries: libaio.so.1問題處理

問題分析 當出現./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory這個錯誤時&#xff0c;這意味著 MySQL 服務器&#xff08;mysqld&#xff09;在啟動過程中無法找到libaio.so.1這個共享庫文件。li…

74常用控件_QSpacerItem的使用

目錄 代碼?例: 創建?組左右排列的按鈕. Spacer 使?布局管理器的時候, 可能需要在控件之間, 添加?段空?. 就可以使? QSpacerItem 來表?. 核?屬性 屬性說明width寬度height高度hData水平方向的 sizePolicy - QSizePolicy::Ignored&#xff1a;忽略控件的尺寸&#xf…

vmware 設置 dns

vmware 設置 dns 常用的 DNS&#xff08;Domain Name System&#xff09;服務器地址可以幫助你更快、更安全地解析域名。以下是一些國內外常用的公共 DNS 服務&#xff1a; 國內常用 DNS 阿里云 DNS IPv4: 223.5.5.5、223.6.6.6IPv6: 2400:3200::1、2400:3200:baba::1特點&am…

從一次日期格式踩坑經歷,談談接口設計中的“約定大于配置“

從一次日期格式踩坑經歷&#xff0c;談談接口設計中的"約定大于配置" 背景 最近在對接一個第三方接口時&#xff0c;遇到了一個有趣的"坑"。接口文檔中要求傳入一個符合 RFC3339 格式的日期時間字符串&#xff0c;格式示例為&#xff1a;2019-10-01T08:1…

高考數學易錯考點01 | 臨陣磨槍

文章目錄 前言集合與函數不等式數列三角函數 前言 本篇內容下載于網絡&#xff0c;網絡上的都是以 WORD 版本呈現&#xff0c;缺字缺圖很不完整&#xff0c;沒法使用&#xff0c;我只是做了補充和完善。有空準備進行第二次完善&#xff0c;添加問題解釋的鏈接。 集合與函數 …

YOLO12 改進|融入 Mamba 架構:插入視覺狀態空間模塊 VSS Block 的硬核升級

在醫學圖像分割領域&#xff0c;傳統卷積神經網絡&#xff08;CNNs&#xff09;受限于局部感受野&#xff0c;難以捕捉長距離依賴關系&#xff0c;而基于 Transformer 的模型因自注意力機制的二次計算復雜度&#xff0c;在處理高分辨率圖像時效率低下。近年來&#xff0c;狀態空…

MATLAB遍歷生成20到1000個節點的無線通信網絡拓撲推理數據

功能&#xff1a; 遍歷生成20到1000個節點的無線通信網絡拓撲推理數據&#xff0c;包括網絡拓撲和每個節點發射的電磁信號&#xff0c;采樣率1MHz/3000&#xff0c;信號時長5.7s&#xff0c;單幀數據波形為實采 數據生成效果&#xff1a; 拓撲及空間位置&#xff1a; 節點電磁…

oss:上傳圖片到阿里云403 Forbidden

訪問圖片出現403Forbidden問題&#xff0c;我們可以直接登錄oss賬號&#xff0c;查看對應權限是否開通&#xff0c;是否存在跨域問題

香橙派3B學習筆記8:snap安裝管理軟件包_打包倆個有調用的python文件

現在嘗試一下打包多個有互相調用的 py程序&#xff1a; ssh &#xff1a; orangepi本地ip 密碼 &#xff1a; orangepi 操作系統發行版&#xff1a; 基于 Ubuntu 20.04.6 LTS&#xff08;Focal Fossa&#xff09;的定制版本&#xff0c;專門為 Orange Pi 設備優化。PRETTY_NAM…