svg圖標(biāo)封裝

PS:注意如果在iconfont上下載的SVG圖標(biāo),請把fill="#ffffff"清除掉,不然自定義樣式無法作用到圖標(biāo)上。

PS:webpack3及以下和webpack4配置略有不同,?webpack4的SVG配置請參考


npm install -g svgo

svgo -f ./src/icons/svg

npm install svg-spribe-loader -D

配置build/webpack.base.conf.js

{

test: /\.svg$/,

loader: 'svg-sprite-loader',

include: [resolve('src/icons')],

options: {

symbolId: 'icon-[name]'

}

},


{

test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,

loader: 'url-loader',

exclude: [resolve('src/icons')],

options: {

limit: 10000,

name: utils.assetsPath('img/[name].[hash:7].[ext]')

}

},

組件:svgicon.vue

、、、

<template>

<svg :class="svgClass" aria-hidden="true">

<use :xlink:href="iconName"/>

</svg>

</template>


<script>

export default {

name: 'SvgIcon',

props: {

iconClass: {

type: String,

required: true

},

className: {

type: String,

default: ''

}

},

computed: {

iconName() {

return `#icon-${this.iconClass}`

},

svgClass() {

if (this.className) {

return 'svg-icon ' + this.className

} else {

return 'svg-icon'

}

}

}

}

</script>


<style scoped>

.svg-icon {

width: 1em;

height: 1em;

vertical-align: -0.15em;

fill: currentColor;

overflow: hidden;

}

</style>

、、、


src/icons/index.js

、、、

import Vue from 'vue'

import SvgIcon from '@/components/SvgIcon' // svg組件


// register globally

Vue.component('svg-icon', SvgIcon)


const requireAll = requireContext => requireContext.keys().map(requireContext)

const req = require.context('./svg', false, /\.svg$/)

requireAll(req)

、、、

main.js

import ‘@/icons’

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容