EP64 - 動畫技巧

閱讀時間約 5 分鐘
Animation Techniques,這是文件最後一篇內容了~
大家其實也發現,翻譯的品質真的不太好~
等我有空再好好修正一下~ 之後實作之後再回來看一下這些內容吧!!!

Vue 提供 <Transition><TransitionGroup> 元件來處理進入/離開和列表過渡效果。然而,即使在 Vue 應用程式中,網頁上還有許多其他使用動畫的方法。在這裡,我們將討論一些額外的技術。

基於類別的動畫 - Class-based Animations

對於不進入/離開 DOM 的元素,我們可以通過動態添加 CSS 類別來觸發動畫:

const disabled = ref(false)

function warnDisabled() {
disabled.value = true
setTimeout(() => {
disabled.value = false
}, 1500)
}
<div :class="{ shake: disabled }">
<button @click="warnDisabled">Click me</button>
<span v-if="disabled">This feature is disabled!</span>
</div>
.shake {
animation: shake 0.82s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
transform: translate3d(0, 0, 0);
}

@keyframes shake {
10%,
90% {
transform: translate3d(-1px, 0, 0);
}

20%,
80% {
transform: translate3d(2px, 0, 0);
}

30%,
50%,
70% {
transform: translate3d(-4px, 0, 0);
}

40%,
60% {
transform: translate3d(4px, 0, 0);
}
}

基於狀態的動畫 - State-driven Animations

某些過渡效果可以通過插值值來應用,例如在互動發生時綁定樣式到元素。以下是一個例子:

const x = ref(0)

function onMousemove(e) {
x.value = e.clientX
}
<div
@mousemove="onMousemove"
:style="{ backgroundColor: `hsl(${x.value}, 80%, 50%)` }"
class="movearea"
>
<p>Move your mouse across this div...</p>
<p>x: {{ x }}</p>
</div>
.movearea {
transition: 0.3s background-color ease;
}

除了顏色,你還可以使用樣式綁定來動畫化變換、寬度或高度。你甚至可以使用彈簧物理效果來動畫化 SVG 路徑——畢竟,它們都是屬性資料綁定。

source code

使用監視器的動畫 - Animating with Watchers

通過一些創意,我們可以使用監視器根據一些數值狀態來動畫化任何事物。例如,我們可以動畫化數字本身:

import { ref, reactive, watch } from 'vue'
import gsap from 'gsap'

const number = ref(0)
const tweened = reactive({
number: 0
})

watch(number, (n) => {
gsap.to(tweened, { duration: 0.5, number: Number(n) || 0 })
})
Type a number: <input v-model.number="number" />
<p>{{ tweened.number.toFixed(0) }}</p>

這些技術展示了如何在 Vue 應用中使用不同的方法來創建動畫效果,無論是基於 CSS 類別、樣式綁定,還是通過 JavaScript 監視器。

Try it in the playground


