当前位置: 首页 > 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

http://www.lryc.cn/news/292920.html

相关文章:

  • QT播放gstreamer命令(三)---使用QMediaPlayer
  • Ubuntu22扩大分区
  • 数据结构篇-05:哈希表解决字母异位词分组
  • 添加了gateway之后远程调用失败
  • C#,哥伦布数(Golomb Number)的算法与源代码
  • JVM学习
  • Visual Studio 20XX中utf-8中文在控制台显示乱码
  • 拥抱个人成长与社会进步:自我认知与开放心态的相互影响
  • 【PostgreSQL内核学习(二十五) —— (DBMS存储空间管理)】
  • 2024年 复习 HTML5+CSS3+移动web 笔记 之CSS遍 第5天
  • SpringBoot使用Kafka详解含完整代码
  • 解决:java -jar 在cmd中运行 程序卡顿,卡死的 问题。BIO和NIO案例保存
  • LeetCode第824题 - 山羊拉丁文
  • [Python] 什么是逻辑回归模型?使用scikit-learn中的LogisticRegression来解决乳腺癌数据集上的二分类问题
  • 那些不输于乙游男主人设的国漫男主
  • Apache Doris 整合 FLINK CDC + Iceberg 构建实时湖仓一体的联邦查询
  • 关于华为应用市场上架,申请权限未告知目的被驳回问题的简单处理方式
  • 【ElasticSearch】概述
  • 十进制转十六进制 C/C++蓝桥杯基础试题BASIC-10
  • 【LVGL环境搭建】
  • 【c语言】简单贪吃蛇的实现
  • 2023年09月CCF-GESP编程能力等级认证Python编程六级真题解析
  • Flink中StateBackend(工作状态)与Checkpoint(状态快照)的关系
  • 【C语言刷题系列】喝汽水问题
  • [C++] C++ 11的functional模块介绍和使用案例
  • kubernetes基本概念和操作
  • 20240128周报-网络太杂,Tomcat太难
  • DES加密原理
  • react 之 useCallback
  • OfficeWeb365 Readfile 任意文件读取漏洞复现