定制软件vue项目中使用svgIcon(svg-sprite-loader安装、配置及使用)

目录


前言

定制软件网页中经常会遇到一些定制软件自定义得小图标,定制软件为了保证图标不失真,定制软件我们经常使用svgIcon实现。定制软件接下来一起看看如何安装和配置把~


一、安装svg-sprite-loader

安装命令:npm install svg-sprite-loader -D  

二、

1.在components路径下新建svg/svgIcon.vue

代码如下:

  1. <template>
  2. <div
  3. v-if="isExternal"
  4. :style="styleExternalIcon"
  5. class="svg-external-icon svg-icon"
  6. v-on="$listeners"
  7. />
  8. <svg v-else :class="svgClass" aria-hidden="true" v-on="$listeners">
  9. <use :xlink:href="iconName" />
  10. </svg>
  11. </template>
  12. <script>
  13. import { isExternal } from '@/utils/validate'
  14. export default {
  15. name: 'SvgIcon',
  16. props: {
  17. iconClass: {
  18. type: String,
  19. required: true,
  20. },
  21. className: {
  22. type: String,
  23. default: '',
  24. },
  25. },
  26. computed: {
  27. isExternal() {
  28. return isExternal(this.iconClass)
  29. },
  30. iconName() {
  31. return `#icon-${this.iconClass}`
  32. },
  33. svgClass() {
  34. if (this.className) {
  35. return 'svg-icon ' + this.className
  36. } else {
  37. return 'svg-icon'
  38. }
  39. },
  40. styleExternalIcon() {
  41. return {
  42. mask: `url(${this.iconClass}) no-repeat 50% 50%`,
  43. '-webkit-mask': `url(${this.iconClass}) no-repeat 50% 50%`,
  44. }
  45. },
  46. },
  47. }
  48. </script>
  49. <style lang="stylus" scoped>
  50. .svg-icon {
  51. width: 1em;
  52. height: 1em;
  53. vertical-align: -0.15em;
  54. fill: currentColor; /* currentColor 表示一个变量,若未赋值color,则继承父级color */
  55. overflow: hidden;
  56. }
  57. .svg-external-icon {
  58. background-color: currentColor;
  59. mask-size: cover !important;
  60. display: inline-block;
  61. }
  62. </style>

2.在src目录下新建icons文件夹,包括一下文件

index.js 代码如下:

  1. import Vue from 'vue'
  2. import SvgIcon from '@/components/svg/svgIcon' // svg组件
  3. // 注册到全局
  4. Vue.component('svg-icon', SvgIcon)
  5. const requireAll = requireContext => requireContext.keys().map(requireContext)
  6. const req = require.context('./svg', false, /\.svg$/)
  7. requireAll(req)

svgo.yml代码如下:

  1. # replace default config
  2. # multipass: true
  3. # full: true
  4. plugins:
  5. # - name
  6. #
  7. # or:
  8. # - name: false
  9. # - name: true
  10. #
  11. # or:
  12. # - name:
  13. # param1: 1
  14. # param2: 2
  15. - removeAttrs:
  16. attrs:
  17. - 'fill'
  18. - 'fill-rule'

 

三、配置svg--loader

找到vue.config.js ,添加以下配置:

  1. chainWebpack: (config) => {
  2. config.module.rules.delete('svg')
  3. config.resolve.symlinks(true)
  4. config.resolve.alias
  5. .set('@', resolve('src'))
  6. .set('~@', resolve('src/assets'))
  7. .set('@c', resolve('src/components'))
  8. .set('static', resolve('src/static'))
  9. config.module
  10. .rule('svg-sprite-loader')
  11. .test(/\.svg$/)
  12. .include.add(resolve('src/icons')) // 处理svg目录
  13. .end()
  14. .use('svg-sprite-loader')
  15. .loader('svg-sprite-loader')
  16. .options({
  17. symbolId: 'icon-[name]',
  18. })
  19. },

四、使用组件

 <svg-icon :icon-class="item.icon" class="icon_padding" />

五、配置被选中时的颜色

1.检查svg源文件

这里注意查看 icons/svg  下面得文件,fill属性需要改成currentColor(当前颜色,如果没有则继承父节点颜色)

如下:

 注意:

  1. a不需要改变,默认是svg背景色,只需要改变.b就可以
  2. 如果是行内元素则直接写: fill="currentColor"

2.配置选中后得颜色

这里我得使用场景是侧边栏,所以我会直接改变填充颜色:

  1. .el-menu-item.is-active.icon_padding{
  2. fill:#2F51FF !important
  3. }

就这样就可以啦,是不是非常简单鸭~

对了,如果你要改变svg大小,推荐你使用上述方式,而不要直接改变组件里面得大小~

如下:

  1. .icon_padding{
  2. width: 16PX !important;
  3. height: 16PX !important;
  4. margin-right: 8PX
  5. }


总结

以上就是今天要讲的内容,本文仅仅简单介绍了安装、封装svg图标、使用及配置,很简单啦,试起来吧,宝子们~

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发