我在实战课程学习中遇到问题,老师一直没回复,能不能请老师帮忙解决下
来源:3-3 项目作业
迷失的小麦
2020-05-01 09:11:08
1、当我使用v-if的时候,显示和隐藏都使用transitionend的时候,动画开始这句话一直不会被输出,而且从隐藏到显示没有动画效果,一下就出来了
2、当我使用v-show的时候,显示和隐藏都使用transitionend的时候,动画都正常,但是动画开始和动画结束2句话都不会被输出
3、当我将transitionend改为setTimeout(function(){done();},1000);的时候,输出动画开始和动画结束2句话都是正常的,而且隐藏后没有占位
4、当我使用v-show和v-if的时候,显示和隐藏都使用transitionend的时候,隐藏之后会占位(即按钮的位置不会变化)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vue中的JS动画与velocity.js</title> <script src="./vue.js"></script> </head> <body> <div id="root"> <transition name="fade" @before-enter="handleBeforeEnter" @enter="handleEnter" @after-enter="handleAfterEnter" @before-leave="handleBeforeLeave" @leave="handleLeave" @after-leave="handleAfterLeave" > <div v-show="show">Hello World</div> </transition> <button @click="handleClick">toggle</button> </div> <script> var vm = new Vue({ el: "#root", data: { show: true }, methods: { handleClick: function() { this.show = !this.show }, handleBeforeEnter: function(el) { el.style.opacity = 0; }, handleEnter: function(el, done) { el.style.opacity=1; el.style.transition='opacity 1s'; // el.ontransitionend=function(){ // done(); // }; setTimeout(function(){done();},1000); }, handleAfterEnter: function(el) { console.log("动画开始") }, handleBeforeLeave: function(el) { el.style.opacity = 1; }, handleLeave: function(el, done) { el.style.opacity=0; el.style.transition='opacity 1s'; // el.ontransitionend=function(){ // done(); // }; setTimeout(function(){done();},1000); }, handleAfterLeave: function(el) { console.log("动画结束") } } }) </script> </body> </html>
1回答
同学你好,非常抱歉,不了解实战课程的具体内容,不能为您提供帮助,不过同学不用担心,实战都是有解答老师的,可以直接在实战中进行提问,会有实战的老师进行回复,可以耐心等待下哦。
祝学习愉快~
相似问题