Vue3 appear 失效的問題及如何使用 appear
最近在學(xué)習(xí) vue3 的動畫時遇到 appear 無法生效的問題
問題的具體表現(xiàn):
看以下代碼,按理應(yīng)該來說,如果我們設(shè)置 fuct-appear-from,fuct-appea-active 后在元素初始出現(xiàn)時應(yīng)該會有一個效果
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)入與離開的動畫 */
.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è)置了上面這樣的屬性與樣式,說明你和我一樣沒有理解這個 appear " 初次 "的意思
先說一下代碼中的語法錯誤,首先不存在 *-appear-from 等這樣的動畫設(shè)置,只有 appear-active-class 的自定義動畫屬性,這也是我一直認(rèn)為動畫不生效的原因
其他問題與疑問 的解決
什么是" 初次 " ?
首先要搞明白這個初次出現(xiàn)的問題,這個初次指的是頁面在 默認(rèn) 渲染的情況下的初次 ,簡單來說就是 這個元素是默認(rèn)顯示的,即 v-if="show" 中 show默認(rèn)為 true. 如果默認(rèn)是不顯示的元素,appear 設(shè)置后也是無效果的
初次動畫是什么?
在解決初次動畫后,有的人認(rèn)為這個初次動畫應(yīng)該特殊一點(diǎn) 所以會 想應(yīng)該有 *-appear-from 的css設(shè)定,但是其實(shí)沒有, 我也不知道為什么我的VScode彈出了提示,其實(shí)這個初次動畫調(diào)用的是 進(jìn)入動畫即 *-enter-from 系列動畫,
因為默認(rèn)情況下 如果元素默認(rèn)顯示的情況下是不會調(diào)用 進(jìn)入動畫元素的,設(shè)置appear 后 則會默認(rèn)渲染時 執(zhí)行 進(jìn)入動畫 ;
可運(yùn)行的調(diào)試代碼,嘗試刪除內(nèi)部的 appear 刷新頁面,你就懂了
<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)入與離開的動畫 */
.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 是一個在元素默認(rèn)被顯示的情況下 調(diào)用進(jìn)入動畫效果,使得元素在這種初次渲染情況下 執(zhí)行進(jìn)入動畫的屬性
當(dāng)然如果你設(shè)定了 appear-from-class 等屬性 則會與 進(jìn)入動畫同時執(zhí)行
再提供一個是 class 自定義初次動畫的版本,你會發(fā)現(xiàn)appear 無論如何都會調(diào)用 enter 進(jìn)入動畫,除非你不設(shè)置 enter 動畫
<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é)前請一定查看了 失效問題的總結(jié)部分
appear 雖然沒有設(shè)定 *-appear-from 的css 但是保留了 appear-from-class自定義屬性
對于沒有其他動畫需求的內(nèi)容,只需要一個進(jìn)入的特殊動畫,我們只需要設(shè)置以下 自定義動畫屬性即可,appear-active- 或者 使用enter動畫,只設(shè)置appear 只是容易搞混,而且enter是會被重復(fù)使用的
這個屬性主要還是對頁面動畫的一種補(bǔ)充,對于一開始在頁面顯示的元素,提供一種更加平滑的顯示,使用 enter 與 class 動畫形式以實(shí)際環(huán)境為準(zhǔn)
在enter 與 class 同時設(shè)定時
enter與class會同時運(yùn)行
enter與class 有動畫內(nèi)容沖突時 enter的應(yīng)用級別高于 class 的自定義動畫,這甚至?xí)?class的全部動畫失效
到此這篇關(guān)于Vue3 appear 失效 如何使用 appear的文章就介紹到這了,更多相關(guān)Vue3 appear 失效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue proxyTable配置多個接口地址,解決跨域的問題
這篇文章主要介紹了Vue proxyTable配置多個接口地址,解決跨域的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
一文搞明白vue開發(fā)者vite多環(huán)境配置
Vue是一款流行的JavaScript框架,用于開發(fā)動態(tài)單頁應(yīng)用程序,本地安裝和環(huán)境配置是學(xué)習(xí)和使用Vue的第一步,下面這篇文章主要給大家介紹了關(guān)于vue開發(fā)者vite多環(huán)境配置的相關(guān)資料,需要的朋友可以參考下2023-06-06
vue使用axios導(dǎo)出后臺返回的文件流為excel表格詳解
這篇文章主要介紹了vue使用axios導(dǎo)出后臺返回的文件流為excel表格方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
vue.set向?qū)ο罄镌黾佣鄬訑?shù)組屬性不生效問題及解決
這篇文章主要介紹了vue.set向?qū)ο罄镌黾佣鄬訑?shù)組屬性不生效問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04
vue3中配置文件vue.config.js不生效的解決辦法
這篇文章主要介紹了vue3中配置文件vue.config.js不生效的解決辦法,文中通過代碼示例講解的非常詳細(xì),對大家解決問題有一定的幫助,需要的朋友可以參考下2024-05-05

