zoukankan      html  css  js  c++  java
  • vue中使用svg并设置大小

    1、安装依赖

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

    2、 新建svg资源文件夹     src/assets/svg

          将svg资源放入此目录,接下来会在配置文件中该路径

     

    3、vue-cli 脚手架项目3.x 以上配置  vue.config.js

     1 const path = require('path')
     2 module.exports = {
     3   chainWebpack: config => {
     4     // svg rule loader
     5     const svgRule = config.module.rule('svg') // 找到svg-loader
     6     svgRule.uses.clear() // 清除已有的loader, 如果不这样做会添加在此loader之后
     7     svgRule.exclude.add(/node_modules/) // 正则匹配排除node_modules目录
     8     svgRule // 添加svg新的loader处理
     9       .test(/.svg$/)
    10       .use('svg-sprite-loader')
    11       .loader('svg-sprite-loader')
    12       .options({
    13         symbolId: 'icon-[name]',
    14       })
    15     // 修改images loader 添加svg处理
    16     const imagesRule = config.module.rule('images')
    17     imagesRule.exclude.add(path.resolve(__dirname, 'src/assets/svg'))      //注意这个路径,为svg资源文件的路径
    18     config.module
    19       .rule('images')
    20       .test(/.(png|jpe?g|gif|svg)(?.*)?$/)
    21   }
    22 }

    4、创建组件  SvgIcon.vue  ( src/compoments/SvgIcon.vue

     1 <template>
     2   <svg :class="svgClass" aria-hidden="true">
     3     <use :xlink:href="iconName"></use>
     4   </svg>
     5 </template>
     6 
     7 <script>
     8 export default {
     9   name: 'svg-icon',
    10   props: {
    11     iconClass: {
    12       type: String,
    13       required: true
    14     },
    15     className: {
    16       type: String
    17     }
    18   },
    19   computed: {
    20     iconName () {
    21       return `#icon-${this.iconClass}`
    22     },
    23     svgClass () {
    24       if (this.className) {
    25         return 'svg-icon ' + this.className
    26       } else {
    27         return 'svg-icon'
    28       }
    29     }
    30   }
    31 }
    32 </script>
    33 
    34 <style scoped>
    39 </style>

    5、组件注册(全局)  (src/utils/iconsSvg.js)

     1 import Vue from 'vue'
     2 import SvgIcon from '@/components/SvgIcon'   //引入第四步的组件
     3 
     4 // 全局注册组件
     5 Vue.component('svg-icon', SvgIcon)
     6 // 定义一个加载目录的函数
     7 const requireAll = requireContext => requireContext.keys().map(requireContext)
     8 const req = require.context('@/assets/svg', false, /.svg$/)                          //为svg资源文件的路径
     9 // 加载目录下的所有 svg 文件 10 requireAll(req)

    6、引入组件  main.js

    import './utils/iconsSvg'

    7、使用svg组件
    iconClass: svg文件的文件名
    className: svg图标的样式类名

     1 <template>
     2   <div>
     3     <p>小明同学的大头贴</p>
     4     <svg-icon iconClass="boy" className="boy"></svg-icon>
     5   </div>
     6 </template>
     7 
     8 <style scoped>
     9 .boy {
    10    200px;
    11   height: 200px;
    12 }
    13 </style>
  • 相关阅读:
    Redis常用命令详细介绍(摘抄)
    线性表和链表
    TCP传输连接中的SYN、ACK、SEQ、AN分别是什么意思?他们所带的数字又是代表什么?
    redis默认有16个数据库
    常见问题
    jquery-table2excel 不导出列(隐藏列,或指定列)
    AngularJS 防止页面闪烁的方法
    如何做好需求分析
    IIS 一个服务器下不同站点操作共享文件夹
    批量修改 mysql数据库编码格式(Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='格式错误)
  • 原文地址:https://www.cnblogs.com/shun1015/p/15236236.html
Copyright © 2011-2022 走看看