svg的好处

  • 矢量性(无论图片放多大,都不会出现锯齿状模糊)
  • 利于seo

vue2中使用svg

1.安装依赖

npm install svg-sprite-loader -D

2.配置vue.config.js

 const resolve = dir => path.join(__dirname, dir);// 配置svgconfig.module.rule('svg').exclude.add(resolve('src/assets/sprites')).end();config.module.rule('sprites').test(/\.svg$/).include.add(resolve('src/assets/sprites')).end().use('svg-sprite-loader').loader('svg-sprite-loader').options({symbolId: 'icon-[name]',}).end();

3.在src/components下新建svgIcon组件

<template><svg :class="svgClass" aria-hidden="true" v-bind="$attrs" v-on="$listeners"><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() {if (this.className) {return `svg-icon ${this.className}`;}return 'svg-icon';},},
};
</script><style scoped>.svg-icon {width: 10em;height: 10em;fill: currentColor;overflow: hidden;}
</style>

4.在src/plugins下新建 svg-icon.js文件

import Vue from 'vue';
import SvgIcon from '@/components/svgIcon.vue';// svg component// register globally
Vue.component('svg-icon', SvgIcon);const req = require.context('../assets/icons/sprites', false, /\.svg$/);
const requireAll = requireContext => requireContext.keys().map(requireContext);
requireAll(req);

5.在main.js 中引入

import './plugins/svg-icon';

6.下载svg图片将svg图片放在assets/sprites/下面

