解決vue的過渡動(dòng)畫無法正常實(shí)現(xiàn)問題
前記:最近在寫vue的一個(gè)項(xiàng)目要實(shí)現(xiàn)過渡的效果,雖然vue動(dòng)畫不是強(qiáng)項(xiàng),庫也多,但是基本的坑還是得踩扎實(shí);
建議:先學(xué)習(xí)vue官方文檔的進(jìn)入/離開 & 列表過渡章節(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">點(diǎn)擊</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)過渡怎么變成了延遲,仔細(xì)閱讀官方文檔找不同,連連看;
我們要過度的屬性是opacity,相對(duì)于官方文檔我們?cè)谝^渡的div里多加了一個(gè)opacitry的屬性值為1,這就導(dǎo)致其實(shí)整個(gè)動(dòng)畫過程中opacitry的值都為1而不會(huì)出現(xiàn)動(dòng)畫中由1到0的過渡;
導(dǎo)致這個(gè)問題的根本原因是因?yàn)閏ss優(yōu)先級(jí)的問題,div的css優(yōu)先級(jí)遠(yuǎn)大于動(dòng)畫中css屬性的優(yōu)先級(jí),所以opacity的值始終都是div中的值并不發(fā)生過渡變化;
那么解決的辦法其一當(dāng)然是去掉在div中的opacitry的值,從而使得只存在動(dòng)畫中的opacitry從而實(shí)現(xiàn)動(dòng)畫;
但是當(dāng)div中的屬性需要存在我們又需要過渡動(dòng)畫的時(shí)候,我們需要!important這尊大神去改變css的優(yōu)先級(jí);!important是使當(dāng)前css的優(yōu)先級(jí)達(dá)到最高當(dāng)然important就是優(yōu)先級(jí)最低;
來! 上正確的代碼
<!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">點(diǎn)擊</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>
這樣就既可以實(shí)現(xiàn)過渡效果也不拆去div中優(yōu)先級(jí)較高的css屬性
以上這篇解決vue的過渡動(dòng)畫無法正常實(shí)現(xiàn)問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Vue入門之a(chǎn)nimate過渡動(dòng)畫效果
- vue實(shí)現(xiàn)列表滾動(dòng)的過渡動(dòng)畫
- 使用vue-router切換頁面時(shí)實(shí)現(xiàn)設(shè)置過渡動(dòng)畫
- vue中組件的過渡動(dòng)畫及實(shí)現(xiàn)代碼
- Vue 解決路由過渡動(dòng)畫抖動(dòng)問題(實(shí)例詳解)
- Vue運(yùn)用transition實(shí)現(xiàn)過渡動(dòng)畫
- Vue動(dòng)畫事件詳解及過渡動(dòng)畫實(shí)例
- 簡(jiǎn)單談?wù)剉ue的過渡動(dòng)畫(推薦)
- Vue中的基礎(chǔ)過渡動(dòng)畫及實(shí)現(xiàn)原理解析
- Vue中實(shí)現(xiàn)過渡動(dòng)畫效果實(shí)例詳解
相關(guān)文章
vuex中store.commit和store.dispatch的區(qū)別及使用方法
這篇文章主要介紹了vuex中store.commit和store.dispatch的區(qū)別及使用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
vue動(dòng)態(tài)綁定組件子父組件多表單驗(yàn)證功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue動(dòng)態(tài)綁定組件子父組件多表單驗(yàn)證功能的實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-05-05
詳解vue3.2新增的defineCustomElement底層原理
本文主要介紹了vue3.2新增的defineCustomElement底層原理,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
vue 動(dòng)態(tài)組件(component :is) 和 dom元素限制(is)用法說明
這篇文章主要介紹了vue 動(dòng)態(tài)組件(component :is) 和 dom元素限制(is)用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Vue-router 類似Vuex實(shí)現(xiàn)組件化開發(fā)的示例
本篇文章主要介紹了Vue-router 類似Vuex實(shí)現(xiàn)組件化開發(fā)的示例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-09-09
vue-cli-service不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件問題
在Vue項(xiàng)目構(gòu)建過程中,如果遇到無法識(shí)別'vue-cli-service'命令的錯(cuò)誤提示,通常是因?yàn)闆]有全局安裝vue-cli,解決這個(gè)問題的步驟主要包括:首先檢查Vue版本,如果未安裝則先安裝Vue;其次全局安裝vue-cli;若在安裝過程中遇到cnpm命令找不到的情況2024-10-10
vue實(shí)現(xiàn)動(dòng)態(tài)控制el-table表格列的展示與隱藏
這篇文章主要介紹了vue實(shí)現(xiàn)動(dòng)態(tài)控制el-table表格列的展示與隱藏,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04

