Vue3+vite實(shí)現(xiàn)使用svg可改變顏色的全過程
vue3 + vite 使用 svg
1、安裝插件
npm install vite-plugin-svg-icons -D npm install fast-glob -D
2、配置插件 vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
// 引入svg插件
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
const pathResolve = (pathStr) => {
return path.resolve(__dirname, pathStr)
}
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
vue(),
createSvgIconsPlugin({
// 指定需要緩存的svg圖標(biāo)文件夾,即需要識(shí)別的svg都應(yīng)該放在這個(gè)文件夾下
// iconDirs: [path.resolve(process.cwd(), 'src/assets/svgs')],
// 或
iconDirs: [pathResolve('./src/assets')],
// 指定symbolId格式(這里的配置與6.2步驟中的引入svg組件的name配置項(xiàng)寫法有關(guān))
symbolId: 'icon-[dir]-[name]',
}),
],
resolve: {
// 設(shè)置路徑別名
alias: {
'@': pathResolve('./src'),
}
},
})
3、根據(jù)vite配置的svg圖標(biāo)文件夾,建好文件夾,把svg圖標(biāo)放入

4、在 src/main.js內(nèi)引入注冊(cè)腳本
import 'virtual:svg-icons-register'

5、創(chuàng)建一個(gè)公共SvgIcon.vue組件
src/components/SvgIcon.vue
<template>
<svg aria-hidden="true" class="svg-icon">
<use :xlink:href="symbolId" rel="external nofollow" />
</svg>
</template>
<script>
import { defineComponent, computed } from 'vue'
export default defineComponent({
name: 'SvgIcon',
props: {
// 使用的svg圖標(biāo)名稱,也就是svg文件名
name: {
type: String,
required: true,
},
prefix: {
type: String,
default: 'icon',
}
},
setup(props) {
const symbolId = computed(() => `#${props.prefix}-${props.name}`)
return { symbolId }
},
})
</script>
<style scope>
.svg-icon {
width: 26px;
height: 26px;
fill: currentColor;
}
</style>
6、全局注冊(cè)SvgIcon.vue組件
在main.js中引入SvgIcon.vue組件,全局注冊(cè)后在需要使用SvgIcon組件的地方將無(wú)需再引入。
import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import 'virtual:svg-icons-register'
import SvgIcon from './components/SvgIcon.vue'
createApp(App).component('SvgIcon', SvgIcon).mount('#app')
7、在想要引入svg的vue組件中引入
已App.vue 示例
<template>
<!-- 使用不是在svgs目錄中嵌套文件夾下的svg圖標(biāo)的name寫法:寫上svg圖標(biāo)文件名即可 -->
<SvgIcon class="delete-icon" name="home-fill"></SvgIcon>
<!-- 使用是在svgs目錄中嵌套文件夾下的svg圖標(biāo)的name寫法:中劃線前面是文件夾名稱,后面是svg圖標(biāo)文件名稱 -->
<!-- <SvgIcon class="edit-icon" name="msg-iconEdit"></SvgIcon> -->
</template>
<style lang="scss">
// 自定義svg顏色,寬高等樣式
// 注意:這里之所以能自定義svg顏色,是因?yàn)槲以?svg文件中把fill="xxx顏色值" 改為了fill="currentColor" (見下面第7步驟描述) 建議直接刪掉 fill
.delete-icon {color: pink;}
.delete-icon:hover{
color: blue;
}
</style>
8、如果想要用color控制svg圖標(biāo)顏色,那么需要修改.svg文件中的fill屬性 建議直接刪掉 fill

到此這篇關(guān)于Vue3+vite實(shí)現(xiàn)使用svg可改變顏色的全過程的文章就介紹到這了,更多相關(guān)Vue3+vite使用svg內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue手把手教你擼一個(gè) beforeEnter 鉤子函數(shù)
這篇文章主要介紹了Vue手把手教你擼一個(gè) beforeEnter 鉤子函數(shù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04
Vue2.0子同級(jí)組件之間數(shù)據(jù)交互方法
下面小編就為大家分享一篇Vue2.0子同級(jí)組件之間數(shù)據(jù)交互方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-02-02
前端vue-cli項(xiàng)目中使用img圖片和background背景圖的幾種方法
這篇文章主要介紹了前端vue-cli項(xiàng)目中使用img圖片和background背景圖的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
element-ui之解決select無(wú)法回顯的問題
這篇文章主要介紹了element-ui之解決select無(wú)法回顯的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
vue使用localStorage保存登錄信息 適用于移動(dòng)端、PC端
這篇文章主要為大家詳細(xì)介紹了vue使用localStorage保存登錄信息 適用于移動(dòng)端、PC端,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05
vue實(shí)例成員?插值表達(dá)式?過濾器基礎(chǔ)教程示例詳解
這篇文章主要為大家介紹了vue實(shí)例成員?插值表達(dá)式?過濾器基礎(chǔ)教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
Vue3項(xiàng)目實(shí)現(xiàn)前端導(dǎo)出Excel的示例代碼
這篇文章主要介紹了Vue3項(xiàng)目實(shí)現(xiàn)前端導(dǎo)出Excel的示例,在vue3的項(xiàng)目中導(dǎo)出Excel表格的功能,可以借助xlsx庫(kù)來實(shí)現(xiàn),下面是詳細(xì)的操作步驟,需要的朋友可以參考下2025-01-01
vue項(xiàng)目創(chuàng)建步驟及路由router
本文主要給大家分享了vue項(xiàng)目的創(chuàng)建步驟以及vue路由router的相關(guān)知識(shí)點(diǎn),非常的實(shí)用,有需要的小伙伴可以來參考下2020-01-01