7. 在vue文件中使用svg图片(可以通过font-size,color来设置svg图标颜色和大小,设置color时需要将svg文件中的path下面的fill=“#xxx”去除即可)

<svg-icon icon-class="book" class="w-14 h-14 mr-4 text-primary"></svg-icon>

在 vue3 + vite 中使用

1.安装依赖

yarn add vite-plugin-svg-icons -D
或者
npm i vite-plugin-svg-icons -D

2.配置插件 vite.config.js / vite.config.ts

import viteSvgIcons from 'vite-plugin-svg-icons';
const { resolve } = require('path')export default defineConfig({plugins: [vue(),viteSvgIcons({// 配置路径在你的src里的svg存放文件iconDirs: [resolve(process.cwd(), 'src/assets/sprites')],symbolId: 'icon-[dir]-[name]',})]
})

3.存放svg文件路径 /src/assets/sprites

src/assets/sprites

- icon1.svg

- icon2.svg

- icon3.svg

4.SvgIcon组件实现

template><svg :class="svgClass" aria-hidden="true"><use :xlink:href="iconName" :fill="color" /></svg>
</template><script lang="ts">
import {computed, defineComponent} from 'vue'
export default defineComponent({props: {iconClass: {type: String,required: true,},className: {type: String,default: '',},color: {type: String,default: '#889aa4',},},setup(props) {return {iconName: computed(() => `#icon-${props.iconClass}`),svgClass: computed(() => {if (props.className) {return `svg-icon ${props.className}`}return 'svg-icon'}),}},
})
</script><style scope>
.svg-icon {width: 1em;height: 1em;fill: currentColor;vertical-align: middle;
}
</style>

4.在main.js / main.ts 加入否则报错

import 'vite-plugin-svg-icons/register';
// 需要全局引入再添加
import svgIcon from './components/SvgIcon.vue' // 全局svg图标组件
app.component('svg-icon', svgIcon)

5.在vue 文件中使用

<template><div><svg-icon icon-class="icon1" /></div>
</template><script>import { defineComponent, computed } from 'vue';import SvgIcon from './components/SvgIcon.vue';export default defineComponent({name: 'App',components: { SvgIcon },});
</script>

vue中使用svg矢量图相关推荐

  1. Vue项目使用SVG矢量图型基础步骤

    什么是svg 可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式.它由万维网联盟制定,是一个开放标准. 优势: SVG 可被非常多的工具读取和修改(比如记 ...

  2. 【Android 安装包优化】Android 中使用 SVG 图片 ( SVG 矢量图简介 | Android 中生成 Vector 矢量图资源 )

    文章目录 一.SVG 矢量图简介 二.Android 中生成 Vector 矢量图资源 三.参考资料 一.SVG 矢量图简介 Android SVG 参考文档 : https://developer. ...

  3. SVG矢量图怎么做?

    SVG 矢量图是一种可缩放的图像格式,基于 XML 的标记语言.它可以用于描述二维矢量图形,并且具有数百种功能,能够帮助你创建出色的网站.SVG矢量图怎么做?在本教程中,我们将学习如何使用SVG矢量图 ...

  4. SVG矢量图中矢量路径的获取

    矢量图中矢量路径的获取 首先下载一张svg图片,例如,在阿里矢量图标库中下载 用代码编辑器打开下载的图片 将标签中的d属性复制出来,写成下面的格式 这样就可以拿到矢量图中的路径了! SVG矢量图是无损 ...

  5. Vue项目中使用Svg矢量图标

    #Vue项目中使用Svg矢量图标 使用npm install svg-sprite-loader –save命令或 cnpm install svg-sprite-loader –save命令进行安装 ...

  6. 在 vue 中使用 SVG 建立图标系统并且使用

    首先我们先来学一下 svg 标签的基础知识,参考了阮一峰大神的网络日志,链接:http://www.ruanyifeng.com/blog/2018/08/svg.html SVG 全称是可缩放矢量图 ...

  7. %config InlineBackend.figure_format=svg#矢量图设置

    在默认设置的matplotlib中图片分辨率不是很高,可以通过设置矢量图的方式来提高图片显示质量 %config InlineBackend.figure_format='svg'#矢量图设置

  8. Android使用SVG矢量图打造酷炫动效!

    一个真正酷炫的动效往往让人虎躯一震,话不多说,咱们先瞅瞅效果: 如果你想看 GAStudio Github主页,请戳这里: 如果你想看 GAStudio更多技术文章,请戳这里: QQ技术交流群:277 ...

  9. vue使用阿里云矢量图

    vue使用阿里云矢量图 在vue中虽然使用了elementui中的图标,但是会发现图标数量有限,不能够适(zhuang)用(bi)系统,因此在vue中使用阿里云矢量图. 添加矢量图到"购物车 ...

  10. Android矢量图动画特效,Android使用SVG矢量图打造酷炫动画效果

    一个真正Android使用SVG矢量图打造酷炫动效往往让人虎躯一震,话不多说,咱们先看看效果: 这个效果我们需要考虑以下几个问题: 1. 这是图片还是文字: 2. 如果是图片该如何拿到图形的边沿线坐标 ...

最新文章

  1. 影响线型缩聚物分子量的因素_【CRPS】通过硼烷引发剂实现氧气引发的超高分子量聚合物的可控合成...
  2. python学习--DAY2
  3. scrapy需要的xpath知识点
  4. php旅行社网站源码在线支付,PHP各大支付平台在线支付集成源码
  5. php中月份以星期为单位,PHP的月份第二个星期六
  6. 栈增长方向与大端/小端问题
  7. armv6, armv7, armv7s的区别
  8. vue下用canvas实现图片标注工具,允许图片放大、缩小,允许拖拽图片
  9. pom 备注_POM 500P的物性
  10. Ubuntu下载与安装
  11. HCI opcode
  12. 闪电贷攻击的深层原因:价格预言机操纵攻击
  13. 基于Qt上USBCAN模块的二次开发
  14. bash: ./xx: Permission denied解决方法
  15. 大数据在医疗领域的应用
  16. 广州电子地图下载 来自谷歌电子地图库 地图展示15、17、19级
  17. [转]量子力学与心灵的探讨_我是亲民_新浪博客
  18. 苹果市值重回第一;今年我国95所高校新增人工智能专业;美国新技术可使机器人获得触觉感知 | 每日大事件...
  19. Python学习规划
  20. 互联网+与数字化转型

热门文章

  1. 网易云音乐实时数仓2.0进阶之路
  2. 已有虚拟磁盘多个vmdk文件导入虚拟机
  3. 软件公司如何才能留住员工
  4. 审计系统---堡垒机项目之用户交互程序开发
  5. ES系列:解决Cluster state has not been recovered yet, cannot write to the [null] index问题
  6. python 百度ai json解析_百度AI接口调用
  7. 关于移动MM购买的相关资料
  8. 2014大众点评Hackathon参赛感想
  9. jw player 6 断点续播 seek()
  10. 小白学python#Day5#笔耕不辍#每日一句,提高认知