一:vue中使用js動畫
根據上一篇安裝animate.css之后
vue中有動畫的鈎子函數,@before-enter是內容由無到有的時候自動監聽觸發的函數,函數會接收到參數el,這樣可以動態設置樣式。@enter是@before-enter觸發結束后觸發。
@enter不同的是會接收到兩個參數,參數一為元素el,參數二為done(回調函數);done函數執行完就會觸發@after-enter函數。
出場動畫鈎子函數@before-leave、@leave、@after-leave同理
<!--vue中使用js動畫--> <transition name='fade' @before-enter='handlebeforeEnter' @enter='handleEnter' @after-enter='handleafterEnter'> <p v-show='jsshow'>js動畫</p> </transition> <button @click="handlejsClick">切換js動畫</button>
<script> export default{ data(){ return { } }, methods:{ handlebeforeEnter(el){ el.style.color='red' }, handleEnter(el,done){ setTimeout(()=>{ el.style.color='green'; },2000); setTimeout(()=>{ //這里的done回調函數也比較重要,done函數觸發完又會觸發@after-ender done(); },4000) }, handleafterEnter(el){ el.style.color='#535353' } }, } </script>
二:vue中使用velocity.js
1.首先安裝velocity.js
npm install velocity-animate --save-dev
2.在main.js中引入
import Velocity from 'velocity-animate'
3.原理跟上面一樣,只是函數的變化方法不一樣,這里的 complete: done跟上面的回調函數同理,一定要寫,不然不會觸發handleafterEnter函數
<template> <div> <transition name='fade' @before-enter='handlebeforeEnter' @enter='handleEnter' @after-enter='handleafterEnter'> <p v-show='jsshow'>js動畫</p> </transition> <button @click="handlejsClick">切換js動畫</button> </div> </template> <script> export default{ data(){ return { jsshow:true } }, methods:{ handlejsClick(){ this.jsshow=!this.jsshow; }, handlebeforeEnter(el){ el.style.opacity=0 }, handleEnter(el,done){ console.log("before結束了執行了enter") Velocity(el,{opacity:1},{duration:3000,complete: done}) }, handleafterEnter(el){ el.style.color='red' } }, } </script>