亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Vue中引入svg圖標的兩種方式

瀏覽:2日期:2022-10-10 16:18:14

Vue中引入svg圖標的方式

Vue中引入svg圖標的方式一

安裝

yarn add svg-sprite-loader --dev

svg組件

Vue中引入svg圖標的兩種方式

index.vue

<!-- svg組件 --><template> <svg : aria-hidden='true'> <use :xlink:href='http://www.aoyou183.cn/bcjs/iconName' /> </svg></template><script>export default { name: ’SvgIcon’, props: { // svg 的名稱 svgName: { type: String, required: true } }, computed: { iconName () { return `#icon-${this.svgName}` }, svgClass () { if (this.svgName) { return ’svg-icon’ + this.svgName } else { return ’svg-icon’ } } }}</script><style lang='less' scoped>.svg-icon { width: 100px; height: 100px; vertical-align: -0.15em; fill: currentColor; overflow: hidden;}</style>

注冊到全局

Vue中引入svg圖標的兩種方式

index.js

import Vue from ’vue’import SvgIcon from ’@/components/SvgIcon’// 注冊到全局Vue.component(’svg-icon’, SvgIcon)const requireAll = requireContext => requireContext.keys().map(requireContext)const req = require.context(’./svg’, false, /.svg$/)requireAll(req)

vue.config.js

module.exports = {chainWebpack: config => { config.module .rule(’svg’) .exclude.add(resolve(’src/assets/icons’)) .end() config.module .rule(’icons’) .test(/.svg$/) .include.add(resolve(’src/assets/icons’)) .end() .use(’svg-sprite-loader’) .loader(’svg-sprite-loader’) .options({ symbolId: ’icon-[name]’ }) .end()} }

頁面中使用

<!-- svg-name為svg名 --><svg-icon svg-name='ic_home_news' />Vue中引入svg圖標的方式二

npm install svg-sprite-loader --save-dev

vue.config.js中添加如下代碼

const path = require(’path’);function resolve(dir) { // __dirname項目根目錄的絕對路徑 return path.join(__dirname, dir);}module.exports = { chainWebpack: config => { const svgRule = config.module.rule(’svg’); // 清除已有的所有loader // 如果你不這樣做,接下來的loader會附加在該規則現有的loader之后 svgRule.uses.clear(); svgRule .test(/.svg$/) .include.add(path.resolve(__dirname, ’./src/icons/svg’)) .end() .use(’svg-sprite-loader’) .loader(’svg-sprite-loader’) .options({ symbolId: ’icon-[name]’ }); const fileRule = config.module.rule(’file’); fileRule.uses.clear(); fileRule .test(/.svg$/) .exclude.add(path.resolve(__dirname, ’./src/icons/svg’)) .end() .use(’file-loader’) .loader(’file-loader’); },}

建立如下的文件目錄

Vue中引入svg圖標的兩種方式

SvgIcon.vue代碼

<template> <svg : xmlns='http://www.w3.org/2000/svg'> <use :xlink:href='http://www.aoyou183.cn/bcjs/iconName' xmlns:xlink='http://www.w3.org/1999/xlink' /> </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>

svg文件夾下放svg圖標

index.js代碼

import Vue from ’vue’;import SvgIcon from ’@/components/SvgIcon’; // svg組件// register globallyVue.component(’svg-icon’, SvgIcon);const req = require.context(’./svg’, false, /.svg$/);const requireAll = requireContext => requireContext.keys().map(requireContext);requireAll(req);

最后在main.js中引入

import ’./icons’;

在頁面中使用svg

icon-class是svg圖標名 class-name是你要自定義的class類名

<svg-icon icon- class-name='icon'></svg-icon>總結

到此這篇關于Vue中引入svg圖標的兩種方式的文章就介紹到這了,更多相關Vue引入svg圖標內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
主站蜘蛛池模板: 真人毛片免费拍拍拍aa视频 | 亚洲黄色片 | 国产在线五月综合婷婷 | 免费看成人毛片日本久久 | 成人免费无遮挡做性视频 | 免费无限制观看黄的网址 | 精品国产免费第一区二区三区日韩 | 久久99国产精品久久99软件 | 欧美国产成人精品一区二区三区 | 那个网站可以看毛片 | 在线高清一级欧美精品 | 亚洲精品一区二区三区福利 | 国产精品漂亮美女在线观看 | 香港aa三级久久三级不卡 | 窝窝免费午夜视频一区二区 | 在线看日本a毛片 | 久久福利国产 | 在线高清一级欧美精品 | 精品久久久久不卡无毒 | 沟沟人体一区二区 | 亚洲狠狠97婷婷综合久久久久 | 色婷婷综合久久久中文字幕 | 那个网站可以看毛片 | 日韩毛片免费视频 | 国产成人高清一区二区私人 | 国产精品久久久久久久久电影网 | 免费看午夜高清性色生活片 | 亚洲天堂视频网 | 日韩欧美国产亚洲 | 亚洲综合91社区精品福利 | 亚洲精品久久精品h成人 | 欧美日韩高清一区 | 中日韩一区二区三区 | 亚洲精品欧美一区二区三区 | 搞黄在线观看 | 91视频丝瓜| 亚洲婷婷六月 | 日韩一级片网址 | 国产区精品高清在线观看 | 久久久久久网站 | 久久精品乱子伦免费 |