首页 > 其他分享 >VUE3.0 中如何使用SVG图标

VUE3.0 中如何使用SVG图标

时间:2024-05-14 11:09:12浏览次数:17  
标签:index sprite SVG loader VUE3.0 svg icon SvgIcon 图标

1.文件下新建SvgIcon文件夹以及子文件index.js,index.vue,svg文件夹(用于存放svg图片)

 

2.编写index.vue组件

复制代码
<template>
  <svg :class="svgClass"  aria-hidden="true">
    <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 () {
      console.log('this.className')
      console.log(this.className)
      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;
  color:#333;
  /* fill: currentColor; */
  /*  */
  padding:0px 5px 0px 8px;
}
</style>
复制代码

3.index.js

复制代码
//下面这个是导入svgIcon/svg下的所有svg文件

const requireAll = requireContext => requireContext.keys().map(requireContext)

 const req = require.context('./svg', false, /\.svg$/) 

 console.log("REQ", requireAll(req))

/*

   第一个参数是:'./svg' => 需要检索的目录,

   第二个参数是:false => 是否检索子目录,

   第三个参数是: /\.svg$/ => 匹配文件的正则

  */

requireAll(req);
复制代码

4.main.js中引入并全局注册

复制代码
import '@/SvgIcon/index.js'

import SvgIcon from '@/SvgIcon/index.vue'// svg组件



app.component('svg-icon', SvgIcon);
复制代码

5..安装svg-sprite-loader

npm install svg-sprite-loader --save-dev

6.配置vue.congfig.js

复制代码
    chainWebpack: (config) => {

        //配置 svg-sprite-loader
        // 第一步:让其他svg loader不要对src/icons进行操作
        config.module
        .rule('svg')
        .exclude.add(resolve('src/SvgIcon/svg'))//注意:路径要具体到存放的svg的路径下,不然会报错
        .end() // 第二步:使用svg-sprite-loader 对 src/icons下的svg进行操作
        config.module
        .rule('icons')
        .test(/\.svg$/)
        .include.add(resolve('src/SvgIcon/svg'))//注意:路径要具体到存放的svg的路径下,不然会报错
        .end()
        .use('svg-sprite-loader')
        .loader('svg-sprite-loader')
        //定义规则 使用时 <svg class="icon"> <use xlink:href="#icon-svg文件名"></use>  </svg>
        .options({
          symbolId: 'icon-[name]'
        })
        .end()
    },
复制代码

7.在页面内直接使用 svg-icon

<svg-icon icon-class="d" />

d:svg文件名称

finally

转载:https://www.jianshu.com/p/e82a85e2e04d

标签:index,sprite,SVG,loader,VUE3.0,svg,icon,SvgIcon,图标
From: https://www.cnblogs.com/shangyixuan/p/18190905

相关文章

  • vue2使用elementUI组件el-tooltip指定元素进行提示信息(图标显示信息)
     <el-table-columnprop="operation"label="操作"borderwidth="200px"><templateslot-scope="scope"><divclass="operation-icons"><!......
  • 解决iodraw为后缀的文件导出svg格式显示不全的问题
    解决iodraw为后缀的文件导出svg格式显示不全的问题前言:svg格式图片放大后不会失真,而png等其他格式都会失真。在写论文时绘制图后(绘图网址:在线绘图网址),以iodraw为后缀的文件导出svg格式显示不全,插入Word也存在显示问题。本篇主要提供解决这个问题的博客链接:链接1......
  • 【ubuntu】程序运行时的任务栏图标
    1.快捷方式需要正确的配置StartupWMClass属性,那么如何获取这个属性呢?参考如下命令xprop|grepWM_CLASS将终端程序小窗运行上述命令,鼠标点击哪个应用窗体就会获取哪个窗体的名称,有可能会有多个,多个情况任选其一2.将图标复制到 /usr/share/pixmaps/中,文心一言的问答提到......
  • vite react 使用 svg 文件当作图标
    svg可以当做图标导入react里面,如果用img标签弄的话,无法控制图标颜色和字体大小,但是把他当组件导入的话,就可以这么控制了,比较方便,并且也方便webstorm预览首先安装vite-plugin-svgrpnpmaddvite-plugin-svgr-D然后使用修改vite.config.jsimport{defineConfi......
  • https://github.com/long36708/long36708/blob/main/resources/img/grid-snake.svg 请
    对于这个文件,你可以将它放在你的GitHub仓库的"resources"目录下,通常也可以选择"assets"、"images"或者其他类似的名称。如果你还没有这样的目录,你可以按照以下步骤操作:在你的GitHub仓库中创建一个新的目录,可以命名为"resources"、"assets"、"images"或者其他你喜欢......
  • 前端使用 Konva 实现可视化设计器(9)- 另存为SVG
    请大家动动小手,给我一个免费的Star吧~大家如果发现了Bug,欢迎来提Issue哟~github源码gitee源码示例地址另存为SVG这一章增强了另存为的能力,实现“另存为SVG”,大概是全网唯一的实例分享了吧。灵感来源:react-konva-custom-context-canvas-for-use-with-canvas2svg大......
  • svg 进度条
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>Document</title&g......
  • Teamcenter之《BMIDE修改业务对象图标》
    准备图标图标可以在iconfonthttps://www.iconfont.cn/下载规格为16*16png即可重命名一个合适的名字,这里下载了两个,一个做为Item,一个为ItemRevision,如图:打开BMIDE上传图标找到对应类型修改并部署需要设置Item,itemRevision(有需要表单类型也可以修改图标)登陆查......
  • 【动画进阶】巧用 CSS/SVG 实现复杂线条光效动画
    最近,群里在讨论一个很有意思的线条动画效果,效果大致如下:简单而言,就是线条沿着不规则路径的行进动画,其中的线条动画可以理解为是特殊的光效。本文,我们将一起探索,看看在不使用JavaScript/Canvas的基础上,使用纯CSS/SVG的方式,我们可以如何大致的还原上述的线条动画效果。基于......
  • 使用 python matplotlib 将 LaTex 公式转为 svg
    使用pythonmatplotlib将LaTex公式转为svg,从而方便插入无法打出所需公式的ppt中。importmatplotlib.pyplotaspltdeflatex_formula2svg(text,font_size=12,save_fig='formula.svg'):plt.rc('text',usetex=True)#使用LaTeX渲染文本plt.rc('f......