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

相关推荐

  1. uniapp封装一个svgbase64组件

    2024-02-03 12:46:01       49 阅读
  2. uniapp预览base64图片

    2024-02-03 12:46:01       41 阅读
  3. uniappbase64临时地址播放mp3

    2024-02-03 12:46:01       51 阅读
  4. 简单base64pdf

    2024-02-03 12:46:01       32 阅读
  5. base64PDF

    2024-02-03 12:46:01       55 阅读
  6. 在vue,文件base64示例

    2024-02-03 12:46:01       52 阅读
  7. vite+vue3项目svg图标组件封装

    2024-02-03 12:46:01       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-03 12:46:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-03 12:46:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-03 12:46:01       82 阅读
  4. Python语言-面向对象

    2024-02-03 12:46:01       91 阅读

热门阅读

  1. 构建高效可靠的消息队列系统:设计与实现

    2024-02-03 12:46:01       44 阅读
  2. 2401cmake,学习cmake4

    2024-02-03 12:46:01       52 阅读
  3. 如何优化Docker镜像的大小?

    2024-02-03 12:46:01       56 阅读
  4. 开源计算机视觉库OpenCV详解

    2024-02-03 12:46:01       56 阅读
  5. 微服务框架go-zero集成swagger在线接口文档

    2024-02-03 12:46:01       58 阅读
  6. 2024-02-01(Hive)

    2024-02-03 12:46:01       56 阅读
  7. leetcode-hot100矩阵专题

    2024-02-03 12:46:01       61 阅读
  8. 前置知识:字符集

    2024-02-03 12:46:01       51 阅读
  9. 2.2作业

    2024-02-03 12:46:01       46 阅读
  10. mybatis查询修改mysql的json字段

    2024-02-03 12:46:01       48 阅读