javascript - vue過渡效果 css過渡 類名的先后順序
問題描述
給一個(gè)元素設(shè)計(jì)過渡,理想效果是出現(xiàn)時(shí)高度遞增,消失是高度遞減。設(shè)計(jì)的代碼如下:
.collapse-enter-active, .collapse-leave-active { transition: height .5s;}.collapse-enter, .collapse-leave-active { height: 0;}.collapse-leave { height: 100px;} .collapse-enter-active { height: 100px;}
結(jié)果元素出現(xiàn)時(shí),高度直接到達(dá)100px,消失時(shí)正常,修改代碼的順序如下:
.collapse-enter-active, .collapse-leave-active { transition: height .5s;}.collapse-enter-active { height: 100px;}.collapse-enter, .collapse-leave-active { height: 0;}.collapse-leave { height: 100px;}
問題解決了,不明白順序?yàn)槭裁磿?huì)造成影響,過渡效果不是在通過切換css來實(shí)現(xiàn)的么,應(yīng)該不是覆蓋的問題吧?具體效果可以點(diǎn)擊查看 jsbin
問題解答
回答1:@CRIMX 的答案已經(jīng)講清楚了,本質(zhì)上就是 enter 和 enter active 兩個(gè)類會(huì)在第一幀同時(shí)存在于動(dòng)畫元素上,而后通過移除 enter 類執(zhí)行動(dòng)畫,因此不能讓 active 類的樣式提前生效。
兩個(gè)類的方式雖然足以完成動(dòng)畫,但確實(shí)不太容易理解,所以 vue 2.1.8 開始增加了 to 的類名,可以將動(dòng)畫的結(jié)束態(tài)從 active 類中剝離出來,更方便理解,避免產(chǎn)生順序覆蓋問題。
回答2:在元素被插入時(shí) v-enter 和 v-enter-active 同時(shí)生效的,前者在下一幀移除,后者在動(dòng)畫完成后移除。所以 v-enter-active 要寫在前面。leave 也一樣。
回答3:這個(gè)真是挺奇怪的, 下次寫把a(bǔ)ctive寫前面, 坐等高人來解惑
回答4:你可以看一下官網(wǎng)給的解釋,說的很詳細(xì):https://cn.vuejs.org/v2/guide/transitions.html#過渡的-CSS-類名
相關(guān)文章:
1. android - NavigationView 的側(cè)滑菜單中如何保存新增項(xiàng)(通過程序添加)2. 提示語法錯(cuò)誤語法錯(cuò)誤: unexpected ’abstract’ (T_ABSTRACT)3. javascript - vue 元素加樣式該怎么做4. tp5 不同控制器中的變量調(diào)用問題5. 這段代碼既不提示錯(cuò)誤也看不到結(jié)果,請(qǐng)老師明示錯(cuò)在哪里,謝謝!6. 老師 我是一個(gè)沒有學(xué)過php語言的準(zhǔn)畢業(yè)生 我希望您能幫我一下7. javascript - 請(qǐng)問一下vue當(dāng)中是在什么時(shí)候請(qǐng)求數(shù)據(jù)保存全局變量的?8. python文檔怎么查看?9. php7.3.4中怎么開啟pdo驅(qū)動(dòng)10. 除了 python2 和 python3,ipython notebook 還可以用哪些內(nèi)核?
