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.toggle
				this.lastDeg=this.toggle?this.deg:0
				console.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

相关推荐
一人の梅雨9 分钟前
1688 店铺商品全量采集与智能分析:从接口调用到供应链数据挖掘
开发语言·python·php
小何好运暴富开心幸福20 分钟前
C++之日期类的实现
开发语言·c++·git·bash
威风的虫35 分钟前
JavaScript中的axios
开发语言·javascript·ecmascript
老赵的博客40 分钟前
c++ 是静态编译语言
开发语言·c++
Terio_my40 分钟前
Python制作12306查票工具:从零构建铁路购票信息查询系统
开发语言·python·microsoft
笨笨狗吞噬者43 分钟前
【uniapp】小程序体积优化,JSON文件压缩
前端·微信小程序·uni-app
bot5556661 小时前
“企业微信iPad协议”静默 72 小时:一台被遗忘的测试机如何成为私域的逃生梯
javascript·面试
西洼工作室1 小时前
浏览器事件循环与内存管理可视化
前端·javascript·css·css3
消失的旧时光-19431 小时前
Kotlin when 用法完整分享
android·开发语言·kotlin
万粉变现经纪人1 小时前
如何解决 pip install -r requirements.txt 约束文件 constraints.txt 仅允许固定版本(未锁定报错)问题
开发语言·python·r语言·django·beautifulsoup·pandas·pip