vue使用字体图标svg,在src下新建目录icons文件,再在icons文件下新建svg文件,在阿里ico中将字体的svg图片下载下来即可:例如from.svg
在组件中新建icon-svg.vue组件
<template> <svg class="svg-icon" aria-hidden="true"> <use :xlink:href="iconName"></use> </svg> </template> <script> export default { name: ‘icon-svg‘, props: { iconClass: { type: String, required: true } }, computed: { iconName() { return `#icon-${this.iconClass}` } } } </script> <style scoped lang="stylus"> .svg-icon { width 1.1em height 1.1em vertical-align -.2em fill currentColor overflow hidden } </style>
在iicon的js中使用该组件icon-svg.vue组件
import Vue from ‘vue‘ import IconSvg from ‘@/components/icon-svg‘ /* require.context("./test", false, /.test.js$/);这行代码就会去 test 文件夹(不包含子目录) 下面的找所有文件名以 .test.js 结尾的文件能被 require 的文件。更直白的说就是 我们可以通过正则匹配引入相应的文件模块。 require.context有三个参数: directory:说明需要检索的目录 useSubdirectories:是否检索子目录 regExp: 匹配文件的正则表达式 */ //全局注册iconsvg组件 Vue.component(‘svg-icon‘, IconSvg) const requireAll = requireContext => requireContext.keys().map(requireContext) const req = require.context(‘./svg‘, false, /\.svg$/) requireAll(req)
main.js引入全局图标(后面的index.js可以省略)
// 全局图标 import ‘./icons/index.js‘
全局组件使用方式
<svg-icon icon-class="form"></svg-icon>
SVG安装
npm i svg-sprite-loader --save
配置相关信息 在build/webpack.base.conf.js文件中,加入
{ test: /\.svg$/, loader: ‘svg-sprite-loader‘, include: [resolve(‘src/icons‘)], options: { symbolId: ‘icon-[name]‘ } }, exclude: [resolve(‘src/icons‘)],
相关学习链接:https://www.jianshu.com/p/5b2c7757fc19
原文:https://www.cnblogs.com/wjw-/p/11549774.html