国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Vue中JS動畫與Velocity.js的結合使用

2019-11-19 12:09:02
字體:
來源:轉載
供稿:網友

前面學習了用css實現動畫效果,那 Vue 中能不能用js實現動畫效果呢?

其實 Vue 提供了很多動畫鉤子

enter

入場動畫鉤子函數有before-enter、enter、after-enter

before-enter

動畫出現前的事件

<div id="root">  <transition name="fade"    @before-enter="handleBeforeEnter"    //動畫出現前的事件  >    <div v-if="show">hello world</div>  </transition>  <button @click="handleClick">切換</button></div>let vm = new Vue({  el: '#root',  data: {    show:true  },  methods: {    handleClick(){      this.show = !this.show    },    handleBeforeEnter(el){     //接收一個參數 el,為 dom 元素      el.style.color = 'red'    }  }})

enter

before-enter事件結束后執行

<div id="root">  <transition name="fade"    @before-enter="handleBeforeEnter"    @enter="handleEnter"    //before-enter 事件結束后執行  >    <div v-if="show">hello world</div>  </transition>  <button @click="handleClick">切換</button></div>let vm = new Vue({  el: '#root',  data: {    show:true  },  methods: {    handleClick(){      this.show = !this.show    },    handleBeforeEnter(el){      el.style.color = 'red'    }    handleEnter(el,done){      //接收兩個參數,第一個參數 el 為 dom 元素,第二個參數是 done 是個回調函數      setTimeout(()=>{        el.style.color = 'green'        done()         //done 回調函數非常重要,在執行完動畫后需手動執行下這個函數,相當于告訴 Vue 這個動畫已經執行完了,會再去調用 after-enter 事件      },2000)    }  }})

after-enter

enter事件中done被調用后,after-enter事件會被觸發

<div id="root">  <transition name="fade"        @before-enter="handleBeforeEnter"        @enter="handleEnter"        @after-enter="handleAfterEnter"   //enter 事件中 done 被調用后,after-enter 事件會被觸發  >    <div v-if="show">hello world</div>  </transition>  <button @click="handleClick">切換</button></div>let vm = new Vue({  el: '#root',  data: {    show: true  },  methods: {    handleClick() {      this.show = !this.show    },    handleBeforeEnter(el) {      el.style.color = 'red'    },    handleEnter(el, done) {      setTimeout(() => {        el.style.color = 'green'        done()      }, 2000)    },    handleAfterEnter(el) {   //接收一個參數 el,為 dom 元素      setTimeout(()=>{        el.style.color = 'blue'      },2000)    }  }})

leave

與入場動畫對應的出場動畫鉤子函數有before-leave、leave、after-leave。它們的用法與入場動畫用法一樣

Velocity.js庫

有了上面基礎后,配合Velocity.js庫,能實現更強大的動畫效果。

<div id="root">  <transition name="fade"        @before-enter="handleBeforeEnter"        @enter="handleEnter"        @after-enter="handleAfterEnter"   //enter 事件中 done 被調用后,after-enter 事件會被觸發  >    <div v-if="show">hello world</div>  </transition>  <button @click="handleClick">切換</button></div>let vm = new Vue({  el: '#root',  data: {    show: true  },  methods: {    handleClick() {      this.show = !this.show    },    handleBeforeEnter(el) {      el.style.opacity = 0    },    handleEnter(el, done) {      Velocity(el, {     //第一個參數是要操作的 dom 元素        opacity: 1      }, {        duration: 1000,   //第三參數中需要配置一個 complete 屬性,值為 done,因為 Velocity 執行完后會自動執行 complete 屬性,這里設置為 done 是讓它去觸發 after-enter 事件        complete: done      })    },    handleAfterEnter(el) {      console.log('動畫結束')    }  }})

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 夏河县| 曲麻莱县| 卢龙县| 黄浦区| 临沂市| 界首市| 扎赉特旗| 南康市| 岳阳县| 高雄市| 洛南县| 宜春市| 通州区| 清远市| 北海市| 青川县| 色达县| 蛟河市| 江都市| 武川县| 海口市| 衡南县| 渭南市| 休宁县| 土默特右旗| 安庆市| 汕头市| 夏邑县| 黄陵县| 溧水县| 北宁市| 阿勒泰市| 寿阳县| 青铜峡市| 翁源县| 涿鹿县| 呼和浩特市| 唐山市| 华亭县| 博乐市| 琼中|