您的当前位置:首页>全部文章>文章详情

【UniApp】uniapp及vue中动画功能实现方案

CrazyPanda发表于:2023-12-12 17:56:54浏览:366次TAG:

需求场景:实际开发过程中,我们经常遇到各类比较炫酷的动画开发,比如简单的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实现动画

[笔记]从AE动画到web代码-一一网络

6.svga

6.1.简单实现:vue项目中使用svga格式文件_钱大碗爱吃辣的博客-CSDN博客_vue使用svga

6.2.理解文章:

SVGAPlayer库学习 · 语雀

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>

实现效果(转骰子效果)

WeChat_20221008194011-CSDN直播

7.vue-lottie动画

vue中使用Lottie - 简书

Lottie - 轻松实现复杂的动画效果 - 掘金

8.js判断当前页面用什么浏览器打开的方法

js判断当前页面用什么浏览器打开的方法 - phpStudy

猜你喜欢

【UniApp】使用uniapp实现日历功能
使用uniapp实现日历功能随着移动互联网的发展,日历功能成为了许多APP和网站的必备组件之一。在uniapp这个跨平台开发框架中,我们可以很方便地实现日历功能,并且兼容多个平台,包括iOS、Android等。首先,我们需要用到uniapp的组件库中的日期选择器。uniapp提供了picker组件,其中mode属性可以设置为&quot;date&quot;来实现日期选择。具体代码如下:&lt;template&gt; &nbsp;&nbsp;&lt;view&gt; &nbsp;&amp;nb
发表于:2023-12-23 浏览:334 TAG:
【UniApp】利用uniapp实现拖拽排序功能
利用uniapp实现拖拽排序功能,需要具体代码示例随着移动端应用的普及和需求的增长,拖拽排序功能变得越来越重要。无论是在社交媒体应用中的朋友圈排序,还是在任务列表中的任务排序,都需要拖拽排序功能来提供用户更好的交互体验。利用uniapp框架,我们可以很方便地实现拖拽排序功能。首先,我们需要创建一个uniapp项目,并创建一个列表页面。在页面中,我们可以展示一个列表,每个列表项都可以通过拖拽来改变自己的顺序。下面是一个简单的代码示例:
发表于:2023-12-09 浏览:380 TAG:
【UniApp】uniapp应用如何实现绘画训练和动画制作
uniapp应用如何实现绘画训练和动画制作引言:随着移动互联网技术的不断发展,移动应用程序的开发变得越来越普遍。uniapp作为一款基于Vue.js框架的跨平台开发工具,为开发人员提供了一种简单高效的方式来构建跨平台的应用程序。本文将介绍如何使用uniapp实现绘画训练和动画制作,并附上具体的代码示例。一、绘画训练实现绘画训练可以让用户提升艺术技巧和创造力,uniapp提供了Canvas组件来实现绘画功能。下面是一个简单的绘画训练应用的示例代码:在uniapp的pages目录下创建一个
发表于:2023-12-11 浏览:414 TAG:
【UniApp】uniapp路由怎么配置
随着移动应用的普及和需求的增加,越来越多的开发者开始使用跨平台开发技术来构建应用程序。UniApp作为一个跨平台的开发框架在这个趋势下逐渐崭露头角,并且受到越来越多开发者的欢迎。在使用UniApp开发应用程序的过程中,路由是一个非常重要的组成部分,它允许你在不同页面之间进行导航。在UniApp中,路由用于控制应用程序的页面跳转和导航。如果你已经熟悉了Vue.js的路由机制,那么在使用UniApp的路由时,你将会感到非常熟悉。UniApp的路由机制可以很好地兼容Vue.js的路由,并且提
发表于:2023-12-16 浏览:364 TAG:
【UniApp】最新使用uniapp本地打包APP安卓,已排坑
uniapp打包IOS!!!1. 生成本地打包资源 2. 下载Android Studio和App离线SDK导航路径:https://nativesupport.dcloud.net.cn/AppDocs/usesdk/android下载的Android 离线SDK与本地开发工具版本对应 3. 解压得到的目录如下4. 使用Android Studio打开Android 离线SDK解压目录里面这个文件夹,这个是示例项目,我们只需要更改这个项目的一些配置,其他配置HBuilderX已经配置好了5.
发表于:2023-12-21 浏览:349 TAG:
【UniApp】如何在uniapp中关闭webview
在使用uniapp开发时,经常会需要在应用中使用webview来加载外部网页或是展示其他内容。但是,有时候我们并不需要一直保持webview的打开状态,而是需要手动关闭。那么,本文将会介绍如何在uniapp中关闭webview。一、关闭当前页面在uniapp中,我们可以使用以下方法来关闭当前webview所在的页面:uni.navigateBack({ &nbsp;&nbsp;&nbsp;&nbsp;delta:&nbsp;1 });这个方法会返回到上一个页面,即关闭当前页面。二、关闭
发表于:2023-12-22 浏览:329 TAG:
【UniApp】uniapp 软键盘不自动关闭怎么解决
随着移动互联网的发展,使用框架、工具来快速开发APP的方式成为主流,uniapp作为跨平台的开发框架在开发中有着不可替代的作用,它可以支持多种平台,同时拥有着方便快捷、代码复用率高等优点。在uniapp开发中,软键盘的使用是非常常见的,但是,有时候开发者会遇到软键盘不自动关闭的问题,这就会导致用户在使用APP时的体验差,本文将介绍如何解决uniapp软键盘不自动关闭的问题。一、问题概述在开发uniapp过程中经常会使用input元素进行输入数据,这时候键盘会自动弹出,并自动关闭,在某些
发表于:2023-12-17 浏览:402 TAG:
【UniApp】利用uniapp实现音频播放功能
利用uniapp实现音频播放功能随着移动互联网的发展,音频播放功能成为了许多应用必不可少的功能之一。而利用uniapp可以方便地实现音频播放功能,而且具有跨平台的特点,可以在不同的移动终端上运行。在进行uniapp开发之前,我们需要先准备好音频资源文件。在本文中,我们将使用一个名为&quot;music.mp3&quot;的音频文件作为示例。首先,我们需要在uniapp的项目中创建一个音频播放页面。在pages文件夹下,新建一个名为&quot;audio&quot;的文件夹,并在该文件
发表于:2023-12-09 浏览:643 TAG:
【Uniapp】uniapp页面跳转的五种方式总结
一、uni.navigateTo定义:保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面。使用://&nbsp;1.不传参 uni.navigateTo({ &nbsp;&nbsp;&nbsp;&nbsp;url:&#39;./home/index&#39; }); //&nbsp;2.传参字符串 uni.navigateTo({ &nbsp;&nbsp;&nbsp;&nbsp;url:`./home/index?title=${title}` });
发表于:2024-03-26 浏览:376 TAG:
【UniApp】uniapp的标题怎么动态修改
Uniapp是一个基于Vue.js框架的跨平台开发工具,它可以将一个项目一次性编译成多个平台的应用程序,同时还提供了一些独特的功能,如动态修改标题等。在Uniapp中,我们可以很容易地实现动态修改标题的功能,具体方法如下:首先,在Vue组件中,我们可以使用mounted函数来获取到当前的页面实例,然后使用$refs属性来获取到头部组件中的标题组件,接着我们就可以使用this.$refs.title对象来对标题进行修改。示例代码如下:mounted()&nbsp;{ &nbsp;&amp;nbs
发表于:2023-12-25 浏览:352 TAG: