vue用js部分控制動畫實現


上次我們提到用vue實現過渡動畫,其實只講了vue動畫的一部分,用vue自帶的css狀態控制動畫實現,不帶js

http://www.cnblogs.com/null11/p/7081506.html

在vue中,還有一種方式控制動畫的實現,那就是用js控制動畫的狀態

分別是下面3種狀態

:before-enter="名字"  動畫進入之前

:enter="名字"   動畫進入后

:leave="名字"   動畫進入結束

 

下面我們看看實例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="http://tool.oschina.net/js/jquery/jquery-1.7.2.js"></script>
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<style>
    #app{
    position: relative;
    width: 100%;
    height: 30px;
}
.animate-p{
    position: absolute;
    top: 0px;
    left: 0px;
}
</style>
<body>
    <div id="app">
        <transition
        v-on:before-enter="beforeEnter"
        v-on:enter="enter"
        v-on:leave="leave"
        v-bind:css="false"
        >
        <span class="animate-p" v-show="show">快看啦</span>
        </transition>
        <br>
         <button @click="show =! show">toggle</button>
    </div>
 
</body>
</html>

html部分,因為動畫控制,我采用了jquery的animate動畫函數,大家以后vue做東西時候,盡量干凈,用vue就不要用jquery

上面我們采用了vue內置動畫組件transition,並且我們綁定了動畫的3中狀態

<transition

v-on:before-enter="beforeEnter"
v-on:enter="enter"
v-on:leave="leave"
v-bind:css="false"

>

還是上次那種圖,進入之前,進入中,進入后

下面我們開始寫js部分控制了

new Vue({
          el:'#app',
        data:{
            show:true
        },
        methods: {
        //進入之前
        beforeEnter: function(el){
            $(el).css({
                left:"-500px",
                opacity:0
            })
        },
        //進入中
        enter: function(el,done){
            $(el).stop().animate({
                left:0,
                opacity:1
            },{
                duration:1500,
                complete:done
            },5000)
        },
        //結束
        leave: function(el,done){
            $(el).stop().animate({
                left:"500px",
                opacity:0
            },{
                duration:1500,
                complete:done
            },5000)
        }    
    }
    });

我們對應三種動畫狀態就ok了,是不是很簡單

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM