首页 > 其他分享 > SvgIcon svg-icon

SvgIcon svg-icon

时间:2022-09-20 09:57:41浏览次数:39  
标签:return name svg loader SvgIcon icon

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

 

 用法

    <el-input type="text" auto-complete="off" placeholder="账号">
        <svg-icon slot="prefix" icon-class="user"/>
    </el-input>

配置
1.开发依赖安装svg-sprite-loader

npm install svg-sprite-loader -D 


2.components中引入SvgIcon

在components路径下新建svg/svgIcon.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 :xlink:href="iconName" />
      </svg>
    </template>
     
    <script>
    import { isExternal } from '@/utils/validate'
     
    export default {
      name: 'SvgIcon',
      props: {
        iconClass: {
          type: String,
          required: true,
        },
        className: {
          type: String,
          default: '',
        },
      },
      computed: {
        isExternal() {
          return isExternal(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 lang="stylus" scoped>
    .svg-icon {
      width: 1em;
      height: 1em;
      vertical-align: -0.15em;
      fill: currentColor; /*  currentColor 表示一个变量,若未赋值color,则继承父级color */
      overflow: hidden;
    }
     
    .svg-external-icon {
      background-color: currentColor;
      mask-size: cover !important;
      display: inline-block;
    }
    </style>
 

3.增加src/icons/index.js

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

svgo.yml代码如下:

    # replace default config
     
    # multipass: true
    # full: true
     
    plugins:
     
      # - name
      #
      # or:
      # - name: false
      # - name: true
      #
      # or:
      # - name:
      #     param1: 1
      #     param2: 2
     
    - removeAttrs:
        attrs:
          - 'fill'
          - 'fill-rule'



4.修改 vue.config.js(没有就增加这个文件)



    const path = require('path')
    function resolve (dir) {
      return path.join(__dirname, dir)
    }
    module.exports = {
      chainWebpack (config) {
        // set svg-sprite-loader
        config.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()
      }
    }

5.main.js中

import '@/assets/icons' // icon

 
————————————————
https://blog.csdn.net/DW14687/article/details/124841186

https://blog.csdn.net/qq_41072190/article/details/123395020

https://blog.csdn.net/weixin_45774042/article/details/126593567

标签:return,name,svg,loader,SvgIcon,icon
From: https://www.cnblogs.com/emanlee/p/16709471.html

相关文章

  • linux交叉编译libiconv
    1.解压libiconv-1.14.tar2.进入解压后目录libiconv-1.143.执行交叉编译环境命令,例如:source/home/huhe/environment-setup-aarch64-poky-linux 4.执行配置./conf......
  • 【C#】无损转换Image为Icon
     https://www.cnblogs.com/ahdung/p/ConvertToIcon.html 备忘【C#】无损转换Image为Icon如题,市面上常见的方法是:varhandle=bmp.GetHicon();//得到图标句柄......
  • iconfont-阿里巴巴矢量图使用
    一、iconfont的使用1、登录http://www.iconfont.cn/ 阿里巴巴矢量图标库,github或微博登录2、找到自己需要的图标 选择自己喜欢的图标然后点击购物车二、生成代码......
  • Redis 用 IConnectionMultiplexer 连接 订阅消息
    创建订阅类:usingStackExchange.Redis;namespaceTestWebApplication.BackgroundTasks{///<summary>///Redis订阅者,长时间运行的后台服务///</su......
  • manim svg Transform
    Transform基于路径的条数来操作1、如果从n条路径Transform到n条路径,那么只有Transform效果(最佳效果)(这里的一条路径可以是闭合的,也可以是不闭合的,也可以是闭合但有分支的)2......
  • CentOS系统下,配制nginx访问favicon.ico
    sudovim/etc/nginx/nginx.conf添加以下配制:#setsitefaviconlocation/favicon.ico{roothtml;} 完整配置如下:server{listen80;server_na......
  • svg中插入动画
     <svgid="shape"xmlns="http://www.w3.org/2000/svg"xmlns:xlink="http://www.w3.org/1999/xlink"viewBox="002916"shape-rendering="geometricPrecision"text......
  • 配置IConfiguration
    前言配置是我们必不可少的功能,我们在开发中,经常会遇到需要获取配置信息的需求,那么如何才能优雅的获取配置信息?我们希望新的配置:支持强类型配置变更后通知学习难度低......
  • Web字体简介_TTF_OTF_WOFF_EOT以及SVG
    Web字体简介_TTF_OTF_WOFF_EOT以及SVG字体格式有太多选择,不幸的是始终没有一个能在所有的浏览器上通用。这意味着,你必须使用多种字体的方案来保持用户跨平台的一致性体......
  • react-native-svg 使用
    github:https://github.com/react-native-svg/react-native-svg安装: [email protected]注意:如果运行yarnandroid报错Task......