爲何要有動畫:動畫可以提升用戶的體驗,幫助用戶更好的理解頁面中的功能;css
1.htmlhtml
<div id="app"> <input type="button" value="動起來" @click="myAnimate"> <!-- 使用 transition 將須要過渡的元素包裹起來 --> <transition name="fade"> <div v-show="isshow">動畫哦</div> </transition> </div>
2.VM實例vue
// 建立 Vue 實例,獲得 ViewModel var vm = new Vue({ el: '#app', data: { isshow: false }, methods: { myAnimate() { this.isshow = !this.isshow; } } });
3.定義兩組動畫app
/* 定義進入和離開時候的過渡狀態 */ .fade-enter-active, .fade-leave-active { transition: all 0.2s ease; position: absolute; } /* 定義進入過渡的開始狀態 和 離開過渡的結束狀態 */ .fade-enter, .fade-leave-to { opacity: 0; transform: translateX(100px); }
1.導入動畫類庫ssh
<link rel="stylesheet" type="text/css" href="./lib/animate.css">
2.定義transition屬性函數
<transition enter-active-class="fadeInRight" leave-active-class="fadeOutRight" :duration="{ enter: 500, leave: 800 }"> <div class="animated" v-show="isshow">動畫哦</div> </transition>
1.定義 transition 組件以及三個鉤子函數:動畫
<div id="app"> <input type="button" value="切換動畫" @click="isshow = !isshow"> <transition @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter"> <div v-if="isshow" class="show">OK</div> </transition> </div>
2.定義三個 methods 鉤子方法:this
methods: { beforeEnter(el) { // 動畫進入以前的回調 el.style.transform = 'translateX(500px)'; }, enter(el, done) { // 動畫進入完成時候的回調 el.offsetWidth; el.style.transform = 'translateX(0px)'; done(); }, afterEnter(el) { // 動畫進入完成以後的回調 this.isshow = !this.isshow; } }
3.定義動畫過渡時長和樣式:spa
.show{ transition: all 0.4s ease; }
<style> .list-enter, .list-leave-to { opacity: 0; transform: translateY(10px); } .list-enter-active, .list-leave-active { transition: all 0.3s ease; } </style>
<div id="app"> <input type="text" v-model="txt" @keyup.enter="add"> <transition-group tag="ul" name="list"> <li v-for="(item, i) in list" :key="i">{{item}}</li> </transition-group> </div>
// 建立 Vue 實例,獲得 ViewModel var vm = new Vue({ el: '#app', data: { txt: '', list: [1, 2, 3, 4] }, methods: { add() { this.list.push(this.txt); this.txt = ''; } } });
<transition-group>
組件還有一個特殊之處。不只能夠進入和離開動畫,還能夠改變定位。要使用這個新功能只需瞭解新增的 v-move
特性,它會在元素的改變定位的過程當中應用。code
v-move
和 v-leave-active
結合使用,可以讓列表的過渡更加平緩柔和:.v-move{ transition: all 0.8s ease; } .v-leave-active{ position: absolute; }