過(guò)渡效果在交互體驗(yàn)中的重要性不言而喻。以往我們使用js或Jquery添加或移除元素的類(class),搭配CSS中定義好的樣式,再引用一些javascript庫(kù)之后,可以做作出非常復(fù)雜,驚艷的動(dòng)態(tài)效果,不過(guò)這套方法還是太繁瑣。
vue.js內(nèi)置了一套過(guò)渡系統(tǒng),可以在元素從DOM中插入或移除時(shí)自動(dòng)應(yīng)用過(guò)渡效果。vue會(huì)在是黨的時(shí)機(jī)觸發(fā)css過(guò)渡或者動(dòng)畫(huà),你也可以提供相應(yīng)的javascript鉤子函數(shù)在過(guò)渡過(guò)程中執(zhí)行自定義的DOM操作。
每個(gè)過(guò)渡效果,都需要在目標(biāo)元素上使用transition特性。
<div v-if="show" transition="my-style">顯示</div>
transition的特性可以與以下指令一起搭配使用:
1.v-if 2.v-show 3.v-for 4.動(dòng)態(tài)組件
還有其它的一些指令或資源,大家可以自行查找。
完整代碼實(shí)例如下:
<div v-if="show" :transition="expand"></div> // expand必需事先定義好,expand后面寫(xiě)樣式要用(關(guān)鍵) <transition name="expand"><div v-if="show">顯示</div></transition>這樣的嵌套也可以 .expand-transition { // 必需寫(xiě) transition: all .3s ease; height: 30px; padding: 10px; background-color: #eee; overflow: hidden; } .expand-enter{ //開(kāi)始進(jìn)入過(guò)渡,元素被插入生效 transition:opacity .5s; } .fade-leave-active { // 結(jié)束狀態(tài) opacity:0; }
當(dāng)然有開(kāi)始肯定是有結(jié)束的狀態(tài),它其實(shí)是有四個(gè)(CSS類)名在enter/leave的狀態(tài)中切換。
1.v-enter:定義進(jìn)入過(guò)渡的開(kāi)始狀態(tài),在元素被插入的時(shí)生效,在下一個(gè)幀移除
2.v-enter-active:定義進(jìn)入過(guò)渡的結(jié)束狀態(tài),在元素被插入的時(shí)候生效,在transition/animation完成之后移除
3.v-leave:定義離開(kāi)過(guò)渡的開(kāi)始狀態(tài),在離開(kāi)過(guò)渡被觸發(fā)時(shí)生效,在下一幀移除
4.v-leave-active:定義離開(kāi)過(guò)渡的開(kāi)始狀態(tài),在離開(kāi)過(guò)渡被觸發(fā)時(shí)生效,在下一個(gè)幀移除
根據(jù)以上四個(gè)狀態(tài),就可以完整的寫(xiě)好一個(gè)css的一個(gè)過(guò)渡效果,比如頁(yè)面從窗口左側(cè)劃入進(jìn)場(chǎng),這樣是不是很酷???
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com