<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        VUE-cli3使用 svg-sprite-loader

        來源:懂視網 責編:小采 時間:2020-11-27 22:06:01
        文檔

        VUE-cli3使用 svg-sprite-loader

        VUE-cli3使用 svg-sprite-loader:VUE-cli3使用 svg-sprite-loader svg-sprite-loader 的插件,用來根據導入的 svg 文件自動生成 symbol 標簽并插入 html,接下來就可以在模版中方便地使用 svg-sprite 技術了。 使用 svg-sprite 的好處 頁面代碼清爽 可使用 ID 隨處重復調
        推薦度:
        導讀VUE-cli3使用 svg-sprite-loader:VUE-cli3使用 svg-sprite-loader svg-sprite-loader 的插件,用來根據導入的 svg 文件自動生成 symbol 標簽并插入 html,接下來就可以在模版中方便地使用 svg-sprite 技術了。 使用 svg-sprite 的好處 頁面代碼清爽 可使用 ID 隨處重復調

        VUE-cli3使用 svg-sprite-loader

        svg-sprite-loader 的插件,用來根據導入的 svg 文件自動生成 symbol 標簽并插入 html,接下來就可以在模版中方便地使用 svg-sprite 技術了。

        使用 svg-sprite 的好處

      1. 頁面代碼清爽
      2. 可使用 ID 隨處重復調用
      3. 每個 SVG 圖標都可以更改大小顏色
      4. 安裝插件

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

        webpack 配置,在Vue.config.js加入處理 svg 的 loader:

        const path = require('path')
        function resolve(dir) {
         return path.join(__dirname, '.', dir)
        }
        module.exports = {
         chainWebpack: config => {
         config.module.rules.delete("svg"); //重點:刪除默認配置中處理svg,
         //const svgRule = config.module.rule('svg')
         //svgRule.uses.clear()
         config.module
         .rule('svg-sprite-loader')
         .test(/\.svg$/)
         .include
         .add(resolve('src/icons')) //處理svg目錄
         .end()
         .use('svg-sprite-loader')
         .loader('svg-sprite-loader')
         .options({
         symbolId: 'icon-[name]'
         })
         },
         configureWebpack: () => ({
         // resolve: {
         // alias: require('./alias.config').webpack
         // }
         // module: {
         // rules: [{
         // test: /\.svg$/,
         // use: [{
         // loader: "svg-sprite-loader",
         // options: {
         // symbolId: 'icon-[name]'
         // }
         // }]
         // }]
         // }
         })
        }

        這時候發現還是不行啊, body 中并沒有看到 symbol 標簽。

        就是說只有我們自己引入的 svg 文件需要經過 svg-sprite-loader,那么就將這些 svg 統一放到一個目錄下,我這里放到了 src/icons

        然后要在用到的地方引入需要的svg

        import './src/icon/target.svg';

        重新啟動項目,終于在 html 中看到了 symbol 標簽!

        配置好了,就可以用了。使用方法很簡單,相較于原來插入 svg 圖標的方法(img src 或將 svg 整個寫入 html),用 svg-sprite 更加簡單且清爽:

        <svg><use xlink:href="#target" /></svg>

        嗯,就這樣短短一行。 xlink:href 中傳入 svg ID 就好了,由于在上面的配置文件中我們直接使用文件名作為 symbol 的 ID,所以這里傳入的 ID 即為你想顯示的圖標的 svg 文件名,記得加上 # 。

        自動導入

        你會發現,這里要想插入某個圖標,都得 import ,每用一個都要重復一遍這個流程,太麻煩,那么我們就讓 src/icons/svg/下的 svg 文件都自動導入吧。

        webpack 可以幫我們做到:

        // requires and returns all modules that match
        const requireAll = requireContext => requireContext.keys().map(requireContext);
        // import all svg
        const req = require.context('./assets/svg', true, /\.svg$/);
        requireAll(req);

        代碼實例:

        首先在main.ts中引入import './icons/index',

        icons/index.js,將icons/svg中的所有svg導入并注冊全局組件SvgIcon

        //SvgIcon組件代碼

        <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>

        接下來就可以使用組建了

        關于 require.context 的詳細用法,可以參考 webpack 文檔:dynamic requires

        這樣一來,每當我們修改或增加新的 svg,只要將文件往這個目錄下一扔,插件就會自動幫我們生成相應的 symbol 標簽啦,接下來就只管用吧

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        VUE-cli3使用 svg-sprite-loader

        VUE-cli3使用 svg-sprite-loader:VUE-cli3使用 svg-sprite-loader svg-sprite-loader 的插件,用來根據導入的 svg 文件自動生成 symbol 標簽并插入 html,接下來就可以在模版中方便地使用 svg-sprite 技術了。 使用 svg-sprite 的好處 頁面代碼清爽 可使用 ID 隨處重復調
        推薦度:
        標簽: 使用 VUE svg
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲伊人久久精品| 亚洲av无码日韩av无码网站冲| 亚洲综合一区二区国产精品| 国产91在线|亚洲| 久久www免费人成精品香蕉| 国产免费AV片在线播放唯爱网| 亚洲精品视频久久久| 亚洲国产综合自在线另类| 特级aaaaaaaaa毛片免费视频| 久久国产色AV免费看| 亚洲AV伊人久久青青草原| 亚洲在成人网在线看| 国产91色综合久久免费分享| 相泽亚洲一区中文字幕| 中文日韩亚洲欧美制服| 亚洲一区免费观看| 久久精品国产精品亚洲| 国产免费AV片在线观看| 亚洲av中文无码| 成人A片产无码免费视频在线观看| 国产男女猛烈无遮挡免费视频网站 | 亚洲成a人一区二区三区| 久久免费国产精品| 亚洲av日韩av不卡在线观看| 一级毛片在线播放免费| 国产男女猛烈无遮挡免费视频网站 | 好爽…又高潮了免费毛片| 亚洲一级二级三级不卡| 99在线精品免费视频九九视| 亚洲久本草在线中文字幕| 国内永久免费crm系统z在线| 亚洲精品免费在线视频| 一级毛片在线免费看| 亚洲精品亚洲人成在线播放| 免费一级毛片在线播放不收费 | 亚洲国产精品成人午夜在线观看| 日本人的色道免费网站| 国产亚洲综合一区二区三区| 国产无遮挡裸体免费视频| 你懂得的在线观看免费视频| 亚洲一区二区三区偷拍女厕|