Vue3 appear 失效的問(wèn)題及如何使用 appear
最近在學(xué)習(xí) vue3 的動(dòng)畫時(shí)遇到 appear 無(wú)法生效的問(wèn)題
問(wèn)題的具體表現(xiàn):
看以下代碼,按理應(yīng)該來(lái)說(shuō),如果我們?cè)O(shè)置 fuct-appear-from,fuct-appea-active 后在元素初始出現(xiàn)時(shí)應(yīng)該會(huì)有一個(gè)效果
html
<Transition name="fuct" appear> <div class="doc" v-if="show"></div> </Transition>
css
/* 初次效果 */
.fuct-appear-active{
transition: all .3s ease-in-out;
}
.fuct-appear-from{
transform: translateY(7em);
}
/* 進(jìn)入與離開(kāi)的動(dòng)畫 */
.doc{
width:50px;
height:50px;
background-color: red;
}
.fuct-enter-from,
.fuct-leave-to{
transform: translateX(2em);
}
.fuct-enter-active,
.fuct-leave-active{
transition: all .5s ease-out;
}如果你和我一樣設(shè)置了上面這樣的屬性與樣式,說(shuō)明你和我一樣沒(méi)有理解這個(gè) appear " 初次 "的意思
先說(shuō)一下代碼中的語(yǔ)法錯(cuò)誤,首先不存在 *-appear-from 等這樣的動(dòng)畫設(shè)置,只有 appear-active-class 的自定義動(dòng)畫屬性,這也是我一直認(rèn)為動(dòng)畫不生效的原因
其他問(wèn)題與疑問(wèn) 的解決
什么是" 初次 " ?
首先要搞明白這個(gè)初次出現(xiàn)的問(wèn)題,這個(gè)初次指的是頁(yè)面在 默認(rèn) 渲染的情況下的初次 ,簡(jiǎn)單來(lái)說(shuō)就是 這個(gè)元素是默認(rèn)顯示的,即 v-if="show" 中 show默認(rèn)為 true. 如果默認(rèn)是不顯示的元素,appear 設(shè)置后也是無(wú)效果的
初次動(dòng)畫是什么?
在解決初次動(dòng)畫后,有的人認(rèn)為這個(gè)初次動(dòng)畫應(yīng)該特殊一點(diǎn) 所以會(huì) 想應(yīng)該有 *-appear-from 的css設(shè)定,但是其實(shí)沒(méi)有, 我也不知道為什么我的VScode彈出了提示,其實(shí)這個(gè)初次動(dòng)畫調(diào)用的是 進(jìn)入動(dòng)畫即 *-enter-from 系列動(dòng)畫,
因?yàn)槟J(rèn)情況下 如果元素默認(rèn)顯示的情況下是不會(huì)調(diào)用 進(jìn)入動(dòng)畫元素的,設(shè)置appear 后 則會(huì)默認(rèn)渲染時(shí) 執(zhí)行 進(jìn)入動(dòng)畫 ;
可運(yùn)行的調(diào)試代碼,嘗試刪除內(nèi)部的 appear 刷新頁(yè)面,你就懂了
<template>
<button @click="show=!show">click</button>
<Transition name="fuct" appear-from-c>
<div class="doc" v-if="show"></div>
</Transition>
</template>
<script setup>
import { ref } from 'vue'
const show=ref(true)
</script>
<style>
/* 初次效果 */
fo-appear-active{
transition: all .3s ease-in-out;
}
fo-appear-from{
transform: translateY(7em);
}
/* 進(jìn)入與離開(kāi)的動(dòng)畫 */
.doc{
width:50px;
height:50px;
background-color: red;
}
.fuct-enter-from,
.fuct-leave-to{
transform: translateX(2em);
}
.fuct-enter-active,
.fuct-leave-active{
transition: all .5s ease-out;
}
</style>總結(jié)
appear 是一個(gè)在元素默認(rèn)被顯示的情況下 調(diào)用進(jìn)入動(dòng)畫效果,使得元素在這種初次渲染情況下 執(zhí)行進(jìn)入動(dòng)畫的屬性
當(dāng)然如果你設(shè)定了 appear-from-class 等屬性 則會(huì)與 進(jìn)入動(dòng)畫同時(shí)執(zhí)行
再提供一個(gè)是 class 自定義初次動(dòng)畫的版本,你會(huì)發(fā)現(xiàn)appear 無(wú)論如何都會(huì)調(diào)用 enter 進(jìn)入動(dòng)畫,除非你不設(shè)置 enter 動(dòng)畫
<script setup>
import {ref} from 'vue'
const show=ref(true);
</script>
<template>
<button @click="show = !show">Ckick</button>
<Transition name="fuct" appear
appear-active-class="active"
appear-to-class="to"
>
<div class="doc" v-if="show"></div>
</Transition>
</template>
<style>
.active{
transition: all .3s ease-in-out;
}
.to{
transform: translateY(7em);
}
.doc{
width:50px;
height:50px;
background-color: red;
}
.fuct-enter-from,
.fuct-leave-to{
transform: translateX(2em);
}
.fuct-enter-active,
.fuct-leave-active,
.fuct-appear-active{
transition: all .5s ease-out;
}
.fuct-appear-from{
transform: translateY(6em);
}
</style>如何使用 appear
在閱讀本節(jié)前請(qǐng)一定查看了 失效問(wèn)題的總結(jié)部分
appear 雖然沒(méi)有設(shè)定 *-appear-from 的css 但是保留了 appear-from-class自定義屬性
對(duì)于沒(méi)有其他動(dòng)畫需求的內(nèi)容,只需要一個(gè)進(jìn)入的特殊動(dòng)畫,我們只需要設(shè)置以下 自定義動(dòng)畫屬性即可,appear-active- 或者 使用enter動(dòng)畫,只設(shè)置appear 只是容易搞混,而且enter是會(huì)被重復(fù)使用的
這個(gè)屬性主要還是對(duì)頁(yè)面動(dòng)畫的一種補(bǔ)充,對(duì)于一開(kāi)始在頁(yè)面顯示的元素,提供一種更加平滑的顯示,使用 enter 與 class 動(dòng)畫形式以實(shí)際環(huán)境為準(zhǔn)
在enter 與 class 同時(shí)設(shè)定時(shí)
enter與class會(huì)同時(shí)運(yùn)行
enter與class 有動(dòng)畫內(nèi)容沖突時(shí) enter的應(yīng)用級(jí)別高于 class 的自定義動(dòng)畫,這甚至?xí)?class的全部動(dòng)畫失效
到此這篇關(guān)于Vue3 appear 失效 如何使用 appear的文章就介紹到這了,更多相關(guān)Vue3 appear 失效內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
為vue項(xiàng)目自動(dòng)設(shè)置請(qǐng)求狀態(tài)的配置方法
這篇文章主要介紹了vue項(xiàng)目自動(dòng)設(shè)置請(qǐng)求狀態(tài)的配置方法,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06
詳解vuex中的this.$store.dispatch方法
這篇文章主要介紹了vuex中的this.$store.dispatch方法,必須要用commit(‘SET_TOKEN’,?tokenV)調(diào)用mutations里的方法,才能在store存儲(chǔ)成功,需要的朋友可以參考下2022-11-11
Vue之修改數(shù)據(jù)頁(yè)面不更新的問(wèn)題
這篇文章主要介紹了Vue之修改數(shù)據(jù)頁(yè)面不更新的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
部署Vue項(xiàng)目到服務(wù)器后404錯(cuò)誤的原因及解決方案
文章介紹了Vue項(xiàng)目部署步驟以及404錯(cuò)誤的解決方案,部署步驟包括構(gòu)建項(xiàng)目、上傳文件、配置Web服務(wù)器、重啟Nginx和訪問(wèn)域名,404錯(cuò)誤通常是由于歷史模式問(wèn)題導(dǎo)致的,解決方法是修改Nginx配置,將所有頁(yè)面請(qǐng)求重定向到index.html,并在Vue應(yīng)用中覆蓋所有路由情況2025-02-02

