vue 使用 svg 小图标

Posted galina

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue 使用 svg 小图标相关的知识,希望对你有一定的参考价值。

1.首先安装

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

2. 在webpack.base.conf.js中手动添加

module: {
    {
        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]‘)
        }
    },
} 

3. 在src/components下新增一个文件夹 SvgIcon/index.vue,代码如下:

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

<script>
    export default {
        name: svg-icon,
        props: {
            iconClass: {
                type: String,
                    required: true
            },
        className: {
            type: String
          }
      },
    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>        

4. 在src下新增文件夹icons/svg存放svg图
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)

5. 在main.js中引入:

import ‘@/icons‘ // icon

6. 重新

npm run dev

7. vue的文件中就可以用啦!!  界面使用 如:

<svg-icon icon-class="userName" /> //userName是svg图的命名

  



 




以上是关于vue 使用 svg 小图标的主要内容,如果未能解决你的问题,请参考以下文章

vue中使用svg

vue中,svg图标添加click事件,部分浏览器不生效

如何在vue项目中使用svg图标

Vue项目中使用svg图标

在Vue中使用svg图标即封装自定义svg-icon标签

vite配置 vue3中怎么使用svg图标