zoukankan      html  css  js  c++  java
  • VUE参考---动画钩子函数

    VUE参考---动画钩子函数

    一、总结

    一句话总结:

    动画钩子函数,也就是用函数来写动画,也就是用js控制样式
      <div id="app">
        <input type="button" value="快到碗里来" @click="flag=!flag">
        <!-- 1. 使用 transition 元素把 小球包裹起来 -->
        <transition
          @before-enter="beforeEnter"
          @enter="enter"
          @after-enter="afterEnter">
          <div class="ball" v-show="flag"></div>
        </transition>
      </div>
    
      <script>
    
        // 创建 Vue 实例,得到 ViewModel
        var vm = new Vue({
          el: '#app',
          data: {
            flag: false
          },
          methods: {
            // 注意: 动画钩子函数的第一个参数:el,表示 要执行动画的那个DOM元素,是个原生的 JS DOM对象
            // 大家可以认为 , el 是通过 document.getElementById('') 方式获取到的原生JS DOM对象
            beforeEnter(el){
              // beforeEnter 表示动画入场之前,此时,动画尚未开始,可以 在 beforeEnter 中,设置元素开始动画之前的起始样式
              // 设置小球开始动画之前的,起始位置
              el.style.transform = "translate(0, 0)"
            },
            enter(el, done){
              // 这句话,没有实际的作用,但是,如果不写,出不来动画效果;
              // 可以认为 el.offsetWidth 会强制动画刷新
              el.offsetWidth
              // enter 表示动画 开始之后的样式,这里,可以设置小球完成动画之后的,结束状态
              el.style.transform = "translate(150px, 450px)"
              el.style.transition = 'all 1s ease'
    
              // 这里的 done, 起始就是 afterEnter 这个函数,也就是说:done 是 afterEnter 函数的引用
              done()
            },
            afterEnter(el){
              // 动画完成之后,会调用 afterEnter
              // console.log('ok')
              this.flag = !this.flag
            }
          }
        });
      </script>

    二、动画钩子函数

    博客对应课程的视频位置:

     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   <script src="./lib/vue-2.4.0.js"></script>
    10   <style>
    11     .ball {
    12       width: 15px;
    13       height: 15px;
    14       border-radius: 50%;
    15       background-color: red;
    16     }
    17   </style>
    18 </head>
    19 
    20 <body>
    21   <div id="app">
    22     <input type="button" value="快到碗里来" @click="flag=!flag">
    23     <!-- 1. 使用 transition 元素把 小球包裹起来 -->
    24     <transition
    25       @before-enter="beforeEnter"
    26       @enter="enter"
    27       @after-enter="afterEnter">
    28       <div class="ball" v-show="flag"></div>
    29     </transition>
    30   </div>
    31 
    32   <script>
    33 
    34     // 创建 Vue 实例,得到 ViewModel
    35     var vm = new Vue({
    36       el: '#app',
    37       data: {
    38         flag: false
    39       },
    40       methods: {
    41         // 注意: 动画钩子函数的第一个参数:el,表示 要执行动画的那个DOM元素,是个原生的 JS DOM对象
    42         // 大家可以认为 , el 是通过 document.getElementById('') 方式获取到的原生JS DOM对象
    43         beforeEnter(el){
    44           // beforeEnter 表示动画入场之前,此时,动画尚未开始,可以 在 beforeEnter 中,设置元素开始动画之前的起始样式
    45           // 设置小球开始动画之前的,起始位置
    46           el.style.transform = "translate(0, 0)"
    47         },
    48         enter(el, done){
    49           // 这句话,没有实际的作用,但是,如果不写,出不来动画效果;
    50           // 可以认为 el.offsetWidth 会强制动画刷新
    51           el.offsetWidth
    52           // enter 表示动画 开始之后的样式,这里,可以设置小球完成动画之后的,结束状态
    53           el.style.transform = "translate(150px, 450px)"
    54           el.style.transition = 'all 1s ease'
    55 
    56           // 这里的 done, 起始就是 afterEnter 这个函数,也就是说:done 是 afterEnter 函数的引用
    57           done()
    58         },
    59         afterEnter(el){
    60           // 动画完成之后,会调用 afterEnter
    61           // console.log('ok')
    62           this.flag = !this.flag
    63         }
    64       }
    65     });
    66   </script>
    67 </body>
    68 
    69 </html>
     
  • 相关阅读:
    第一章数据结构——实现线性表
    hdu 4454 Stealing a Cake(三分之二)
    找呀志_java网络编程(4)TCP/IP、Http和Socket差额
    Velocity脚本新手教程
    2015第15周日PostgreSQL学习
    2015第15周六Java线程池
    2015第15周五寻找身边聪明的人
    2015第15周四
    2015第15周三
    2015第15周二
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/12743453.html
Copyright © 2011-2022 走看看