【快应用】如何避免图片切换时动画异常

news/2025/2/16 2:28:00/

 【关键词】

动画样式、透明度、image、stack

【问题背景】

快应用中想在图片切换时加入一些动画效果,使用stack组件下使用两个image组件堆叠,一个image组件通过动画样式设置透明度从1-0隐藏起来,另一张显示出来,从而来实现图片切换效果,但是,前一张图片会概率性地闪现,然后消失。问题代码如下:

<template><div class="page-wrapper"><input type="button" class="button" onclick="onCallAnimationClick" value="Animation 动画" /><stack style="width: 400px; height: 400px"><image class="img" id="img1" src="{{imgUrl}}" oncomplete="imgcomplete"></image><image class="img" id="img2" if="{{ximg}}" src="{{preUrl}}" oncomplete="imgcomplete2" style="{{'opacity:' + preop + ';'}}"></image></stack></div></template><script>export default {data: {imgsrc: ["../Common/logo.png","../Common/b.jpg","../Common/logo.png","../Common/b.jpg","../Common/logo.png",],imgUrl: '',preUrl: '',ximg: true,preop: 0,i: 0},onInit: function () {this.imgUrl = this.imgsrc[0]},onCallAnimationClick() {if (this.i > 3) {this.i = 0;this.imgUrl = this.imgsrc[this.i]} else {this.i++this.imgUrl = this.imgsrc[this.i]}console.log('imgcomplete=', this.i)},imgcomplete() {console.log('imgcomplete 1')this.preop = 1var options = {duration: 500,easing: 'linear',delay: 0,fill: 'forwards',iterations: 1}var frames = [{opacity: 1},{opacity: 0}];var animation = this.$element('img2').animate(frames, options);animation.play();var self = thisanimation.onfinish = function () {console.log("imgcomplete animation  onfinish");self.ximg = falseself.preop = 0setTimeout(() => {self.ximg = trueself.preUrl = self.$element("img1").attr.src}, 30);}},imgcomplete2() {console.log('imgcomplete 2')setTimeout(() => {this.preop = 1}, 50);},}</script><style>.page-wrapper {flex-direction: column;justify-content: center;align-items: center;}.img {width: 100%;height: 100%;}.button {color: #20a0ff;background-color: #ffffff;padding: 10px 20px;border: 1px solid #20a0ff;border-radius: 40px;}</style>

【问题分析】

上述代码用两个image组件实现了图片切换时淡入淡出的动画效果,主要是通过透明度实现的。第二个image的css中设置了透明度,但是imgcomplete()方法中又对该image组件做了透明度动画,透明度值从1到0,同时代码中又将css中绑定的透明度变量preop设置为1。

当动画方法完成时间早于css实现的时间,就会出现这个情况。

【解决方案】

1、  将template中第二个image组件的style="{{'opacity:' + preop + ';'}}"去掉。

<image class="img" id="img2" if="{{ximg}}" src="{{preUrl}}" oncomplete="imgcomplete2" ></image>

2、  改为通过动画样式来调用,从0-1变化。

 imgcomplete2() {console.log('imgcomplete 2')var options = {duration: 10,easing: 'linear',delay: 0,fill: 'forwards',iterations: 1}var frames = [{opacity: 0},{opacity: 1}];var animation = this.$element('img2').animate(frames, options);animation.play();},

http://www.ppmy.cn/news/1201827.html

相关文章

Linux学习第34天:Linux LCD 驱动实验(一):星星之火可以燎原

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 LCD显示屏是由一个一个的像素点构成的。当你能控制一个像素点的亮暗及颜色变化的时候&#xff0c;你就能让LCD显示瓶显示五颜六色的整幅图案。甚至可以让LCD屏幕…

云边端协同与任务调度

云边端协同与任务调度 引言 在当今数字化转型的潮流中&#xff0c;智能家居、无人驾驶、虚拟现实和人工智能等领域的蓬勃发展&#xff0c;无不依赖于云计算的强大支持。云计算不再只是关乎数据中心和网络存储&#xff0c;它正在演变为无处不在的超级英雄&#xff0c;引领着我…

重启某个节点、重启电脑服务器后,kubernetes无法运行,k8s无法运行

问题描述 环境&#xff1a;ubuntu18.04 LTS 现象&#xff1a;按步骤安装kubernetes后&#xff0c;正常启动&#xff0c;各个命令均可正常使用。服务器重启后&#xff0c;执行命令错误信息如下&#xff1a; sudo kubectl get nodesThe connection to the server 127.0.0.1:644…

测试老鸟整理,Postman加密接口测试-Rsa/Aes对参数加密(详细总结)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 一些问题 postma…

JUC-3-并发锁

一 JAVA 多线程锁介绍 1 悲观锁 定义&#xff1a;悲观锁指对数据被外界修改持保守态度&#xff0c;认为数据很容易就会被其他线程修改&#xff08;很悲观&#xff09;&#xff0c;所以在数据被处理前先对数据进行加锁&#xff0c;并在整个数据处理过程中&#xff0c;使数据处…

[尚硅谷React笔记]——第8章 扩展

目录&#xff1a; 扩展1_setState扩展2_lazyLoad扩展3_stateHook扩展4_EffectHook扩展5_RefHook扩展6_Fragment扩展7_Context扩展8_PureComponent扩展9_renderProps扩展10_ErrorBoundary组件通信方式总结 1.扩展1_setState setState更新状态的2种写法 setState(stateChange…

C语言面试

数据类型&#xff08;基本内置类型&#xff09; char //字符数据类型 short //短整型 int //整型 long //长整型 long long //更长的整型 float //单精度浮点数 double //双精度浮点数 类型的基本归类 整形家族&#xff1a; …

网络资料(忘传了)

1网络分层模型和应用协议 1.1分层模型 1.1.1分层的意义 当遇到一个复杂问题的时候&#xff0c;可以使用分层的思想把问题简单化 比如&#xff0c;你有半杯82年的可乐&#xff0c;想分享给你的朋友王富贵&#xff0c;但你们已经10年没有联系了。要完成这件事&#xff0c;你可…