【UniApp】uniapp及vue中动画功能实现方案
CrazyPanda发表于:2023-12-12 17:56:54浏览:375次
需求场景:实际开发过程中,我们经常遇到各类比较炫酷的动画开发,比如简单的echarts插件使用,animation动画等...
动画实现方案:
1.css动画,如gif,a-png,animation,transform等
animation: handleAni 1s linear infinite; @keyframes handleAni { 0% { //css样式 } 50%{ //css样式 } 100% { // css样式 } 或者 from {} to {} }
理解CSS3 transform中的Matrix(矩阵) « 张鑫旭-鑫空间-鑫生活
2.vue内置组件transition
<!-- 将要使用动画的内容放在transition里即可 --> <transition name="fade"> <div v-show="show"></div> </transition> .fade-enter-active, .fade-leave-active { transition: opacity .5s } .fade-enter, .fade-leave-active { opacity: 0 }
3.切视频
前端两种播放视频的方式_木易66丶的博客-CSDN博客_前端视频播放
4.循环序列帧
简单思路是设计师给出N个几十kb的小图片,利用setInterval定时器循环图片,需要注意的是:setInterval会越循环越快,需要定义变量intervalFlag防止加速,缺点:这种方式属于很多图片无限循环,后边的图片不断覆盖前边的图片,如果图片加载缓慢会导致卡白,而且比较耗费性能
<img :src="showImageUrl" class="" mode="aspectFit" /> data() { return { intervalFlag: false, setIntervalNumber: 0, showImageUrl: '', interval: null, } } handleAni() { if(this.intervalFlag) return //防止加速 this.intervalFlag = true let _this = this this.interval = setInterval(function() { _this.setIntervalFunc() }, 60) //每60毫秒执行一次 } setIntervalFunc() { if(this.setIntervalNumber>=40) { this.setIntervalNumber = 0 } this.showImageUrl = this.setIntervalNumber + '.png' } // 清除定时器 clearIntervalFunc() { clearInterval(this.interval) }
5.lottie
AE导出json文件,项目中引入json实现动画
6.svga
6.1.简单实现:vue项目中使用svga格式文件_钱大碗爱吃辣的博客-CSDN博客_vue使用svga
6.2.理解文章:
SVGA使用手册_星星点点微光的博客-CSDN博客_svga使用
6.3.工具:SVGA
svga引入:
// 安装 npm install svgaplayerweb --save // 引入svgaplayerweb插件 import SVGA from 'svgaplayerweb'; // 引入svga
组件封装:
<template> <view class="svgaBox"> <view id="demo" :style="{ 'position':'absolute', 'left': 0, 'top': 0, 'width': canvasWidth+'px', 'height': canvasHeight+'px' }"></view> </view> </template> <script> import SVGA from 'svgaplayerweb'; export default { props: { canvasWidth: { type: Number, default: 0 }, canvasHeight: { type: Number, default: 0 }, imageAniUrl: { type: String, default: 'default.svga' }, canvasLeft: { type: Number, default: 0 }, canvasTop: { type: Number, default: 0 }, isLoop: { type: Boolean, default: false }, }, data() { return {} }, mounted() { this.initSvag() }, methods: { initSvag() { let _this = this var canvasList = document.getElementById('demo') var canvas = document.createElement('canvas') canvas.width = this.canvasWidth // Number类型! canvas.height= this.canvasHeight // Number类型! canvas.style.position = 'absolute' canvas.style.top = this.canvasTop canvas.style.left = this.canvasLeft canvas.style.zIndex = 4 canvas.id = 'myCanvas' canvasList.appendChild(canvas) let player = new SVGA.Player('#myCanvas') let parser = new SVGA.Player('#myCanvas') parser.load(this.imageAniUrl, function(value){ player.loops = _this.isLoops?0:1 player.setVideoItem(value) player.startAnimation() }) } } } </script>
实现效果(转骰子效果)
7.vue-lottie动画
8.js判断当前页面用什么浏览器打开的方法
猜你喜欢
- 【UniApp】uniapp全局方法怎么使用
- uniapp是一款基于Vue.js框架开发的跨平台开发框架,可以通过编写一套代码,同时在iOS、Android、H5等多个平台上运行。在uniapp中,我们可以使用全局方法来方便地进行公共方法的调用。本文将介绍uniapp全局方法的定义和使用。一、定义全局方法在uniapp中定义全局方法需要用到Vue.prototype.$xxxx = function()这个语法,其中xxxx是方法名称。示例代码如下:Vue.prototype.$formatDate = fun
- 【UniApp】UniApp原生讯飞语音插件-YL-SpeechRecognition
- 由于插件文档图片部分可能无法显示,可以移步到CSDN博客,查看完整文档:https://blog.csdn.net/baiyuliang2013/article/details/130925332插件说明:支持安卓IOS双端!新版本已由必须联系本人打离线包,升级为线上购买后自主导入sdk打包,更方便快捷!当然,您在使用时遇到问题依然可以联系本人QQ:453503875,微信:同qq。若您只需要安卓端,可使用:Uts版插件:https://ext.dcloud.net.cn/plugin?id=1
- 【UniApp】利用uniapp实现图表展示功能
- 利用uniapp实现图表展示功能随着信息化时代的到来,数据的处理和可视化成为了各个领域的重要任务。在移动端开发中,图表展示功能也成为了一个不可或缺的组成部分。而利用uniapp框架实现图表展示功能,不仅可以快速开发出高效的移动应用程序,还能兼容多个平台,提供一致的用户体验。一、准备工作在开始之前,我们首先需要准备好uniapp的开发环境,并且在项目中引入常用的图表库echarts。我们可以在uniapp的插件市场中搜索echarts插件,并按照提示进行安装和引入。二、开发步骤创建一个新
- 【UniApp】Uniapp怎么动态更改tabbar
- Uniapp是一款跨端开发框架,可以同时开发出H5、小程序、app等多个平台的应用,是非常实用的开发工具。其中,tabbar是作为底部导航栏来展示多个页面的重要控件之一。在开发过程中,有时需要根据不同的业务需求动态更改tabbar,本文将介绍如何在Uniapp中实现动态更改tabbar的方法。一、tabbar的基本使用及结构在Uniapp中使用tabbar,需要在pages.json文件中设置底部导航栏的样式和页面路径。示例代码如下:"tabBar": {
- 【Uniapp】uniapp如何传递参数
- 一、通过URL传递参数URL是一种描述文件在计算机网络中位置的方式。在uniapp中,可以通过URL传递参数。在web开发中,可以通过query string来传递参数。在uniapp中有两种方式来进行URL传参:路由跳转和h5页面跳转:1.路由跳转uniapp中提供了一些路由相关的API,其中,uni.navigateTo和uni.redirectTo这两个API可以在跳转时携带参数。在跳转时,可以将参数以对象的形式传递给URL,并以query string(查询字符串)的形式来表示。如下所示
- 【UniApp】uniapp怎么判断是否安装微信
- 随着移动互联网的发展,微信已经成为了国内用户相对来说最为普及和使用最为广泛的社交工具。对于一些涉及到微信相关功能的应用程序开发者来说,需要在程序中加入判断用户是否已经安装了微信应用,以便在用户没有安装微信的情况下给出相应的提示或选择其他途径实现相关功能。在uniapp开发中,我们可以使用uniapp自带的uni.getProvider()函数来判断当前设备是否安装了某个提供商的应用程序。而微信作为目前国内使用最为广泛的社交工具之一,这里我们主要介绍如何使用uni.getProvider
- 【UniApp】uniapp 中使用addEventListener
- uniapp 中使用 addEventListener 方法可以给某个元素绑定事件监听。使用方法:document.getElementById("some-element").addEventListener("click", function() { // do something when the element is clicked }
- 【UniApp】uniapp中路由传参的加密与解密方式
- uniapp中路由传参的加密与解密方式,需要具体代码示例【引言】在uniapp开发中,经常会遇到一种情况,就是需要将一些敏感信息通过路由进行传递,但是传递的参数是明文,有一定的安全风险。为了保护用户数据的安全性,我们可以对路由传参进行加密和解密处理,以增加数据的安全性。本文将介绍uniapp中路由传参的加密与解密方式,并提供实际代码示例。【加密方式】在uniapp中,可以使用常见的加密算法(如AES、RSA等)对传递的参数进行加密,以保护数据的安全性。下面以AES算法为例,介绍加密的方式及代码示
栏目分类全部>