詳解vue過度效果與動畫transition使用示例
先看一個示例
代碼如下
<template> <div align="center" style="margin-top: 100px;"> <button @click="show= !show" >測試</button> <transition> <div v-if="show"> <p>這是一段文字</p> </div> </transition> </div> </template> <script> export default { name: 'transitionTest', data () { return { show: true } } } </script> <style scoped> .v-enter-active, .v-leave-active { transition: all .5s ; } .v-enter { transform: translateY(50px); opacity: 0; } .v-leave-active { transform: translateY(50px); opacity: .5; } </style>
包裹瞭一個div組件,點擊按鈕實現動畫效果。一般搭配v-if、v-show、動態組件、組件根節點來使用。
transition鉤子函數
transition提供六個鉤子函數,提供給我們在不同時機編寫相應的動畫效果。以下是此六個鉤子函數執行時機
1.v-enter:進入過渡開始狀態。在元素被插入之前生效,在元素被插入之後的下一幀移除。
2.v-enter-active:進入過渡生效時的狀態。這個類可以被用來定義進入過渡的過程時間,延遲和曲線函數。
3.v-enter-to:進入過渡的結束狀態。在元素被插入之後下一幀生效 (與此同時 v-enter 被移除),在過渡/動畫完成之後移除。
4.v-leave: 離開過渡的開始狀態。在離開過渡被觸發時立刻生效,下一幀被移除。
5.v-leave-active:離開過渡生效時的狀態。這個類可以被用來定義離開過渡的過程時間,延遲和曲線函數。
6.v-leave-to:離開過渡的結束狀態。在離開過渡被觸發之後下一幀生效 (與此同時 v-leave 被刪除),在過渡/動畫完成之後移除
自定義過渡類名
在頁面中有多個地方需要進行過渡效果,如果使用vue提供的默認那6個鉤子函數,那麼所有要過渡地方的過渡效果都是一樣的。如果需要在不同的場合定義不同的動畫效果,就需要我們自己定義專屬於各個過渡效果的類名。解決辦法給transition標簽添加name屬性,在name屬性中寫入自己的類名前綴。例如,那麼在使用類名的時候就是這樣的:.my-trans-leave、.my-trans-enter-to。如:
<transition name="my-trans" mode="out-in"> <router-view v-if="!$route.meta.keepAlive"></router-view> </transition>
style寫法,my-trans是“.my-trans-enter-active”的前綴
<style> .my-trans-enter-active, .my-trans-leave-active { transition: all .2s; opacity: 1; } .my-trans-enter { transition: all .2s; opacity: 0; } .my-trans-leave-to { transition: all .2s; opacity: 0; } </style>
transition-group使用
對列表進行過渡渲染時,就必須使用transition-group元素包裹。點擊列表中內容,按照以下動畫移除,示例如下
<template> <div class="main_css"> <transition-group name="slide"> <li v-for="(item,i) in list" :key="item.id" @click="del(i)"> {{ item.id }} --- {{ item.name }} </li> </transition-group> </div> </template> <script> export default { name: 'transitionGroupTest', data () { return { list: [{ id: 1, name: '紅燒魚' }, { id: 2, name: '炒土豆' }, { id: 3, name: '燒茄子' } ] } }, methods: { del (i) { this.list.splice(i, 1) } } } </script> <style scoped> .main_css { margin-left: 50px; margin-top: 50px; } .slide-enter-active { transition: all .5s linear; } .slide-leave-active { transition: all .1s linear; } .slide-enter { transform: translateX(-100%); opacity: 0; } .slide-leave-to { transform: translateX(110%); opacity: 0; } </style>
小結
過度與動畫,使用transition標簽完成,同時提供6個鉤子函數。全局動畫在app.vue中,在router-view組件中包裹transition,如:;給transition標簽添加name屬性定義過渡類名,實現局部變化。
以上就是詳解vue過度與動畫transition使用示例的詳細內容,更多關於vue過度與動畫transition的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Vue中transition標簽的基本使用教程
- vue中transition組件在項目中運用小結
- 如何利用vue實現css過渡和動畫
- Vue中實現過渡動畫效果示例代碼
- vue使用transition組件動畫效果的實例代碼