我在实战课程学习中遇到问题,老师一直没回复,能不能请老师帮忙解决下

来源: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回答

好帮手慕糖

2020-05-01

同学你好,非常抱歉,不了解实战课程的具体内容,不能为您提供帮助,不过同学不用担心,实战都是有解答老师的,可以直接在实战中进行提问,会有实战的老师进行回复,可以耐心等待下哦。

祝学习愉快~

0

0 学习 · 10739 问题

查看课程