当前位置: 首页 > news >正文

vue3中svg图标的封装与使用

组件封装:

<template><svg :class="svgClass" :style="{ width: size + 'px', height: size + 'px', color: color, verticalAlign:deviation+'em'}" aria-hidden="true"><use :xlink:href="`#icon-${name}`" /></svg>
</template><script>
export default {name: 'svg-icon',props: {name: { type: String, required: true },     // svg 图标名称className: { type: String, default: '' },   // 指定的类样式size: { type: Number, default: 28 },        // 图标尺寸color: { type: String, default: "#000" }, // 图标颜色deviation:{type:Number,default:-0.2} //图标上下偏移量},computed: {  // 计算属性svgClass () {if (this.className) {return 'svg-icon ' + this.className} else {return 'svg-icon'}}}
}
</script><style scoped>
.svg-icon {width: 1em;height: 1em;vertical-align: -0.2em;fill: currentColor;overflow: hidden;padding:0  0.15em;
}
</style>

svg图标存放目录:
在这里插入图片描述
index.js获取svg文件

// 获取当前目录所有为.svg的文件
const req = require.context('./svg', false, /\.svg$/)// 解析获取的.svg文件的文件名称并返回
const requireAll = (requireContext) =>{return requireContext.keys().map(requireContext)
}
requireAll(req)

vue.config中定义svg图标目录

const {defineConfig} = require('@vue/cli-service')
const path = require('path')
const resolve = (dir) => path.join(__dirname, dir)
module.exports = defineConfig({transpileDependencies: true,chainWebpack(config) {config.module.rule('svg').exclude.add(resolve('src/assets/icons'))  // 存放 svg 目录的目录.end()config.module.rule('icons').test(/\.svg$/).include.add(resolve('src/assets/icons'))  // 存放 svg 目录的目录.end().use('svg-sprite-loader').loader('svg-sprite-loader').options({symbolId: 'icon-[name]'}).end()},......}

页面中的使用:

<svg-icon name="wode" :size="25"/>

相关文章:

  • 万字 | 菊花厂C语言编程10大规范
  • Python基础小知识问答系列-过滤列表元素
  • python 基础综合应用——小开发
  • Swift 定制 Core Data 迁移
  • JavaScript 原型链那些事
  • 3D鸡哥又上开源项目!单图即可生成,在线可玩
  • Spring Boot 学习第八天:AOP代理机制对性能的影响
  • 【Spring Boot 源码学习】初识 ConfigurableEnvironment
  • 数据结构(3.8)——栈的应用
  • gdb调试命令大全
  • 【产品经理】订单处理11-订单修改场景梳理
  • 泛微开发修炼之旅--29用计划任务定时发送邮件提醒
  • RISC-V在当前计算架构中的地位
  • 使用Vue CLI方式创建Vue3.0应用程序
  • 如何在Java项目中实现领域驱动设计(DDD)
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 《深入 React 技术栈》
  • 【翻译】babel对TC39装饰器草案的实现
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • JS基础之数据类型、对象、原型、原型链、继承
  • JS专题之继承
  • Making An Indicator With Pure CSS
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • SpringCloud集成分布式事务LCN (一)
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • 不上全站https的网站你们就等着被恶心死吧
  • 离散点最小(凸)包围边界查找
  • 聊聊hikari连接池的leakDetectionThreshold
  • 思考 CSS 架构
  • 移动端唤起键盘时取消position:fixed定位
  • 译自由幺半群
  • 用jquery写贪吃蛇
  • elasticsearch-head插件安装
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 通过调用文摘列表API获取文摘
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • #mysql 8.0 踩坑日记
  • $refs 、$nextTic、动态组件、name的使用
  • (10)STL算法之搜索(二) 二分查找
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (笔试题)合法字符串
  • (二)fiber的基本认识
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .NET 5种线程安全集合
  • .net中应用SQL缓存(实例使用)
  • @Query中countQuery的介绍
  • @Transactional类内部访问失效原因详解
  • [Algorithm][动态规划][简单多状态DP问题][按摩师][打家劫舍Ⅱ][删除并获得点数][粉刷房子]详细讲解
  • [bzoj1901]: Zju2112 Dynamic Rankings