亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

在vue項目中優雅的使用SVG的方法實例詳解

2019-11-19 12:25:06
字體:
來源:轉載
供稿:網友

1、基礎介紹

本文旨在介紹如何在項目中配置和方便的使用svg圖標。
本文以vue項目為例,當然在react中的使用原理基本相似。
svg圖標可以直接通過img標簽來使用,也可當做icon來使用。
本文是參考了鑫旭大佬的文章:SVG Sprite技術介紹。

2、配置

安裝svg-sprite-loader。通過vue-cli腳手架創建的項目默認情況下會使用 url-loader 對svg進行處理,所以需要處理下:

{ test: //.(png|jpe?g|gif|svg)(/?.*)?$/, loader: 'url-loader', options: {  limit: 10000,            name: utils.assetsPath('img/[name].[hash:7].[ext]') }}

cnpm i -D svg-sprite-loader。在static下新建svg文件夾,用來放置當做icon使用的svg,使用include,include和img做區分。然后修改webpack.base.conf.js配置,這樣svg-sprite-loader只會處理我們指定的static/svg下的文件:

 { test: //.svg$/, loader: 'svg-sprite-loader', include: [resolve('static/svg')], // include => 只處理指定的文件夾下的文件 options: {  symbolId: 'icon-[name]' } }, { test: //.(png|jpe?g|gif|svg)(/?.*)?$/, loader: 'url-loader', exclude: [resolve('static/svg')], // exclude => 不處理指定的文件夾下的文件 options: {  limit: 10000,  name: utils.assetsPath('img/[name].[hash:7].[ext]') } }

3、使用

在components下創建svg文件夾,創建Svg.vue文件:

 <svg :class="svgClass" aria-hidden="true"> <use :xlink:href="iconName" rel="external nofollow" ></use> </svg>

在utils文件夾下創建svgConfig文件夾,創建index.js文件,全局注冊svg-icon組件。

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

使用require.context自動導入文件,而不需要import一個個去引用:

const requireAll = requireContext => requireContext.keys().map(requireContext)const req = require.context('./../../../static/svg/', true, //.svg$/)requireAll(req)

4. 在main.js在執行:

import '@/utils/svgConfig'

到此我們就可以直接在項目中使用:

<svg-icon icon-class="users" />

4、優化

雖然現在已經可以使用svg-icon,當是還無法直觀的分辨svg,當svg文件比較多的時候,如果只能一個個的去查找將費時費力。為方便我們查找和使用svg,可以新建一個svg的列表頁。

在pages文件下新建SvgList.vue文件,iconsMap為導入的svg文件數組,handleClipboard方法為點擊復制的方法,通過安裝clipboard實現(cnpm i -S clipboard):

<div class="icons-wrapper"> <div v-for="item in iconsMap" :key="item" @click="handleClipboard(generateIconCode(item), $event)"> <el-tooltip placement="top">  <div slot="content">  {{generateIconCode(item)}}  </div>  <div class="icon-item">  <div>   <span class="svg-wrap" @click.stop>   <svg-icon :icon-class="item" />   </span>  </div>  <span>{{item}}</span>  </div> </el-tooltip> </div></div>

獲取iconsMap,在utils文件夾下創建svgConfig文件夾,generateIconsView.js文件, 當然如果你使用了vuex,也可以保存在vuex中的state中:

const data = { state: { iconsMap: [] }, generate (iconsMap) { this.state.iconsMap = iconsMap }}export default data

將數據保存在iconsMap中:

在SvgList.vue中使用:

<script>import icons from '@/utils/svgConfig/generateIconsView'export default { name: 'icons', data () { return {  iconsMap: [] } }, mounted () { const iconsMap = icons.state.iconsMap.map((i) => {  return i.default.id.split('-')[1] }) this.iconsMap = iconsMap }}</script>

添加點擊復制的提示和方法(cnpm i -S clipboard),在SvgList.vue中使用:

 methods: { generateIconCode (symbol) {  return `<svg-icon icon-class="${symbol}" />` }, handleClipboard (text, event) {  clipboard(text, event) }}

在路由添加SvgList.vue的路由信息,頁面效果如下:

總結

以上所述是小編給大家介紹的在vue項目中優雅的使用SVG的方法實例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人亚洲综合| 亚洲成人1234| xxxx欧美18另类的高清| 国产丝袜一区二区三区免费视频| 色噜噜狠狠狠综合曰曰曰| 国产日韩在线精品av| 欧美性理论片在线观看片免费| 欧美性视频网站| 日韩av电影在线网| 亚洲开心激情网| 亚洲欧洲日产国产网站| 久久久亚洲影院你懂的| 中文字幕精品网| 热门国产精品亚洲第一区在线| 日韩欧美主播在线| 久久夜色精品国产欧美乱| 久久九九有精品国产23| 日韩精品在线视频观看| 精品一区二区三区四区在线| 国产免费一区视频观看免费| 国产精品久久久久久久久免费看| 久久久人成影片一区二区三区| xxx欧美精品| 日韩精品小视频| 欧美又大又硬又粗bbbbb| 91麻豆国产语对白在线观看| 日韩欧美精品免费在线| 亚洲精品中文字幕av| 91在线观看欧美日韩| 国产精品一区专区欧美日韩| 欧美激情国产精品| 欧美另类高清videos| 久久久亚洲国产天美传媒修理工| 免费99精品国产自在在线| 成人国内精品久久久久一区| 亚洲一区二区三| 久久久久久久久久久免费精品| 久久久国产一区二区三区| 91在线观看免费高清| 69国产精品成人在线播放| 精品偷拍一区二区三区在线看| 日韩在线播放视频| 色婷婷综合久久久久| 欲色天天网综合久久| 欧美极品在线视频| 欧美高跟鞋交xxxxhd| 欧美激情亚洲自拍| 色琪琪综合男人的天堂aⅴ视频| 亚洲一区二区国产| 日韩成人在线免费观看| 久久这里只有精品99| 精品一区电影国产| 亚洲国产精品成人va在线观看| 欧美午夜精品久久久久久浪潮| 日韩电影中文字幕在线观看| 欧美老女人性生活| 欧美一区二区大胆人体摄影专业网站| 亚洲男人第一网站| 91九色视频在线| 亚洲高清久久久久久| 亚洲性av网站| 91人成网站www| 亚洲精品久久久一区二区三区| 欧美电影免费观看大全| 在线精品高清中文字幕| 亚洲人精品午夜在线观看| 欧美国产精品日韩| 日韩欧美国产免费播放| 欧美情侣性视频| 国产99久久精品一区二区| 川上优av一区二区线观看| 庆余年2免费日韩剧观看大牛| 国产精品一二三视频| 国产91精品久久久| 97精品国产97久久久久久| 亚洲欧洲在线看| 日韩av网址在线| 国产精品日日摸夜夜添夜夜av| 亚洲欧美精品在线| 久精品免费视频| 精品久久久久久久久国产字幕| 久久精品国产亚洲精品2020| 欧美日韩性视频在线| 成人美女免费网站视频| 欧美在线亚洲在线| 国产日韩在线看| 国产亚洲精品91在线| 岛国av一区二区在线在线观看| 国产在线日韩在线| 亚洲精品国精品久久99热一| 久热精品在线视频| 成人免费视频97| 一区二区三区动漫| 亚洲日韩欧美视频一区| 91精品久久久久久综合乱菊| 日韩精品视频观看| 日韩av理论片| 亚洲最大福利网| 91sa在线看| 亚州国产精品久久久| 91老司机精品视频| 国产精品视频地址| 日韩女在线观看| 自拍偷拍免费精品| 中文字幕在线看视频国产欧美在线看完整| 国产精品99久久99久久久二8| 亚洲国产精品成人一区二区| 美女视频久久黄| 中文日韩在线观看| 午夜欧美不卡精品aaaaa| 精品久久久免费| 不卡av电影在线观看| 91在线免费观看网站| 日韩精品欧美国产精品忘忧草| 亚洲成人久久电影| 日韩免费观看在线观看| 国产日韩在线看| 亚洲第一男人天堂| 国产精品一区二区三区久久| 91精品视频观看| 欧美xxxx14xxxxx性爽| 亚洲综合小说区| 亚洲一区二区三区视频| 不卡伊人av在线播放| 日韩视频欧美视频| 久久精品最新地址| 136fldh精品导航福利| 亚洲精品xxxx| 久久理论片午夜琪琪电影网| 亚洲系列中文字幕| 国外成人在线直播| 中日韩午夜理伦电影免费| 96精品久久久久中文字幕| 国产成人精品视频在线观看| 亚洲一区二区久久久久久久| 国产精品亚洲自拍| 国产日韩在线看| 国产亚洲激情在线| www.亚洲一区| 欧美激情在线播放| 97国产suv精品一区二区62| 亚洲精品色婷婷福利天堂| 国产精品美女午夜av| 性色av香蕉一区二区| 亚洲美女动态图120秒| 国语自产精品视频在免费| 性欧美亚洲xxxx乳在线观看| 国产精品青青在线观看爽香蕉| 乱亲女秽乱长久久久| 欧美日韩在线免费观看| 国产一区二区三区丝袜| 精品国产欧美一区二区五十路| 日韩资源在线观看| 国模精品一区二区三区色天香| 91高清免费在线观看| 国内精品视频一区| 中文字幕av一区二区| 国产精品一区电影| 在线亚洲欧美视频| 一区二区欧美亚洲| 亚洲女人天堂成人av在线| 狠狠躁夜夜躁人人爽超碰91| 久久国产精品久久久久久| 久久久久久久影视|