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