其他分享
首页 > 其他分享> > vue钩子函数模拟半场动画

vue钩子函数模拟半场动画

作者:互联网

2019年8月16日
钩子函数主要就是这三个函数

      /* 注意:动画钩子函数的第一个参数:el,表示要执行动画的那个DOM元素, 是个原生的JS DOM对象 */
               /*相当于document.getElememtById('')获取的*/
               /*beforeEnete表示动画入场之前,此时,动画尚未开始,可以再beforeEnter中,设置元素开始动画之前的起始样式*/
		beforeEnter(el){
                   el.style.transform="translate(0,0)" /*设置小球的起始位置*/
						},
               /*enter表示动画开始之后的样式,这里可以设置小球完成后的结束状态*/
		enter(el,done){
                el.offsetWidth /*可以认为强制动画刷新*/
                el.style.transform="translate(150px,450px)"
                el.style.transition='all 0.4s ease'
                done()  /*这里的done,起始就是afterEnter这个函数,也就是说:done是afterEnter函数的引用*/
               		},
        afterEnter(el){
                   this.flag=false
               } /*动画完成之后的事件*/

钩子函数模拟小球半场动画的代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="js/vue.js"></script>
    <style>
        .ball{
            width:15px;
            height:15px;
            border-radius:50%;
            background-color:red;
        }
    </style>
</head>
<body>
    <div id="app">
            <input type="button" value="加入购物车" @click="flag=!flag">
            <transition
            @before-enter="beforeEnter"
            @enter="enter"
            @after-enter="afterEnter">
                    <div class="ball" v-show="flag">
            </transition>
        </div>
    </div>
    <script>
        
        var vm=new Vue({
           el:'#app',
           data:{
               flag:false
           },
           methods:{
               /* 注意:动画钩子函数的第一个参数:el,表示要执行动画的那个DOM元素, 是个原生的JS DOM对象 */
               /*相当于document.getElememtById('')获取的*/
               /*beforeEnete表示动画入场之前,此时,动画尚未开始,可以再beforeEnter中,设置元素开始动画之前的起始样式*/
               beforeEnter(el){
                   el.style.transform="translate(0,0)" /*设置小球的起始位置*/
               },
               /*enter表示动画开始之后的样式,这里可以设置小球完成后的结束状态*/
               enter(el,done){
                el.offsetWidth /*可以认为强制动画刷新*/
                el.style.transform="translate(150px,450px)"
                el.style.transition='all 0.4s ease'

                done()  /*这里的done,起始就是afterEnter这个函数,也就是说:done是afterEnter函数的引用*/
               },
               afterEnter(el){
                   this.flag=false
               } /*动画完成之后的事件*/
           }
        });
    </script>
</body>

</html>

标签:动画,style,vue,函数,半场,el,钩子,afterEnter,done
来源: https://blog.csdn.net/wmiaopas/article/details/99683054