svg矢量图有时候在项目中用起来当然要比图片用起来好。之前没有用过svg,这次花了一点时间在项目中支持了svg的使用,个人感觉用起来还是没有直接用font class的爽,然后又改成font class的使用,如下我说一下我是如何配置svg和font class的(这两者都是iconfont 的不同使用方法):

一. 使用svg

1. 在package.json中引入svg-sprite-loader

2. 在vue.config.js中配置webpack,代码如下:

  1. chainWebpack: config => {
  2. const svgRule = config.module.rule('svg')
  3. svgRule.uses.clear()
  4. svgRule
  5. .use('svg-sprite-loader')
  6. .loader('svg-sprite-loader')
  7. .options({
  8. symbolId: 'icon-[name]'
  9. })
  10. }

3. 在src下边创建一个icons文件夹(里面放需要用到的svg图标)

4.再写一个全局通用的组件SvgIcon.vue

  1. /*
  2. svg-icon的用法:
  3. 1. http://www.iconfont.cn网站上找到自己需要的图标
  4. 2. 设置自己需要的颜色(也可以直接下载下来再设置颜色)
  5. 3. 下载svg格式放到icons文件夹下边
  6. 4. 在别的文件中引用(import 'ICONS/***.svg')
  7. 5. 使用<svg-icon :icon-class="'***'" width="18" height="18"></svg-icon>
  8. */
  9. <template>
  10. <svg :class="svgClass" aria-hidden="true">
  11. <use :xlink:href="iconName"/>
  12. </svg>
  13. </template>
  14.  
  15. <script>
  16. export default {
  17. name: 'SvgIcon',
  18. props: {
  19. iconClass: {
  20. type: String,
  21. required: true
  22. },
  23. className: {
  24. type: String,
  25. default: ''
  26. }
  27. },
  28. computed: {
  29. iconName() {
  30. return `#icon-${this.iconClass}`
  31. },
  32. svgClass() {
  33. if (this.className) {
  34. return 'svg-icon ' + this.className
  35. } else {
  36. return 'svg-icon'
  37. }
  38. }
  39. }
  40. }
  41. </script>
  42.  
  43. <style lang="scss" scoped>
  44. .svg-icon {
  45. vertical-align: middle;
  46. fill: currentColor;
  47. overflow: hidden;
  48. }
  49. </style>

5. 因为上边的这个组件是全局通用的,所以要在项目加载的第一时间把它注册到全局Vue中去,在入口文件main.js中设置

  1. import SvgIcon from 'COMPONENTS/SvgIcon'
  2.  
  3. 。。。
  4.  
  5. Vue.component('svg-icon', SvgIcon)

6. 经上边的设置后,npm install ,重新build项目之后就可以了(像上边看到的ICONS 或 COMPONENTS,都是在配置文件中添加的路径别名)

二. 设置font class的使用

1. 在http://www.iconfont.cn创建一个的项目,然后把自己设计的svg图标上传到自己的项目下边(也可以把别的项目里面的图标加到购物车,再添加到自己的项目里)

2. 拷贝项目下边生成的fontclass代码(.css代码)

  1. //at.alicdn.com/t/font_8d5l8fzk5b87iudi.css

3. 挑选相应图标并获取其类名,应用于网页:

  1. <i class="iconfont icon-xxx"></i>

