iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0
Vue.js

新手學習Vue.js與實作之旅系列 第 21

Day21 Vue元件 - Transition

  • 分享至 

  • xImage
  •  

今天的內容要介紹 Vue 如何在元件狀態發生變化時,執行CSS過渡漸變的動畫效果,來增添使用者介面的互動性。/images/emoticon/emoticon08.gif

Transition 元件是什麼?

<transition> 是 Vue 提供的一個內置元件,不需要註冊就可以在任何地方中使用,讓元件在過渡轉場時,出現漸變的動畫效果,並且可以透過使用 v-if 、 v-show 、<component>、key屬性觸發切換進退場。

以下將介紹 Transition 進場與退場的 CSS class:

圖片來源:https://zh-hk.vuejs.org/guide/built-ins/transition.html

  • v-enter-from:進入動畫的起始狀態。

  • v-enter-active:進入動畫的生效狀態。

  • v-enter-to:進入動畫的結束狀態。

  • v-leave-from:離開動畫的起始狀態。

  • v-leave-active:離開動畫的生效狀態。

  • v-leave-to:離開動畫的結束狀態。

其中 v-enter-active 和 v-leave-active 可以被用來定義離開動畫的持續時間、延遲與速度曲線類型。

Transition 元件如何使用?

將要執行過渡動畫的元素寫在<transition>標籤裡,然後利用 CSS 語法來定義漸變的樣式。

命名 Transition

若要定義多組不同的漸變樣式,可以在<transition>加上 name 屬性,並將其對應的 CSS class 前綴 v- 改成自定義的名稱。

以下是官方文件的範例

<template>標籤寫入:

<Transition name="fade">
  ...
</Transition>

<style>標籤寫入:

.fade-enter-active,
.fade-leave-active {
  transition: opacity 0.5s ease;
}

.fade-enter-from,
.fade-leave-to {
  opacity: 0;
}

TransitionGroup 元件是什麼?

<TransitionGroup>是 Vue 提供的一個內置元件,用於 v-for 列表渲染的動畫效果。

以下是官方文件的範例

<template>標籤寫入:

<TransitionGroup name="list" tag="ul">
  <li v-for="item in items" :key="item">
    {{ item }}
  </li>
</TransitionGroup>

<style>標籤寫入:

.list-enter-active,
.list-leave-active {
  transition: all 0.5s ease;
}
.list-enter-from,
.list-leave-to {
  opacity: 0;
  transform: translateX(30px);
}

參考資源

https://book.vue.tw/CH2/2-5-transitions.html
https://zh-hk.vuejs.org/guide/built-ins/transition.html
https://medium.com/unalai/%E8%AA%8D%E8%AD%98-vue-transition-%E5%85%83%E4%BB%B6-%E6%8E%A7%E5%88%B6%E9%81%8E%E6%B8%A1%E6%95%88%E6%9E%9C-eb9510e0d2b1
https://ithelp.ithome.com.tw/m/articles/10329881


上一篇
Day20 Vue 插槽 Slots (下)
系列文
新手學習Vue.js與實作之旅21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言