91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-05 13:46:50 來源:腳本之家 閱讀:229 作者:UCCs 欄目:web開發

前面學習了用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('動畫結束')
    }
  }
})

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永川市| 顺昌县| 竹北市| 营山县| 茶陵县| 永安市| 金门县| 弋阳县| 阿拉尔市| 盐城市| 朝阳县| 天津市| 沙坪坝区| 安陆市| 游戏| 信宜市| 呼图壁县| 吉水县| 阳东县| 隆昌县| 陈巴尔虎旗| 新蔡县| 九寨沟县| 汤原县| 内乡县| 墨江| 库伦旗| 武强县| 饶平县| 获嘉县| 德清县| 遂川县| 巴彦淖尔市| 商洛市| 津市市| 哈尔滨市| 鸡西市| 永济市| 华坪县| 固始县| 双江|