解決vue的過渡動畫無法正常實現(xiàn)問題
前記:最近在寫vue的一個項目要實現(xiàn)過渡的效果,雖然vue動畫不是強項,庫也多,但是基本的坑還是得踩扎實;
建議:先學(xué)習vue官方文檔的進入/離開 & 列表過渡章節(jié),那么我們來看bug;
首先上出現(xiàn)問題的代碼
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
.haha-leave-active {
transition: opacity .5s;
}
.haha-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0;
}
#demo{
position: relative;
width: 200px;
height: 200px;
margin: auto;
top: 100px;
}
.bug{
position: relative;
opacity: 1;
}
</style>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
</head>
<body>
<div id="demo">
<button v-on:click="show = !show">點擊</button>
<transition name="haha">
<div class="bug" v-if="show">你好</div>
</transition>
</div>
<script type="text/javascript">
new Vue({
el: '#demo',
data: {
show: true
}
})
</script>
</body>
</html>
以上代碼看起起來真的沒有什么問題,但是復(fù)制粘貼發(fā)現(xiàn)過渡怎么變成了延遲,仔細閱讀官方文檔找不同,連連看;
我們要過度的屬性是opacity,相對于官方文檔我們在要過渡的div里多加了一個opacitry的屬性值為1,這就導(dǎo)致其實整個動畫過程中opacitry的值都為1而不會出現(xiàn)動畫中由1到0的過渡;
導(dǎo)致這個問題的根本原因是因為css優(yōu)先級的問題,div的css優(yōu)先級遠大于動畫中css屬性的優(yōu)先級,所以opacity的值始終都是div中的值并不發(fā)生過渡變化;
那么解決的辦法其一當然是去掉在div中的opacitry的值,從而使得只存在動畫中的opacitry從而實現(xiàn)動畫;
但是當div中的屬性需要存在我們又需要過渡動畫的時候,我們需要!important這尊大神去改變css的優(yōu)先級;!important是使當前css的優(yōu)先級達到最高當然important就是優(yōu)先級最低;
來! 上正確的代碼
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
.haha-leave-active {
transition: opacity .5s;
}
.haha-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0;
}
#demo{
position: relative;
width: 200px;
height: 200px;
margin: auto;
top: 100px;
}
.bug{
position: relative;
opacity: 1 important;
}
</style>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
</head>
<body>
<div id="demo">
<button v-on:click="show = !show">點擊</button>
<transition name="haha">
<div class="bug" v-if="show">你好</div>
</transition>
</div>
<script type="text/javascript">
new Vue({
el: '#demo',
data: {
show: true
}
})
</script>
</body>
</html>
這樣就既可以實現(xiàn)過渡效果也不拆去div中優(yōu)先級較高的css屬性
以上這篇解決vue的過渡動畫無法正常實現(xiàn)問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vuex中store.commit和store.dispatch的區(qū)別及使用方法
這篇文章主要介紹了vuex中store.commit和store.dispatch的區(qū)別及使用方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01
vue動態(tài)綁定組件子父組件多表單驗證功能的實現(xiàn)代碼
這篇文章主要介紹了vue動態(tài)綁定組件子父組件多表單驗證功能的實現(xiàn)代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧2018-05-05
詳解vue3.2新增的defineCustomElement底層原理
本文主要介紹了vue3.2新增的defineCustomElement底層原理,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08
vue 動態(tài)組件(component :is) 和 dom元素限制(is)用法說明
這篇文章主要介紹了vue 動態(tài)組件(component :is) 和 dom元素限制(is)用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Vue-router 類似Vuex實現(xiàn)組件化開發(fā)的示例
本篇文章主要介紹了Vue-router 類似Vuex實現(xiàn)組件化開發(fā)的示例,具有一定的參考價值,有興趣的可以了解一下2017-09-09
vue-cli-service不是內(nèi)部或外部命令,也不是可運行的程序或批處理文件問題
在Vue項目構(gòu)建過程中,如果遇到無法識別'vue-cli-service'命令的錯誤提示,通常是因為沒有全局安裝vue-cli,解決這個問題的步驟主要包括:首先檢查Vue版本,如果未安裝則先安裝Vue;其次全局安裝vue-cli;若在安裝過程中遇到cnpm命令找不到的情況2024-10-10
vue實現(xiàn)動態(tài)控制el-table表格列的展示與隱藏
這篇文章主要介紹了vue實現(xiàn)動態(tài)控制el-table表格列的展示與隱藏,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04