svg在vue-cli3中的配置的更多相关文章

  1. Vue Cli3 中别名的配置问题

    Vue Cli3 中别名的配置问题 vue-cli3中是没有config.build等目录的,这是因为vue-cli3中将这些配置隐藏起来了,如果想要修改,可以在vue.config.js文件中进行修 ...

  2. @vue/cli3中解决Elint中console.log报错的问题

    方法一:package.json中”eslintConfig”>"rules”字段添加如下代码 "no-console": "off", &qu ...

  3. 「Vue」Vue cli3中引用mui-ui问题及解决办法

    1.引用mui.js无效,top-bar划动,numbox点击无效等问题 解决办法: -main.js中import mui from './lib/mui/js/mui.js' Vue.protot ...

  4. Vue 项目中 ESlint 配置

    前言 对于 ESlint 这一块一直存在一些疑问,今天看到一个文章内容挺好的,这里拿来了. 一.eslint 安装 1.全局安装 npm i -g eslint 全局安装的好处是,在任何项目我们都可以 ...

  5. 说下vue工程中代理配置proxy

    这个代理配置不需要后台进行ngnix代理跳转了,前端可以做.在vue.config.js文件中进行配置,如下: module.exports = { publicPath: process.env.V ...

  6. rem的在vue项目中使用配置,,浏览器的兼容性之Mate标签

    在vue中配置rem 位置:在APP.vue的script中,在export default之外 (()=>{ let winW = document.documentElement.clien ...

  7. vue项目中全局配置变量

    在项目中api管理需要用到全局变量,创建全局变量的方式也有很多. 1.通过export default const BASEURL = "http://localhost:3333/&quo ...

  8. 「Vue」vue cli3中axios的基本用法

    1.安装axiosnpm i axios -S2.main.js中设置import axios from 'axios'Vue.prototype.$axios = axiosPS:这里有个小坑,ax ...

  9. 前端vue开发中的跨域问题解决,以及nginx上线部署。(vue devServer与nginx)

    前言 最近做的一个项目中使用了vue+springboot的前后端分离模式 在前端开发的的时候,使用vue cli3的devServer来解决跨域问题 上线部署则是用的nginx反向代理至后台服务所开 ...

  10. vue cli3以上的项目中如何使用axois请求本地json文件

    首先明确一点,在vue cli3以上的版本中,存放静态资源的文件是public 我刚开始以为是和vue cli2一样需要放在static文件夹下,但是项目中没有这个文件夹,我就自己创建了一个,结果请求 ...

随机推荐

  1. 使用getInstance()方法的原因及作用

    使用getInstance()方法的原因及作用 先举例说明: 下面是一个例子,为什么要把这个类实例化?有什么好处? //实例化 public static DBConnect instance; pu ...

  2. ifconfig 网卡 下面的参数

    ifconfig  eth1 eth1 Link encap:Ethernet HWaddr 20:12:07:04:05:00 inet addr:172.16.77.174 Bcast:172.1 ...

  3. Java...点点点语法

    https://blog.csdn.net/IT_faquir/article/details/49131173

  4. Teamviewer远程控制

    设置无人值守的固定密码,不使用随机码进行远程控制访问 设置好密码之后,以后只要通过Teamviewer生成的固定ID,再加上你设置的密码就可以随时进行远程访问了,而不需要使用生成的随机码.

  5. Idea debug时报错:Command line is too long

    问题:写单元测试,debug时,报错 解决方法: 在项目/.idea/workspace.xml文件中添加一行代码如下 <component name="PropertiesCompo ...

  6. pandas第一课

    pandas第一课 首先是数据的准备 movies.dat user.dat ratings.dat 注意,这些数据都是通过::来隔开每一列的,每一列有各自的含义 现在通过pandas来读入数据 首先 ...

  7. puzz: 图片和表单上传的不一致问题

    1.    方向1 用户提交表单, 图片和表单同步上传.(由同一服务器处理, 服务器压力大. 没有分离) 2.    方向2 图片和表单分开上传. 如图片访问ftp,表单提交后台(图片和后台分离) 2 ...

  8. 必须学会git和maven

    转自: http://tieba.baidu.com/p/3458400116 很多人应该用过svn cvs之类的代码版本管理工具,git也是其中之一. svn和git最大的几个区别要点,svn必须要 ...

  9. 探索C++头文件解析方法

    最近一直在搞基于SWIG的C++接口翻译Java代码的工作.SWIG内部基于Bison(Yacc)的C/C++解析器,最近纠结于SWIG不能解析C++构造函数中的默认初始化赋值操作,想找一个能够补充此 ...

  10. 安装.net 服务时出现0x80131515错误的解决办法

    使用InstallUtil.exe安装一个用.NET写的Windows服务时,报错了,错误信息如下: Exception occurred while initializing the install ...