vueの中のアニメーションの実現のいくつかの方式

5306 ワード

方法一:cssアニメーション
遷移のクラス名遷移のクラス名は,入る/離れる遷移で6つのclassが切り替わる.v-enter:遷移の開始状態を定義します.エレメントが挿入されたときに有効になり、次のフレームで除去されます.v-enter-active:遷移のステータスを定義します.エレメントが挿入されたときに有効になり、transition/animationが完了した後に除去されます.このクラスは遷移のプロセス時間,遅延,曲線関数を定義するために用いることができる.v-enter-to:2.1.8版および以上の定義は遷移の終了状態に入る.要素がフレームに挿入された後に有効になり(v-enterが削除されます)、transition/animationが完了した後に削除されます.v-leave:遷移から離れる開始状態を定義します.遷移がトリガされたときに有効になり、次のフレームで削除されます.v-leave-active:遷移の状態を定義します.要素の遷移の全過程で作用し、遷移がトリガーされた直後に有効になり、transition/animationが完了した後に除去されます.このクラスは遷移のプロセス時間,遅延,曲線関数を定義するために用いることができる.v-leave-to:2.1.8版および以上の定義は遷移から離れた終了状態を定義する.遷移から1フレーム離れた後に有効になり(これと同時にv-leaveが削除されます)、transition/animationが完了した後に削除されます.




  
  
  
  Document
  



  

?how much?

var vm = new Vue({ el: '#app', data: { isShow: true }, methods: { fn() { this.isShow = !this.isShow } } })

方法2:animateを使用する.cssアニメーションライブラリ

  


  

?how much?

var vm = new Vue({ el: '#app', data: { isShow: true }, methods: { fn() { this.isShow = !this.isShow } } })

方式三、Jsフック関数の使用

  

?how much?

var vm = new Vue({ el: '#app', data: { isShow: false }, methods: { beforeEnter(el) { // , // console.log('before'); // el.style.transform = 'translateY(300px)' el.style.opacity = 0 el.style.transition = 'all 2s ease' }, enter(el, done) { // // console.log('enter'); // : // offsetWidth , , // el.offsetWidth el.offsetHeight // el.style.transform = 'translateY(0px)' el.style.opacity = 1 done() }, afterEnter(el) { // // console.log('after'); this.isShow = !this.isShow } } })

方式四、velocity jsアニメーションライブラリの使用

  

?how much?

var vm = new Vue({ el: '#app', data: { isShow: false }, // velocity.js JS , , velocity , CSS3 , , methods: { beforeEnter(el) { // el.style.opacity = 0 el.style.fontSize = '12px' el.style.color = '#f00' }, enter(el, done) { // Velocity.js : jQuery animate // : // : // : // : // Velocity(el, { fontSize: 50, opacity: 1 }, 2000, done) Velocity(el, { fontSize: 50, opacity: 1, color: '#0f0' }, { duration: 2000, complete: done }) }, afterEnter(el) { // this.isShow = !this.isShow } } })