Vue過渡效果之JS過渡

來源:互聯網
上載者:User

標籤:for   his   rip   latex   bind   注意   ext   border   ati   

前面的話

  與CSS過渡不同,JS過渡主要通過事件進行觸發。本文將詳細介紹Vue過渡效果之JS過渡

 

事件鉤子

  JS過渡主要通過事件監聽事件鉤子來觸發過渡,共包括如下的事件鉤子

<transition  v-on:before-enter="beforeEnter"  v-on:enter="enter"  v-on:after-enter="afterEnter"  v-on:enter-cancelled="enterCancelled"  v-on:before-leave="beforeLeave"  v-on:leave="leave"  v-on:after-leave="afterLeave"  v-on:leave-cancelled="leaveCancelled">  <!-- ... --></transition>

  下面各個方法中,函數中的參數el表示要過渡的元素,可以設定不同情況下,el的位置、顏色等來控制其動畫的改變

// ...methods: {  // --------  // 進入中  // --------  beforeEnter: function (el) {    // ...  },  // 此回呼函數是可選項的設定  // 與 CSS 結合時使用  enter: function (el, done) {    // ...    done()  },  afterEnter: function (el) {    // ...  },  enterCancelled: function (el) {    // ...  },  // --------  // 離開時  // --------  beforeLeave: function (el) {    // ...  },  // 此回呼函數是可選項的設定  // 與 CSS 結合時使用  leave: function (el, done) {    // ...    done()  },  afterLeave: function (el) {    // ...  },  // leaveCancelled 只用於 v-show 中  leaveCancelled: function (el) {    // ...  }}

  上面方法中,有兩個方法比較特殊,是enter()和leave()方法,它們接受了第二個參數done。當進入完畢或離開完畢後,會調用done()方法來進行接下來的操作

  [注意]對於僅使用JS過渡的元素添加 v-bind:css="false",Vue 會跳過 CSS 的檢測。這也可以避免過渡過程中 CSS 的影響

【簡單案例】

  下面是一個JS過渡的簡單案例

<div id="demo">  <button @click="show = !show">Toggle</button>  <transition v-on:before-enter="beforeEnter" v-on:enter="enter" v-on:leave="leave" :css="false">    <p v-if="show">Demo</p>  </transition></div>
<script>new Vue({  el: ‘#demo‘,  data: {    show: false  },  methods: {    beforeEnter: function (el) {      el.style.opacity = 0      el.style.transformOrigin = ‘left‘    },    enter: function (el, done) {      Velocity(el, { opacity: 1, fontSize: ‘1.4em‘ }, { duration: 300 })      Velocity(el, { fontSize: ‘1em‘ }, { complete: done })    },    leave: function (el, done) {      Velocity(el, { translateX: ‘15px‘, rotateZ: ‘50deg‘ }, { duration: 600 })      Velocity(el, { rotateZ: ‘100deg‘ }, { loop: 2 })      Velocity(el, {rotateZ: ‘45deg‘,translateY: ‘30px‘,translateX: ‘30px‘,opacity: 0}, {complete: done })    }  }})  </script>

 

初始渲染過渡

  可以通過 appear 特性設定節點的在初始渲染的過渡,自訂 JavaScript 鉤子

<transition  appear  v-on:before-appear="customBeforeAppearHook"  v-on:appear="customAppearHook"  v-on:after-appear="customAfterAppearHook"  v-on:appear-cancelled="customAppearCancelledHook">  <!-- ... --></transition>

  下面是一個例子

<div id="demo">  <button @click="reset">還原</button>  <transition appear  :appear="customAppearHook">    <p>小火柴的藍色理想</p>  </transition></div>
<script>new Vue({  el: ‘#demo‘,  methods:{    reset(){      history.go();    },     customAppearHook(el, done) {      Velocity(el, {backgroundColor:"#ddd",translateX:200});      Velocity(el,"reverse",{complete:done})    },   }})</script>

 

Vue過渡效果之JS過渡

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.