2會員
70內容數
分享生活趣事~
留言0
查看全部
發表第一個留言支持創作者!
卡關的人生 的其他內容
Web Components 是一組網頁原生 API,允許開發者創建可重複使用的自訂元素。Vue 與 Web Components 是互補的技術,Vue 支援整合和創建自訂元素。
Vue 建議使用模板構建應用程式,但在需要 JavaScript 的全程式化功能時,渲染函數可派上用場。渲染函數通過 h() 函數創建 vnode,h 是 hyperscript 的簡寫,能生成 HTML 的 JavaScript。
Vue 渲染機制使用虛擬 DOM 將模板轉換為實際的 DOM 節點,並高效地更新這些節點。虛擬 DOM 是 UI 的內存表示,與真實 DOM 同步。渲染過程分為編譯、掛載和修補三個步驟。編譯將模板轉為渲染函數,掛載遍歷虛擬 DOM 樹並構建真實 DOM 樹,修補則比較新舊虛擬 DOM 樹並應用變更。
Vue 的反應性系統利用了 JavaScript 的 Proxy 和 getter/setter 機制,使得對物件屬性的變更能夠自動觸發視圖更新。這種無侵入性的設計使得狀態管理變得簡單且直觀,無需手動同步視圖。反應性的核心在於追蹤依賴項和觸發副作用。
Composition API 是 Vue 3 的一組 API,允許使用導入的函數編寫 Vue 組件,涵蓋反應性 API、生命週期鉤子和依賴注入。它主要在單文件組件的 <script setup> 語法中使用。
Vue 是一個靈活且可逐步採用的框架,適用於不同使用情境以平衡技術棧複雜度、開發者體驗和最終性能。Vue 可以作為獨立腳本文件使用,不需構建步驟,適合簡單前端邏輯。也可用來構建標準 Web 組件,嵌入到任何 HTML 頁面中。對於需要豐富互動性的應用,可構建單頁應用程式 (SPA)。
Web Components 是一組網頁原生 API,允許開發者創建可重複使用的自訂元素。Vue 與 Web Components 是互補的技術,Vue 支援整合和創建自訂元素。
Vue 建議使用模板構建應用程式,但在需要 JavaScript 的全程式化功能時,渲染函數可派上用場。渲染函數通過 h() 函數創建 vnode,h 是 hyperscript 的簡寫,能生成 HTML 的 JavaScript。
Vue 渲染機制使用虛擬 DOM 將模板轉換為實際的 DOM 節點,並高效地更新這些節點。虛擬 DOM 是 UI 的內存表示,與真實 DOM 同步。渲染過程分為編譯、掛載和修補三個步驟。編譯將模板轉為渲染函數,掛載遍歷虛擬 DOM 樹並構建真實 DOM 樹,修補則比較新舊虛擬 DOM 樹並應用變更。
Vue 的反應性系統利用了 JavaScript 的 Proxy 和 getter/setter 機制,使得對物件屬性的變更能夠自動觸發視圖更新。這種無侵入性的設計使得狀態管理變得簡單且直觀,無需手動同步視圖。反應性的核心在於追蹤依賴項和觸發副作用。
Composition API 是 Vue 3 的一組 API,允許使用導入的函數編寫 Vue 組件,涵蓋反應性 API、生命週期鉤子和依賴注入。它主要在單文件組件的 <script setup> 語法中使用。
Vue 是一個靈活且可逐步採用的框架,適用於不同使用情境以平衡技術棧複雜度、開發者體驗和最終性能。Vue 可以作為獨立腳本文件使用,不需構建步驟,適合簡單前端邏輯。也可用來構建標準 Web 組件,嵌入到任何 HTML 頁面中。對於需要豐富互動性的應用,可構建單頁應用程式 (SPA)。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
在這一章中,我們介紹了 CSS 的過渡效果和動畫效果。過渡效果使 CSS 屬性的變化更加平滑,而動畫效果則允許我們更精細地控制元素的多個屬性隨時間變化的過程。我們通過基本語法和示例展示了如何使用這些效果,並提供了一個綜合應用的實踐案例來幫助理解。這些技術可以讓你的網頁更具互動性和動態效果。
Thumbnail
在這篇文章中,我們將探討如何製作章節轉場動畫,讓您的作品更具吸引力。本文包含了準備素材、定義圖片、製作簡易動畫等步驟,適合初學者進行學習和操作。我們提供了必要的資源和範例,讓您能輕鬆上手。期待透過這篇教學,能讓您在創作中達到更高的境界!
Thumbnail
插畫和動畫之間有著密切的關係,但並不是說一定要先有插畫才有動畫。插畫通常是靜態的圖像,用來表達一個概念、故事或角色,而動畫則是將這些靜態圖像連續播放,創造出動態效果。 在很多情況下,動畫的製作確實會從插畫開始。插畫可以用來設計角色、場景和故事板,這些都是動畫製作的重要步驟。例如,漫畫或插畫書經
Thumbnail
除了 Luma DreamMachine 以外,如果想用文字或照片自動生成影片的話,還有其他選擇嗎?可以試試 Vidu AI 生成式影片服務,一起了解如何使用 Vidu 及進階技巧,輕鬆製作二次元或東方臉孔的 AI 影片!Vocus 網友專屬避免踩坑資訊在最後一段。
Thumbnail
Ae 小技巧:Motion Tile 連續圖 / 背景 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
我們最早就是在做動畫,從一般廣告開始,慢慢去擴展不同的類型,比如說遊戲、角色動畫、電視與電影的特效……等等,但是越做越專業的情況下,我們就想再去做一些延伸,像是虛擬攝影棚跟虛擬製作,我們找到這些工作項目的共通元素去發展,甚至到後面我們還去做互動設計、沉浸式多媒體展覽與現在時下最熱門的AI生成技術。
Thumbnail
Ae 小技巧:CC Bend It 彎曲 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
介紹Unreal Sequencer鏡頭工具,CG動畫的學習經驗,並提供相關教程,適合想學習Cinematic Designer的人。
Thumbnail
Ae 小技巧:Mask path 轉成形狀路徑 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:宣紙噪點+抽幀效果 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
在這一章中,我們介紹了 CSS 的過渡效果和動畫效果。過渡效果使 CSS 屬性的變化更加平滑,而動畫效果則允許我們更精細地控制元素的多個屬性隨時間變化的過程。我們通過基本語法和示例展示了如何使用這些效果,並提供了一個綜合應用的實踐案例來幫助理解。這些技術可以讓你的網頁更具互動性和動態效果。
Thumbnail
在這篇文章中,我們將探討如何製作章節轉場動畫,讓您的作品更具吸引力。本文包含了準備素材、定義圖片、製作簡易動畫等步驟,適合初學者進行學習和操作。我們提供了必要的資源和範例,讓您能輕鬆上手。期待透過這篇教學,能讓您在創作中達到更高的境界!
Thumbnail
插畫和動畫之間有著密切的關係,但並不是說一定要先有插畫才有動畫。插畫通常是靜態的圖像,用來表達一個概念、故事或角色,而動畫則是將這些靜態圖像連續播放,創造出動態效果。 在很多情況下,動畫的製作確實會從插畫開始。插畫可以用來設計角色、場景和故事板,這些都是動畫製作的重要步驟。例如,漫畫或插畫書經
Thumbnail
除了 Luma DreamMachine 以外,如果想用文字或照片自動生成影片的話,還有其他選擇嗎?可以試試 Vidu AI 生成式影片服務,一起了解如何使用 Vidu 及進階技巧,輕鬆製作二次元或東方臉孔的 AI 影片!Vocus 網友專屬避免踩坑資訊在最後一段。
Thumbnail
Ae 小技巧:Motion Tile 連續圖 / 背景 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
我們最早就是在做動畫,從一般廣告開始,慢慢去擴展不同的類型,比如說遊戲、角色動畫、電視與電影的特效……等等,但是越做越專業的情況下,我們就想再去做一些延伸,像是虛擬攝影棚跟虛擬製作,我們找到這些工作項目的共通元素去發展,甚至到後面我們還去做互動設計、沉浸式多媒體展覽與現在時下最熱門的AI生成技術。
Thumbnail
Ae 小技巧:CC Bend It 彎曲 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
介紹Unreal Sequencer鏡頭工具,CG動畫的學習經驗,並提供相關教程,適合想學習Cinematic Designer的人。
Thumbnail
Ae 小技巧:Mask path 轉成形狀路徑 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:宣紙噪點+抽幀效果 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。