偷偷告訴你,動效真的不難!
Vue 的過渡類別是我的小秘技,簡單又實用!
今天帶你輕鬆學會,讓每個進場和離場的效果都那麼順滑~
在網站開發中,使用者無法看到後端的程式碼,但能夠瞬間捕捉到網站的外觀與動效設計。
好的設計能夠快速吸引使用者注意,並提升整體體驗。
作為一個喜歡逛網拍的女生,我深有感觸。
如果網站介面不夠直覺、操作繁瑣,我可能會直接關閉頁面。因此,直接不買了!(省起來)
所以直覺且流暢的動效設計對於網站成功非常重要。
網頁動效設計可以分為三個相互關聯且循序漸進的階段:初始化與加載(開始)、瀏覽與互動(過程)、結尾與退出(結束)。這三個階段共同構成了完整的使用者體驗:
當頁面加載時,使用簡單的視覺提示讓使用者知道頁面正在準備中,這樣可以有效減少等待時的煩躁感。
加載動效應該保持簡單,不搶眼,但要提供足夠的回饋。
此外,在初始化過程中容易出現閃白畫面,因此要特別注意過渡階段的處理,避免空窗期。
在頁面加載完成後,利用過渡動效可以讓使用者順暢地進入主內容區域,避免突然的視覺跳轉。
這種動效能讓頁面切換更加自然、流暢,提升使用者的體驗。
動效名稱 | 描述 | 應用示例 |
---|---|---|
導航與滾動效果 | 當使用者滾動頁面時,可以逐步展示重要內容,強化互動感。 | 滾動到特定區域時,文字或圖片淡入效果。 |
核心動效 | 為頁面中關鍵內容設計動效,增強使用者的注意力。 | 品牌標識的動效展示、標題的逐字顯示。 |
持續互動動效 | 持續顯示的元素可以設計循環動效,保持頁面活力。 | 背景的微動效果、循環滾動的文本。 |
互動反饋效果 | 使用者操作後即時提供反饋感 | 按鈕點擊後的縮放、顏色變化,表單提交的提示動效。 |
微交互效果 | 在不打擾使用者的情況下,增添輕微動效,提升層次感。 | 懸停時的陰影擴展、圖片的輕微浮動。 |
游標自定義動效 | 自定義游標效果,增強互動性。 | 游標懸停時的形狀變化、附加的拖尾效果。 |
點擊觸發效果 | 點擊元素後觸發動效,讓操作更直觀。 | 點擊按鈕後的滑動效果、隱藏內容展開動效。 |
這裡展示了一個具有「緊張回饋」的按鈕設計,這種按鈕反應快速,讓使用者能夠感受到互動的即時性。
<script lang="ts" setup></script>
<template>
<div class="grid w-full grid-cols-[repeat(auto-fit,_minmax(400px,_1fr))]">
<transition name="fade">
<div
class="grid h-screen items-center justify-center bg-[var(--bg-color)]"
:style="{ '--bg-color': '#f1c40f' }"
>
<button
class="btn-jittery text-8 font-mono bg-transparent
text-white
border-3 border-solid border-white rounded-full px-8 py-3
outline-none cursor-pointer tracking-[2px]
animate-[jittery_4s_infinite] hover:animate-[heartbeat_0.2s_infinite]
"
>
Click Me!
</button>
</div>
</transition>
</div>
</template>
<style>
/* Vue Transition Styles */
.fade-enter-active,
.fade-leave-active {
transition: all 0.2s ease-in-out;
}
.fade-enter-from,
.fade-leave-to {
opacity: 0;
}
@keyframes jittery {
0%, 50% { transform: scale(1); }
10% { transform: scale(0.9); }
15% { transform: scale(1.15); }
20% { transform: scale(1.15) rotate(-5deg); }
25% { transform: scale(1.15) rotate(5deg); }
30% { transform: scale(1.15) rotate(-3deg); }
35% { transform: scale(1.15) rotate(2deg); }
40% { transform: scale(1.15) rotate(0); }
}
@keyframes heartbeat {
50% {
transform: scale(1.1);
}
}
</style>
transition
過渡樣式效果.fade-enter-active,
.fade-leave-active {
transition: all 0.2s ease-in-out;
}
.fade-enter-from,
.fade-leave-to {
opacity: 0;
}
我們利用<transition name="fade">
來實現了這兩種效果
fade-enter-active
和 fade-enter-from
。fade-leave-active
和 fade-leave-to
樣式類別。@keyframes
的設計與應用按鈕的動畫效果
按鈕的主要動畫效果透過 @keyframes jittery
與 @keyframes heartbeat
來實現,這兩個動畫增強了使用者的互動體驗:
@keyframes jittery {
0%, 50% { transform: scale(1); }
10% { transform: scale(0.9); }
15% { transform: scale(1.15); }
20% { transform: scale(1.15) rotate(-5deg); }
25% { transform: scale(1.15) rotate(5deg); }
30% { transform: scale(1.15) rotate(-3deg); }
35% { transform: scale(1.15) rotate(2deg); }
40% { transform: scale(1.15) rotate(0); }
}
@keyframes jittery
定義了緊張的抖動效果:
0%, 50%
:保持正常大小,沒有旋轉。10%
:按鈕縮小至 0.9 倍,營造出按鈕按下的瞬間。15%-40%
:按鈕逐漸放大到 1.15 倍並伴隨著小幅度的左右旋轉,模擬緊張狀態下的快速晃動。@keyframes heartbeat {
50% {
transform: scale(1.1);
}
}
@keyframes heartbeat
定義了心跳動畫:
50%
:按鈕稍微放大 1.1 倍,然後回到原狀。<button
class="btn-jittery text-8 font-mono bg-transparent
text-white
border-3 border-solid border-white rounded-full px-8 py-3
outline-none cursor-pointer tracking-[2px]
animate-[jittery_4s_infinite] hover:animate-[heartbeat_0.2s_infinite]"
>
Click Me!
</button>
animate-[jittery_4s_infinite]
:讓按鈕執行 jittery
動畫,持續 4 秒,並且無限循環。hover:animate-[heartbeat_0.2s_infinite]
:當滑鼠懸停時,動畫切換為 heartbeat
,持續 0.2 秒且無限循環,為使用者提供即時反饋感。動效真的不難,只要輕鬆玩一玩,就能讓網站充滿樂趣!
讓我們一起享受互動設計的快感吧! ⸜( •ᴗ• )⸝