zoukankan      html  css  js  c++  java
  • 第五章 动画 45-47:动画-钩子函数实现小球半场动画

     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         border-radius: 50%;
    16         background-color: red;
    17 
    18       }
    19 
    20     </style>
    21   </head>
    22 
    23   <body>
    24       <div id="app">
    25       <input type="button" value="快到碗里来" @click="flag=!flag">
    26      <!--  1.使用transition元素把小球包裹起来 -->
    27       <transition
    28         @before-enter="beforeEnter"
    29         @enter="enter"
    30         @after-enter="afterEnter">
    31         <div class="ball" v-show="flag"></div>
    32       </transition>
    33       </div>
    34 
    35 
    36       <script>
    37           //创建 Vue 实例,得到 ViewModel
    38           var vm =  new Vue({
    39               el:'#app',
    40         data:{
    41           flag:false
    42         },
    43         methods:{
    44           //注意:动画钩子函数的第一个参数:el,表示要执行动画的哪个DOM元素,是个原生的JS DOM对象
    45           //大家可以认为,el是通过 document.getElementById('') 方式获取到的原生JS DOM对象
    46           beforeEnter(el){
    47             //beforeEnter 表示动画入场前,此时,动画尚未开始,可以在beforeEnter中,设置元素开始动画之前的起始样式
    48             //设置小球开始动画之前的,起始位置
    49             el.style.transform="translate(0,0)"
    50           },
    51           enter(el,done){
    52 
    53             //这句话,没有实际的作用,但是,如果不写,出不来动画效果;
    54             //可以认为el.offsetWidth 会强制动画刷新, 换成el.offsetHight  el.offsetLeft   el.offsetTop也是一样的效果,只要和offset相关的都可以
    55             el.offsetWidth
    56             //enter表示动画开始之后的样式,这里可以设置小球完成动画之后的,结束状态
    57             el.style.transform="translate(150px,450px)"
    58             el.style.transition='all  1s ease'
    59 
    60             //这里的 done,起始就是afterEnter 这个函数,也就是说:done是afterEnter函数的引用
    61             done()
    62           },
    63           afterEnter(el){
    64             //动画完成之后,会调用 afterEnter
    65             // console.log('ok')
    66             this.flag=!this.flag
    67           }
    68         }
    69           });
    70       </script>
    71   </body>
    72 </html>
  • 相关阅读:
    pyhon简单比较文本相似度的方法
    MongoDB数据的导入、导出、备份与恢复
    django实现注册、登录小系统
    nginx+uwsgi部署django的简单介绍
    python操作Excel的几种方式
    Python的Pexpect的简单使用
    JVM之类加载
    Java中的绑定
    JVM之GC
    JVM之内存管理
  • 原文地址:https://www.cnblogs.com/songsongblue/p/10996702.html
Copyright © 2011-2022 走看看