CSS 動畫:讓網頁動起來

你好啊,未來的網頁魔法師們!今天,我們要深入 CSS 動畫的神奇世界。在這個教學結束時,你將能夠讓元素在你的網頁上像數字化的弗雷德·阿斯泰爾一樣跳起舞來。所以,穿好你的虛擬舞鞋,我們來開始吧!

CSS - Animation

什麼是 CSS 動畫?

CSS 動畫就像給你的網頁上的靜態元素賦予生命。想像一下,如果你能讓按鈕在用戶悬停時脈動,或者在頁面加載時讓標誌旋轉。這就是 CSS 動畫的力量!它讓你能在給定時間內改變 CSS 屬性值,創造出移動和視覺興趣,而不需要複雜的 JavaScript 或 Flash。

@keyframes 規則

CSS 動畫的核心是 @keyframes 規則。這裡是你定義動畫階段的地方。

@keyframes bounce {
0% { transform: translateY(0); }
50% { transform: translateY(-20px); }
100% { transform: translateY(0); }
}

在這個例子中,我們創建了一個名為 "bounce" 的動畫。在 0%(開始時),元素處於原始位置。在 50%(動畫的中途),它向上移動 20 像素。在 100%(結束時),它回到原始位置。

動畫延遲屬性

有時候,你希望你的動畫在開始前等待。這就是 animation-delay 屬性派上用場的地方。

.delayed-bounce {
animation-name: bounce;
animation-duration: 1s;
animation-delay: 2s;
}

這段 CSS 將把 "bounce" 動畫應用於任何具有 "delayed-bounce" 類的元素。動畫將持續 1 秒,但它會在頁面加載後等待 2 秒才開始。

設置動畫迭代次數

默認情況下,動畫會運行一次然後停止。但如果你希望你的動畫持續運行,就像永不停歇的兔子一樣,那麼 animation-iteration-count 就派上用場了。

.infinite-bounce {
animation-name: bounce;
animation-duration: 1s;
animation-iteration-count: infinite;
}

現在我們的彈跳元素將永遠繼續彈跳,或者直到用戶關閉頁面(哪個先發生就結束)!

動畫方向屬性

有時候,你可能希望你的動畫反方向運行,或者在前後方向之間交替。animation-direction 屬性讓你可以做到這一點。

.alternate-bounce {
animation-name: bounce;
animation-duration: 1s;
animation-iteration-count: infinite;
animation-direction: alternate;
}

這會讓我們的元素像永恆運動機器一樣不斷地上上下下彈跳(如果我們能夠利用這個為乾淨能源,那該多好)!

動畫時間函數

animation-timing-function 屬性讓你可以控制動畫的速度。這就像是你自己的數字樂團的指揮!

.ease-in-out-bounce {
animation-name: bounce;
animation-duration: 1s;
animation-timing-function: ease-in-out;
}

這會讓我們的彈跳動畫在開始時慢慢加速,在中间時加快,然後在結束時減速,給它一種更自然、更有彈性的感覺。

設置動畫填充模式

animation-fill-mode 屬性決定了元素在動畫之前和之後應該看起來如何。

.fill-mode-bounce {
animation-name: bounce;
animation-duration: 1s;
animation-fill-mode: forwards;
}

使用 forwards 時,元素將保留最後一個關鍵幀的樣式,而不是彈回原始狀態。

動畫簡寫屬性

如果你覺得這些屬性讓人眼花繚亂,別擔心!CSS 提供了一個簡寫屬性,用於一次性設置所有動畫屬性:

.shorthand-bounce {
animation: bounce 1s ease-in-out 2s infinite alternate forwards;
}

這一行代碼設置了動畫名稱、持續時間、時間函數、延遲、迭代次數、方向和填充模式。這就像是 CSS 動畫的瑞士軍刀!

CSS 動畫屬性列表

這裡是一個我們討論過的所有 CSS 動畫屬性的便捷表格:

屬性 描述
animation-name 指定 @keyframes 動畫的名稱
animation-duration 指定動畫完成一次循環所需的時間
animation-timing-function 指定動畫的速度曲線
animation-delay 指定動畫開始的延遲時間
animation-iteration-count 指定動畫應播放的次數
animation-direction 指定動畫是否應在反向循環中播放
animation-fill-mode 指定動畫執行時間之外應應用的值
animation 簡寫屬性,用於一次性設置所有動畫屬性

好了,各位!現在你已經掌握了使用 CSS 動畫讓你的網頁生動起來的知識。記住,能力越強,責任越大 - 使用這些動畫來增強用戶體驗,而不是分散他們的注意力。

隨著你練習,你會發現 CSS 動畫就像烹飪一樣 - 準備正確的配方需要時間。但一旦你做到了,你就能提供美味的、動畫化的網頁體驗,讓你的用戶想要更多!

現在去創作吧,我的數字皮克斯學徒們。網絡是你的畫布,CSS是你的畫筆。祝你動畫愉快!

Credits: Image by storyset