Vue中使用SVG图标的步骤

简介

svg 可缩放矢量图形(Scalable Vector Graphics)

svg 优势:任意缩放,超强显示效果,较小文件,可压缩

svgo 用来压缩svg中无用信息

svg-sprite-loader 将加载的 svg 图片拼接成 雪碧图,在其他地方通过 引用

在了解这些概念后,就上路吧! 这里概念排很少,大家可以到其他地方扩充知识~

上路

  1. 添加依赖

    "svg-sprite-loader": "4.1.3",
    "svgo": "1.2.0"
    

    方法一:复制到 package.json,执行 npm i

    方法二:直接安装npm i svg-sprite-loader svgo --save-dev

  2. 添加 svg 组件(创建components/SvgIcon/index.vue)

    <template><div v-if="isExternal" :style="styleExternalIcon" class="svg-external-icon svg-icon" v-on="$listeners" /><svg v-else :class="svgClass" aria-hidden="true" v-on="$listeners"><use :href="iconName" /></svg>
    </template><script>
    // 使用SvgIcon的文档: https://panjiachen.github.io/vue-element-admin-site/feature/component/svg-icon.html#usageexport default {name: 'SvgIcon',props: {iconClass: {type: String,required: true},className: {type: String,default: ''}},computed: {isExternal() {// 过滤网络链接,如果不是网络的资源会走向本地的svgreturn /^(https?:|mailto:|tel:)/.test(this.iconClass)},iconName() {return `#icon-${this.iconClass}`},svgClass() {if (this.className) {return 'svg-icon ' + this.className} else {return 'svg-icon'}},styleExternalIcon() {return {mask: `url(${this.iconClass}) no-repeat 50% 50%`,'-webkit-mask': `url(${this.iconClass}) no-repeat 50% 50%`}}}
    }
    </script><style scoped>
    .svg-icon {width: 1em;height: 1em;vertical-align: -0.15em;fill: currentColor;overflow: hidden;
    }.svg-external-icon {background-color: currentColor;mask-size: cover!important;display: inline-block;
    }
    </style>
    
  3. 使用svg组件(创建assets/icons/index.js)

    import Vue from 'vue'
    import SvgIcon from '@/components/SvgIcon'// svg component// 注册全局使用, 组件名是 <svg-icon>
    Vue.component('svg-icon', SvgIcon)// 使用的svg存放路径 ./svg
    const req = require.context('./svg', false, /\.svg$/)
    const requireAll = requireContext => requireContext.keys().map(requireContext)
    requireAll(req)
    
  4. 使用svgo压缩(创建assets/icons/svgo.yml)

    # replace default config# multipass: true
    # full: trueplugins:# - name## or:# - name: false# - name: true## or:# - name:#     param1: 1#     param2: 2- removeAttrs:attrs:- 'fill'- 'fill-rule'
  5. 在vue.config.js配置

    module.exports = {chainWebpack(config) {config.plugins.delete('preload') // TODO: need testconfig.plugins.delete('prefetch') // TODO: need test// set svg-sprite-loaderconfig.module.rule('svg').exclude.add(resolve('src/assets/icons')).end()config.module.rule('icons').test(/\.svg$/).include.add(resolve('src/assets/icons')).end().use('svg-sprite-loader').loader('svg-sprite-loader').options({symbolId: 'icon-[name]'}).end()}
    }
    
  6. 使用svg(注意:图片放到assets/icons/svg下)

     <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
    

Vue中使用SVG图标的步骤【钢镚核恒】相关推荐

  1. Vue中设置404错误页面【钢镚核恒】

    Vue错误页面 简介 错误页面:为了让用户在访问不到的情况下,有更好的体验和反馈 这里提供了使用步骤,上路! 有404.401组件模板,大家可以修改使用,或者自己动手造个更好的咯 上路 创建错误页面组 ...

  2. Vue 初始化样式之 normalize.css【钢镚核恒】

    Vue 初始化样式之 normalize.css 简介 normalize.css 的作用是初始化样式,例如: * {margin: 0;padding: 0;border: 0; } 在vue中使用 ...

  3. Spring MVC【钢镚核恒】

    Spring MVC 简介 Spring MVC是Spring体系的轻量级Web MVC框架 Spring MVC的核心Controller控制器,用于处理请求,产生响应 Spring MVC基于Sp ...

  4. Spring 【钢镚核恒】

    Spring 简介 Spring框架是企业开发复杂性的一站式解决方案 Spring框架的核心是loC容器与AOP面向切面编程 Spring loC负责创建与管理系统对象,并在此基础上扩展功能 使用 导 ...

  5. Java 算法之 “删除链表中倒数第k个节点”【钢镚核恒】

    删除链表中倒数第k个节点 简介 题目描述:给定⼀个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点[Leetcode] 链表中倒数第k个节点 , 和这篇文章使用的方法一致,就是变成找到倒数k+ ...

  6. Java 探究集合List、Map、Set底层的数据结构【钢镚核恒】

    Java 集合 简介 集合 (collection)是存储对象的容器.例如:6个人一个团队(集合) 集合与数组类通,数组是存储具体数据的容器.集合的底层有用到数组 这篇文章是加深对集合的理解,探究各种 ...

  7. Java 面向对象 【钢镚核恒】

    Java 面向对象 简介 类和对象 类是模子,确定对象将会拥有的特征(属性)和行为(方法) 对象是类的实例表现 类是对象的类型 对象是特定类型的数据 类,抽象的概念-模板 对象,-个看得到.摸得着的具 ...

  8. Java 原始的JDBC方式连接MySQL数据库【钢镚核恒】

    Java JDBC 简介 JDBC(Java DataBase Connectivity,Java数据库连接) JDBC 可让Java通过程序操作关系型数据库 JDBC 基于驱动程序实现与数据库的连接 ...

  9. Java 简介之JVM、JDK、JRE【钢镚核恒】

    Java 简介 Java是一门面向对象的程序设计语言 1995年由sun公司发布 2010年sun公司被Oracle公司收购 JVM JVM(Java Virtual Machine),Java虚拟机 ...

最新文章

  1. autoconfig oracle,ORACLE EBS 执行autoconfig time out
  2. 各种说明方法的例句_说明方法和例句
  3. python之setdefault()和defaultdict()处理缺失值的键
  4. php strncmp,PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
  5. Genymotion 启动app闪退解决方案
  6. DataGridView使用技巧二:设置单元格只读
  7. 数据库系统概论 -- 第一章 绪论(知识点)
  8. 怎么隐藏运行linux控制台,Win10秘笈:如何隐藏任意程序运行界面? - IT之家
  9. 微信小程序服务器配置流程 免费开启HTTPS
  10. js下载PDF文件流,打开空白问题
  11. ConvLSTM-AE for VAD (ICME2017-SIST)
  12. 微信智能机器人助手,基于hook技术,自动聊天机器人
  13. python爬虫之51job工作搜索
  14. Mac系统入门之怎么切换输入法
  15. css层叠样式表——css基础介绍
  16. Juniper 一月安全更新修复200多个漏洞
  17. pipeline设计模式
  18. Redis怎么优雅删除key
  19. 删除临时文件夹中的特定名称模式目录
  20. 3个简单好用的视频提取字幕工具,效率极高,建议收藏

热门文章

  1. 国家不幸诗家幸,赋到沧桑句便工
  2. 快速学习POI- POI报表的概述
  3. 介绍Animator
  4. css中背景颜色用哪个,CSS 背景颜色
  5. 为什么 deep learning
  6. Net Core 管理员身份运行CMD 源码
  7. 金属件、塑料件尺寸测量及缺陷检测案例
  8. basename命令详解
  9. 导出Word遇到的坑及解决方法(一)!
  10. android二级联动spinner,怎么使用Spinner实现省市的二级联动功能