vue3 transition 組件使用總結(jié)

transition 動畫組件

1.過渡的類名

在進(jìn)入/離開的過渡中,會有 6 個 class 切換酌摇。

1.v-enter-from:定義進(jìn)入過渡的開始狀態(tài)淫痰。在元素被插入之前生效病瞳,在元素被插入之后的下一幀移除践惑。
2.v-enter-active:定義進(jìn)入過渡生效時的狀態(tài)。在整個進(jìn)入過渡的階段中應(yīng)用乡恕,在元素被插入之前生效言询,在過渡/動畫完成之后移除俯萎。這個類可以被用來定義進(jìn)入過渡的過程時間,延遲和曲線函數(shù)运杭。
3.v-enter-to:定義進(jìn)入過渡的結(jié)束狀態(tài)夫啊。在元素被插入之后下一幀生效 (與此同時 v-enter-from 被移除),在過渡/動畫完成之后移除辆憔。
4.v-leave-from:定義離開過渡的開始狀態(tài)撇眯。在離開過渡被觸發(fā)時立刻生效,下一幀被移除虱咧。
5.v-leave-active:定義離開過渡生效時的狀態(tài)熊榛。在整個離開過渡的階段中應(yīng)用,在離開過渡被觸發(fā)時立刻生效腕巡,在過渡/動畫完成之后移除玄坦。這個類可以被用來定義離開過渡的過程時間,延遲和曲線函數(shù)绘沉。
6.v-leave-to:離開過渡的結(jié)束狀態(tài)煎楣。在離開過渡被觸發(fā)之后下一幀生效 (與此同時 v-leave-from 被移除),在過渡/動畫完成之后移除车伞。

示例

<template>
     <button @click='flag = !flag'>切換</button>
     <transition name='fade'>
         <div v-if='flag' class="box"></div>
     </transition>
</template>
<style>

/* 開始過渡 */
.fade-enter-from{
   background:red;
   width:0px;
   height:0px;
   transform:rotate(360deg)
}
/* 開始過渡了 */
.fade-enter-active{
  transition: all 2.5s linear;
}
/* 過渡完成 */
.fade-enter-to{
   background:yellow;
   width:200px;
   height:200px;
}
/* 離開的過渡 */
.fade-leave-from{
  width:200px;
  height:200px;
  transform:rotate(360deg)
}
/* 離開中過渡 */
.fade-leave-active{
  transition: all 1s linear;
}
/* 離開完成 */
.fade-leave-to{
  width:0px;
  height:0px;
}
</style>
  1. 自定義過渡類名
  • enter-from-class
  • enter-active-class
  • enter-to-class
  • leave-from-class
  • leave-active-class
  • leave-to-class

動畫庫:animate.css

安裝

npm i animate.css
<template>
    <div class="content">
        <button @click="flag = !flag">切換</button>
        <transition
            :duration="{ enter: 500, leave: 500 }"
            leave-active-class="animate__animated animate__bounce"
            enter-active-class="animate__animated animate__bounceInUp"
        >
            <div v-if="flag" class="box">演示動畫</div>
        </transition>
    </div>
</template>
<script setup lang="ts">
import { ref } from "vue";
import "animate.css";
const flag = ref<boolean>(true);
</script>

過渡時間

duration :動畫的執(zhí)行時間(以毫秒計)

<transition :duration="1000">...</transition>

分別指定進(jìn)入和離開的持續(xù)時間:

<transition :duration="{ enter: 500, leave: 800 }">...</transition>

transtion 生命周期

transiton 生命周期8個

 @before-enter="beforeEnter" //對應(yīng)enter-from
 @enter="enter"http://對應(yīng)enter-active
 @after-enter="afterEnter"http://對應(yīng)enter-to
 @enter-cancelled="enterCancelled"http://顯示過渡打斷
 @before-leave="beforeLeave"http://對應(yīng)leave-from
 @leave="leave"http://對應(yīng)enter-active
 @after-leave="afterLeave"http://對應(yīng)leave-to
 @leave-cancelled="leaveCancelled"http://離開過渡打斷

當(dāng)只用 JavaScript 過渡的時候择懂,在 enter 和 leave 鉤子中必須使用 done 進(jìn)行回調(diào)。

結(jié)合gsap 動畫庫使用 GreenSock

<button @click="flag = !flag">切換</button>
<transition @before-enter="beforeEnter" @enter="enter" @leave="leave">
<div v-if="flag" class="box">演示動畫</div>
</transition>

const beforeEnter = (el: Element) => {
    gsap.set(el, {
        scaleX: 0.8,
        scaleY: 1.2,
    });
};
const enter = (el: Element, done: gsap.Callback) => {
    gsap.to(el, {
        duration: 1,
        scaleX: 1.5,
        scaleY: 0.7,
        opacity: 1,
        x: 150,
        ease: "elastic.inOut(2.5, 1)",
        onComplete: done,
    });
};
const leave = (el: Element, done: gsap.Callback) => {
    gsap.to(el, {
        duration: 0.7,
        scaleX: 1,
        scaleY: 1,
        x: 300,
        ease: "elastic.inOut(2.5, 1)",
    });
    gsap.to(el, {
        duration: 0.2,
        delay: 0.5,
        opacity: 0,
        onComplete: done,
    });
};

appear: 設(shè)置初始節(jié)點過渡另玖,頁面加載完成就開始動畫

<transition
    appear
    name="fade"
>
<div class="box">演示動畫</div>
</transition>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末休蟹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子日矫,更是在濱河造成了極大的恐慌,老刑警劉巖绑榴,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哪轿,死亡現(xiàn)場離奇詭異,居然都是意外死亡翔怎,警方通過查閱死者的電腦和手機(jī)窃诉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赤套,“玉大人飘痛,你說我怎么就攤上這事∪菸眨” “怎么了宣脉?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長剔氏。 經(jīng)常有香客問我塑猖,道長竹祷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任羊苟,我火速辦了婚禮塑陵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蜡励。我一直安慰自己令花,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布凉倚。 她就那樣靜靜地躺著兼都,像睡著了一般。 火紅的嫁衣襯著肌膚如雪占遥。 梳的紋絲不亂的頭發(fā)上俯抖,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機(jī)與錄音瓦胎,去河邊找鬼芬萍。 笑死,一個胖子當(dāng)著我的面吹牛搔啊,可吹牛的內(nèi)容都是我干的柬祠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼负芋,長吁一口氣:“原來是場噩夢啊……” “哼漫蛔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起旧蛾,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤莽龟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后锨天,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體毯盈,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年病袄,在試婚紗的時候發(fā)現(xiàn)自己被綠了搂赋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡益缠,死狀恐怖脑奠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情幅慌,我是刑警寧澤宋欺,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響迄靠,放射性物質(zhì)發(fā)生泄漏秒咨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一掌挚、第九天 我趴在偏房一處隱蔽的房頂上張望雨席。 院中可真熱鬧,春花似錦吠式、人聲如沸陡厘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糙置。三九已至,卻和暖如春是目,著一層夾襖步出監(jiān)牢的瞬間谤饭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工懊纳, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留揉抵,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓嗤疯,卻偏偏與公主長得像冤今,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子茂缚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容