1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width,initial-scale=1.0"> 7 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 8 <title>Document</title> 9 <!--1.导入Vue的包--> 10 <script src=" https://cdn.jsdelivr.net/npm/vue"></script> 11 <style> 12 .ball{ 13 width:15px; 14 height:15px; 15 background-color: red; 16 border-radius: 50%; 17 } 18 </style> 19 </head> 20 21 <body> 22 <div id="app"> 23 <input type="button" value="接入购物车" @click="flag=!flag"> 24 25 <transition 26 @before-enter="beforeEnter" 27 @enter="enter" 28 @after-enter="afterEnter"> 29 <div class="ball" v-show="flag"></div> 30 </transition> 31 </div> 32 33 <script> 34 //创建 Vue 实例,得到 ViewModel 35 var vm = new Vue({ 36 el:'#app', 37 data:{ 38 flag:false 39 }, 40 methods:{ 41 beforeEnter(el){ 42 el.style.transform='translate(0,0)' 43 }, 44 enter(el,done){ 45 el.offsetWidth 46 el.style.transform='translate(150px,450px)' 47 el.style.transition="all 1s ease" 48 done() 49 }, 50 afterEnter(el){ 51 //这句话,第一个功能,是控制小球的显示与隐藏 52 //第二个功能:直接跳过后半场动画,让flag标识符直接变为 false 53 //当第二次再点击 按钮的时候,flag false ->true 54 this.flag=!this.flag 55 // el.style.opacity=0.5 56 57 //Vue 把一个完整的动画,使用钩子函数,拆分为了两部分; 58 //我们使用 flag 标识符,来表示动画的切换; 59 //刚开始,flag= false ->true ->false 60 } 61 } 62 }); 63 </script> 64 </body> 65 </html>