教你在vue项目中使用svg图标的方法
- svg图标优点
svg与iconfont之类的字体图标在网页中的使用差别不大,可以修改大小,颜色等而且不失真。
- 安装
svg-sprite-loader
npm install --save-dev svg-sprite-loader
- 文件夹目录 (xxx.svg 注意:这里的 xxx 不要使用中文)
- assets-- icon--- svg--- index.js
- 配置依赖
// Vue2.x 在 webpack.base.conf.js 中配置如下:// 注意svg图标的路径 src/assets/icon 要写正确 module: {rules: [{test: /\.svg$/,loader: 'svg-sprite-loader',include: [resolve('src/assets/icon')],options: {symbolId: 'icon-[name]'}},{test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,loader: 'url-loader',exclude: [resolve('src/assets/icon')],options: {limit: 10000,name: utils.assetsPath('img/[name].[hash:7].[ext]')}}]}
// Vue3.x 在根目录新建 vue.config.js 中配置如下:module.exports = {chainWebpack: config => {const svgRule = config.module.rule('svg')svgRule.uses.clear()svgRule.exclude.add(/node_modules/)svgRule.test(/\.svg$/).use('svg-sprite-loader').loader('svg-sprite-loader').options({symbolId: 'icon-[name]',})// 修改images loader 添加svg处理const imagesRule = config.module.rule('images')imagesRule.exclude.add(resolve('src/assets/icon'))config.module.rule('images').test(/\.(png|jpe?g|gif|svg)(\?.*)?$/)}}
// Vue4.x 在根目录新建 vue.config.js 中配置如下:const path = require('path')module.exports = {// 使用svg-sprite-loader编译svg,若使用file-loader时排除src/icon下的svg矢量图标chainWebpack: (config) => {const svgRule = config.module.rule('svg')// 清除已有的所有 loader 否则接下来的 loader 会附加在该规则现有的 loader 之后svgRule.uses.clear()svgRule.test(/\.svg$/).include.add(path.resolve(__dirname, './src/icon')).end().use('svg-sprite-loader').loader('svg-sprite-loader').options({symbolId: 'icon-[name]',})const fileRule = config.module.rule('file')fileRule.uses.clear()fileRule.test(/\.svg$/).exclude.add(path.resolve(__dirname, './src/icon')).end().use('file-loader').loader('file-loader')},}
- 在components目录下增加一个
SvgIcon
组件
.svg-icon {width: 1em; height: 1em; vertical-align: -0.15em; fill: currentColor; overflow: hidden; }.svg-external-icon {background-color: currentColor; mask-size: cover !important; display: inline-block; }
- 在
icon
文件夹下index.js
中导入所有svg文件,并将SvgIcon注册到全局
import Vue from 'vue'import SvgIcon from '@/components/SvgIcon'// 全局注册Vue.component('svg-icon', SvgIcon)const req = require.context('./svg', false, /\.svg$/)const requireAll = requireContext => requireContext.keys().map(requireContext)requireAll(req)
- 在
main.js
文件中引入 svg 配置
import '@/assets/icon'
- 使用
- 备注
【教你在vue项目中使用svg图标的方法】到此这篇关于教你在vue项目中使用svg图标的方法的文章就介绍到这了,更多相关vue使用svg图标内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 教育|小音咖拖欠数亿,创始人却“再就业”
- 2017-04-16
- 幼儿教师职业道德
- 萌心《正面管教》启发式提问打卡5/21【2018.1.20】
- django项目、vue项目部署云服务器
- 感赏日志
- Vue动态绑定背景图片及三元运算操作
- Vue3.x 新特性总结
- 素质教育|好多素教再获A+轮融资,着手解决课后服务“规模化”难题|融资快报
- 聊聊|聊聊 Vue2 是如何更新节点的 | diff 算法详解