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

uniapp中封装一个svg转base64的组件

uniapp中由于不支持svg--》base64,同时无法使用h5中atob,这里我们采用js-base64插件实现这样一个组件,只要传人svg的代码即可在uniapp中转为base64,同时支持自定义参数,比如宽度,高度,等

1 安装

npm install --save js-base64

2 组件

<template><!-- <image class="img":style="[{width:transformPxToVw(width) + 'vw',height:transformPxToVw(height) + 'vw',transform:'rotate(' + lastDeg + 'deg)'}]" :src="base64String"></image> --></template>
<script>import { Base64 } from 'js-base64';export default {props:{svgTxt:{type:String,default:""},width:{type:Number,default:20},height:{type:Number,default:20},deg:{type:Number,default:0}},mounted(){this.transformSvgToBase64(this.svgTxt)},data() {return {base64String:"",toggle:false,lastDeg:0}},methods: {transformSvgToBase64(svgTxt){this.base64String = 'data:image/svg+xml;base64,' + Base64.encode(svgTxt);},transformPxToVw(num,designWidth=375){let vwVal=(100/designWidth)*num;return vwVal.toFixed(3)},handler(){this.toggle=!this.togglethis.lastDeg=this.toggle?this.deg:0console.log("this.lastDeg",this.lastDeg)},}}
</script><style>
.img{display: inline-block;
}</style>

3 引入组件

<Arrow2 :svgTxt="svgTxt" :width="20" :height="20" :deg="90"></Arrow2>data() {return {base64String:"",svgTxt:`<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M15.5705 8.26572C15.9061 7.95074 15.9227 7.42336 15.6078 7.0878C15.317 6.77805 14.8453 6.74 14.5105 6.98372L14.4298 7.05053L10.0061 11.204L5.5678 7.04969C5.25762 6.75939 4.78442 6.75194 4.4661 7.0168L4.38993 7.08869C4.09964 7.39887 4.09218 7.87207 4.35705 8.19039L4.42893 8.26655L9.43717 12.9538C9.73119 13.229 10.1747 13.2516 10.4933 13.0219L10.5769 12.953L15.5705 8.26572Z" fill="#A4A5B3"/></svg>`,}},

4 添加动画

本demo通过一个箭头的svg来做例子。该组件中通过点击箭头实现旋转动画。可以自己传参数来定义箭头的旋转方向本例是通过点击选择90度

我们在组件内部定义了一个函数用于处理px单位的转化,因为style的设置无法实现px自动转为vw

相关文章:

  • 算法练习03——滑动窗口
  • 氢气泄漏检测仪使用方法:守护安全,从细节开始
  • C++ 之LeetCode刷题记录(二十七)
  • 微服务框架go-zero集成swagger在线接口文档
  • 科普类(遥操作)——快速索引
  • 比瓴科技入围软件供应链安全赛道!为关键信息基础设施安全建设注入新动力
  • 银行数据仓库体系实践(8)--主数据模型设计
  • 如何手机搜智慧职教答案?3个受欢迎的搜题分享了 #微信#学习方法#笔记
  • 深度学习入门笔记(七)卷积神经网络CNN
  • FreeRTOS任务挂起以及延时部分源码分析
  • 计算机网络第4章(网络层)
  • 【数据结构】单向链表实现 超详细
  • DAO设计模式
  • Vue打包Webpack源码及物理路径泄漏问题解决
  • 【vue】报错 Duplicate keys detected 解决方案
  • 5、React组件事件详解
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • avalon2.2的VM生成过程
  • CSS 专业技巧
  • WebSocket使用
  • 番外篇1:在Windows环境下安装JDK
  • 分布式熔断降级平台aegis
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 关于springcloud Gateway中的限流
  • 基于组件的设计工作流与界面抽象
  • 前端js -- this指向总结。
  • 前嗅ForeSpider采集配置界面介绍
  • 无服务器化是企业 IT 架构的未来吗?
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 在electron中实现跨域请求,无需更改服务器端设置
  • ​人工智能书单(数学基础篇)
  • $.ajax()参数及用法
  • (1) caustics\
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (转)jdk与jre的区别
  • (转)Oracle 9i 数据库设计指引全集(1)
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET 8.0 中有哪些新的变化?
  • .net Application的目录
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .net mvc部分视图
  • .net 获取url的方法
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • @GetMapping和@RequestMapping的区别
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [145] 二叉树的后序遍历 js
  • [AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