美文网首页
vue项目中svg图标的自动化使用

vue项目中svg图标的自动化使用

作者: 时间染上空白 | 来源:发表于2019-05-05 15:59 被阅读0次

首先,这是一篇摘抄笔记,具体使用原理等更详细的内容,请参考原作者的 手摸手,带你优雅的使用 icon

想要更优雅(偷懒)的在项目中使用svg图标,肯定能想到的就是封装组件,但是光封装组件是不行滴,你还需要:

  1. 创建结构文件

src/components/SvgIcon/index.vue // 图标组件文件

<template>
    <svg :class="svgClass" aria-hidden="true" v-on="$listeners">
        <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>

src/icons/index.js // 处理svg文件夹中svg图标,并在Vue上注册全局组件

import Vue from 'vue'
import SvgIcon from '@/components/SvgIcon' // svg组件

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

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

src/icons/svg // svg图标文件存放文件夹,所有下载的svg图标全部放在这个文件中

  1. 使用 svg-sprite并配置config文件

    npm install svg-sprite-loader -D
    # via yarn
    yarn add svg-sprite-loader -D
    

    配置webpack.base.conf.js中的规则

    {
     ...其他代码省略
     module: {
        rules: [
          ...其他代码省略
          { // 这个花括号中都是新增的规则
            test: /\.svg$/,
            loader: 'svg-sprite-loader',
            include: [path.resolve(__dirname, "../src/icons")], // 确保这个路径正确
            options: {
              symbolId: 'icon-[name]'
            }
          },
          { // 这个规则中新增了exclude这一行
            test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
            exclude: [path.resolve(__dirname, "../src/icons")], // 确保这个路径正确
            use: {
              loader: 'url-loader',
              query: {
                limit: 10000,
                name: 'imgs/[name]--[folder].[ext]'
              }
            }
          }
        ]
      }
    }
    

    最后就可以在其他组件中愉快的使用了:<svg-icon icon-class="star"/>

相关文章

  • 项目使用svg图标

    vue-element-admin基础模板中,已经封装好了使用svg图标的组件,此组件在vue-ssr项目中也同样...

  • vue项目中svg图标的自动化使用

    首先,这是一篇摘抄笔记,具体使用原理等更详细的内容,请参考原作者的 手摸手,带你优雅的使用 icon 。想要更优雅...

  • vue使用svg

    vue使用svg 做的一个可视化大屏项目中需要引入svg, 直接绑定svg元素的某些值,在ui给的svg中出现了s...

  • 【SVG】Vue项目中使用SVG作为图标的组件(svg-spri

    本文目标 在Vue的前端项目开发中,我们在很多地方都会使用到图标,而当前SVG格式的图标被越来越多的采用。 在开发...

  • vue-cli3.x使用svg可复用图标

    vue-cli3.x使用svg可复用图标 在使用svg绘制时,对于可复用的图元,我们一般会使用标签 ,然后将每个图...

  • vue中 svg图标的使用

    项目地址:https://github.com/cenkai88/v...求star~~ 个人的第一个vue组件,...

  • SVG的引入及坑

    在Vue项目中使用需要先安装svg-sprite-loader 先在.d.ts文件中加入两行代码,如下 在vue....

  • iOS SVG及相关使用

    近日,发现安卓同学在项目中使用的都是SVG(矢量图)的图片。 那么,什么是svg呢?svg在放大或者缩小的情况下,...

  • Vue 引入 icon 图标

    安装 npm install vue-svg-icon --save-dev 使用 1. 阿里巴巴矢量图 选择需要...

  • vue项目中使用svg图标

    1.打开阿里巴巴字符图标库网站选择自己需要的图标 https://www.iconfont.cn/home/ind...

网友评论

      本文标题:vue项目中svg图标的自动化使用

      本文链接:https://www.haomeiwen.com/subject/ugrhoqtx.html