日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

hide show vue 动画_Vue2.x学习四:过渡动画

發布時間:2023/12/2 vue 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hide show vue 动画_Vue2.x学习四:过渡动画 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Vue 在插入、更新或者移除 DOM 時,提供多種不同方式的應用過渡效果。

請注意它的應用場景

并不是說我們寫了一個動畫之后讓它一直在動,而是在一個模塊顯示或隱藏的時候去做一種特效,使得它的過程有過渡性,而不是很突兀的直接消失或顯示。

它適用的場景是v-if和v-show,動態組件,組件根節點。

具體實現有以下幾種方式:

1)在 CSS 過渡和動畫中自動應用 class

2)可以配合使用第三方 CSS 動畫庫,如 Animate.css

3)在過渡鉤子函數中使用 JavaScript 直接操作 DOM

4)可以配合使用第三方 JavaScript 動畫庫,如 Velocity.js

下面我們通過一個例子來學習:

顯示

隱藏

{{msg}}

new Vue({

el:'.container',

data:{

msg:'hello',

//定義它是否顯示,默認情況下為false隱藏

isShow:false,

},

//在其中定義顯示與隱藏兩個方法

methods:{

// 要想動態的實現顯示與隱藏,我們只要動態的改變isShow的狀態

show(){

this.isShow=true;//當isShow為真,顯示

},

hide(){

this.isShow=false;//當isShow為假,隱藏

}

}

});

它還有一種簡便寫法

切換

{{msg}}

new Vue({

el:'.container',

data:{

msg:'hello',

isShow:false,

}

});

我們可以看到,上面顯示與隱藏的方式過于直接,此時我們可以為它創建動畫效果。

css過渡

隱藏與顯示的效果實現之后,我們來創建動畫。

哪個部分要動態的顯示與隱藏,我們給哪個部分加。

然后我們為它加特效。

加特效之前我們要知道,元素從開始顯示到完全顯示,開始隱藏到完全隱藏也要經歷一些階段,我們可以在這之中加入一些樣式,就能達到一些效果。

我們可以通過一張圖來說明:

v-enter:定義進入過渡的開始狀態。在元素被插入之前生效,在元素被插入之后的下一幀移除。

v-enter-active:定義進入過渡生效時的狀態。在整個進入過渡的階段中應用,在元素被插入之前生效,在過渡/動畫完成之后移除。這個類可以被用來定義進入過渡的過程時間,延遲和曲線函數。

v-enter-to: 定義進入過渡的結束狀態。在元素被插入之后下一幀生效 (與此同時 v-enter 被移除),在過渡/動畫完成之后移除。

v-leave: 定義離開過渡的開始狀態。在離開過渡被觸發時立刻生效,下一幀被移除。

v-leave-active:定義離開過渡生效時的狀態。在整個離開過渡的階段中應用,在離開過渡被觸發時立刻生效,在過渡/動畫完成之后移除。這個類可以被用來定義離開過渡的過程時間,延遲和曲線函數。

v-leave-to: 定義離開過渡的結束狀態。在離開過渡被觸發之后下一幀生效 (與此同時 v-leave 被刪除),在過渡/動畫完成之后移除。

animate

/*開始顯示*/

.v-enter{ opacity: 0; }

/*顯示過程*/

.v-enter-active{ transition: opacity 1.5s;/*給transition加過渡特效(屬性),持續時間為1.5秒*/ }

/*顯示完畢*/

.v-enter-to{ opacity: 1; }

/*開始隱藏*/

.v-leave{ opacity: 1; }

/*隱藏過程*/

.v-leave-active{ transition: opacity 1.5s; }

/*隱藏完畢*/

.v-leave-to{ opacity: 0; }

切換

{{msg}}

new Vue({

el:'.container',

data:{

msg:'hello',

isShow:false,

}

});

css動畫

相當于將css中的動畫機制運用到vue中

animate

/*只在顯示與隱藏的過程中定義動畫,實現過渡效果*/

.v-enter-active {

animation-name: app;/*指定動畫名稱*/

animation-duration: 3s;/*定義時間*/

}

.v-leave-active {

animation-name: app;

animation-duration: 3s;

animation-direction: reverse;/*動畫反向播放*/

}

/*定義動畫效果*/

@keyframes app {

0% {

transform: scale(0);

}

50% {

transform: scale(1.5);

}

100%{

transform: scale(1);

}

}

切換

{{msg}}

new Vue({

el:'.container',

data:{

msg:'hello',

isShow:false,

}

});

我們有的時候可能不太能寫好keyframes,這個時候我們可以引用別人封裝好的動畫庫,那么我們自己就不用寫keyframes了。

下面我們來看看如何在vue中引入animate.css動畫庫。

css動畫庫

上面兩種方式,我們只是為特效元素添加transition標簽包裹,

而這種動畫庫的實現方式,我們需要為transition標簽添加屬性

vue中為我們提供了6個標簽:

enter-class、enter-active-class、enter-to-class

leave-class、leave-active-class、leave-to-class

他們的優先級高于普通的類名,這對于 Vue 的過渡系統和其他第三方 CSS 動畫庫,如 Animate.css 結合使用十分有用。

animate

切換

{{msg}}

new Vue({

el:'.container',

data:{

msg:'hello',

isShow:false,

}

});

js動畫庫

這里我們用到了JavaScript 鉤子。

它有以下幾種鉤子:

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綁定函數,并在methods中定義

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) {

// ...

}

}

實現動畫的方式有2種,一種是jquery,一種是velocity。

此處我們以velocity為例

animate

切換

{{msg}}

new Vue({

el:'.container',

data:{

msg:'hello',

isShow:false,

},

methods:{

// 事件由vue來調用,它會給我們傳兩個參數:el(當前元素),done(函數執行完之后的回調)

enter(el,done){

//console.log(el);//[object HTMLDivElement]

//console.log(done);//function () {...}

/*

Velocity(要控制的元素,{動畫樣式},{動畫配置})

動畫樣式,可以在http://www.mrfront.com/docs/velocity.js/plugins.html內置特效中尋找

*/

Velocity(el,"transition.fadeIn",{

// 動畫配置項

duration:1000, //動畫執行時間(單位毫秒)

complete:done // 動畫結束時的回調函數,必須要寫

/*其他參數

easing: "swing", // 緩動效果

queue: "", // 隊列

begin: undefined, // 動畫開始時的回調函數

progress: undefined, // 動畫執行中的回調函數(該函數會隨著動畫執行被不斷觸發)

display: undefined, // 動畫結束時設置元素的 css display 屬性

visibility: undefined, // 動畫結束時設置元素的 css visibility 屬性

loop: false, // 循環

delay: false, // 延遲

mobileHA: true // 移動端硬件加速(默認開啟)

*/

});

}

}

});

總結

以上是生活随笔為你收集整理的hide show vue 动画_Vue2.x学习四:过渡动画的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。