SOURCE

console 命令行工具 X clear

                    
>
console
var app = new Vue({
  el: '#app',
  data() {
    return {
      show: true
    }
  }, 
  methods: {
            // el 即操作的元素对象
        beforeEnter(el) {
                el.style.transform='translate(80px,80px)';
            },
        enter(el,done){
                //必须加下面一行,否则不会出现应有的效果
                el.offsetWidth;//这里可以理解成强制浏览器刷新,也可以写el.offsetHeight
                el.style.transition='all 1.5s ease';
                el.style.transform='translate(0,0)';
                done()
            },
        afterEnter(el){
                console.log('afterEnter');
                // this.flag=false;//隐藏小球
            },
        beforeLeave: function (el) {
                el.style.transform='translate(0,0)';
             },
        // 当与 CSS 结合使用时
        // 回调函数 done 是可选的
        leave: function (el, done) {
            el.offsetWidth;//这里可以理解成强制浏览器刷新,也可以写el.offsetHeight
            el.style.transition='all 3s ease';
            el.style.transform='translate(80px,80px)';
           // 这里直接调用done的话由于会立即删除元素导致动画不执行
          // done();
		  //方法1:
          // 不调用done可以进行动画,但是元素依旧存在,并且afterLeave函数钩子不执行
		  //方法2:
          // setTimeout可以解决这个问题,让done不立即执行,过几秒后再执行
          setTimeout(done,3000); //时间根据自己设定的动画时间确定
           
        },
        afterLeave: function (el) {
            console.log('afterLeave');
        
        },
  }
});
<div id="app">
  <button @click="show = !show">
    动态组件
</button>

 <transition 
 @before-enter="beforeEnter" 
 @enter="enter" 
 @after-enter="afterEnter"
 v-on:before-leave="beforeLeave"
 v-on:leave="leave"
 v-on:after-leave="afterLeave"
 >
    <div id="ball" v-show="show">hello</div>
</transition>
</div>

进入页面,由于默认数据是true,点击时变成false,
所以第一次点击时,进行离场动画。调用leave等函数钩子...

本项目引用的自定义外部资源