CSS動畫:超越CSS過渡的動態效果
CSS動畫是CSS過渡的進階版,它支持無限循環、利用關鍵幀創建複雜效果,並可在動畫播放過程中暫停。本文將深入探討CSS動畫的方方面面,助您輕鬆掌握這項強大的網頁設計技術。
創建CSS動畫:關鍵幀與動畫屬性
要創建CSS動畫,首先需要定義一個@keyframes
規則,該規則指定動畫名稱並分組關鍵幀規則。然後,將動畫應用於目標元素。
CSS動畫可通過多種屬性進行控制,包括:animation-delay
(動畫延遲)、animation-duration
(動畫持續時間)、animation-name
(動畫名稱)、animation-timing-function
(動畫計時函數)、animation-iteration-count
(動畫迭代次數)、animation-direction
(動畫方向)、animation-play-state
(動畫播放狀態)和animation-fill-mode
(動畫填充模式)。
動畫控制:暫停與循環
使用animation-play-state
屬性可以暫停動畫。將animation-iteration-count
屬性設置為infinite
可以實現無限循環。
性能與可訪問性:謹慎使用動畫
雖然CSS動畫可以增強用戶體驗,但應謹慎使用,因為它可能存在可訪問性風險,例如:某些疾病患者可能會因動畫產生眩暈或噁心,而患有光敏性癲癇的人則可能因動畫引發癲癇發作。此外,動畫的性能也會受到動畫屬性的影響,某些屬性可能會觸發回流或重繪,從而導致低性能設備上的性能下降。
動畫與過渡的區別:關鍵差異
CSS動畫與其姊妹技術CSS過渡相比,存在一些關鍵區別:
- 優雅降級:動畫缺乏優雅降級機制,瀏覽器不支持時,動畫將失效,需要JavaScript作為替代方案。
- 循環:動畫可以重複,甚至無限重複;而過渡始終是有限的。
- 關鍵幀:動畫使用關鍵幀,能夠創建更複雜和細緻的效果。
- 暫停:動畫可以在播放週期中暫停。
瀏覽器兼容性:主流瀏覽器支持
所有主流瀏覽器的最新版本都支持CSS動畫。 Firefox 15及更早版本需要-moz-
前綴;而更高版本則不需要。 Internet Explorer 10和11以及所有版本的Microsoft Edge也都支持無前綴的動畫。
檢測動畫支持:JavaScript方法
可以通過多種方式檢測CSS動畫的支持情況。第一種方法是測試window
對象的CSSKeyframeRule
方法是否存在:
const hasAnimations = 'CSSKeyframeRule' in window;
如果瀏覽器支持@supports
規則和CSS.supports()
API,則可以使用以下方法:
const hasAnimations = CSS.supports('animation-duration: 2s');
創建第一個動畫:關鍵幀規則與動畫應用
首先,使用@keyframes
規則定義動畫。 @keyframes
規則有兩個作用:
- 設置動畫名稱
- 分組關鍵幀規則
例如,創建一個名為pulse
的動畫:
@keyframes pulse { from { transform: scale(0.5); opacity: .8; } to { transform: scale(1); opacity: 1; } }
然後,將動畫應用於元素:
.pulse { animation: pulse 500ms; }
動畫屬性詳解:細緻控制動畫效果
雖然使用animation
速記屬性更簡潔,但有時使用長格式屬性更清晰。以下是長格式動畫屬性:
屬性 | 描述 | 初始值 | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
animation-delay |
動畫執行前的等待時間 |
0s (立即執行) |
|||||||||||||||||||||||||||
animation-duration |
動畫週期持續時間 |
0s (無動畫) |
|||||||||||||||||||||||||||
animation-name |
|
none |
|||||||||||||||||||||||||||
animation-timing-function |
計算起始狀態和結束狀態之間值的計算方式 | ease |
|||||||||||||||||||||||||||
animation-iteration-count |
動畫重複次數 | 1 |
|||||||||||||||||||||||||||
animation-direction |
動畫是否反向播放 |
normal (不反向) |
|||||||||||||||||||||||||||
animation-play-state |
動畫是運行還是暫停 | running |
|||||||||||||||||||||||||||
animation-fill-mode |
指定動畫未運行時應用的屬性值 | none |
循環動畫:animation-iteration-count屬性
將animation-iteration-count
屬性設置為infinite
可以使動畫無限循環。
動畫方向:animation-direction屬性
animation-direction
屬性接受四個值:normal
、reverse
、alternate
和alternate-reverse
,用於控制動畫的播放方向。
百分比關鍵幀:創建更複雜的動畫序列
可以使用百分比關鍵幀創建更複雜的動畫序列。
動畫填充模式:animation-fill-mode屬性
animation-fill-mode
屬性控制動畫開始前和結束後的元素樣式。
暫停動畫:animation-play-state屬性
使用animation-play-state
屬性可以暫停和恢復動畫。
檢測動畫事件:animationstart、animationend和animationiteration事件
可以使用JavaScript監聽animationstart
、animationend
和animationiteration
事件。
性能優化:選擇合適的動畫屬性
某些屬性比其他屬性創建的動畫性能更好。避免動畫那些會觸發回流或重繪的屬性。
常見問題解答
本文最後還包含了關於CSS動畫的常見問題解答,涵蓋了CSS動畫與CSS過渡的區別、動畫速度控制、@keyframes
規則的作用、佈局動畫、反向播放動畫、animation-fill-mode
屬性、暫停動畫、無限循環動畫、SVG元素動畫以及animation-delay
和animation-end-delay
的區別等方面。
通過學習本文,您將能夠創建出更精細、更複雜的CSS動畫效果,提升網頁的交互性和用戶體驗。 記住,在使用動畫時,始終要優先考慮性能和可訪問性。
以上是如何開始CSS動畫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在這篇文章中,布萊克·莫里(Blackle Mori)向您展示了一些駭客,同時試圖推動同位HTML支持的極限。如果您敢於使用這些,以免您也被標記為CSS罪犯。

具有CSS的自定義光標很棒,但是我們可以將JavaScript提升到一個新的水平。使用JavaScript,我們可以在光標狀態之間過渡,將動態文本放置在光標中,應用複雜的動畫並應用過濾器。

互動CSS動畫和元素相互啟動的元素在2025年似乎更合理。雖然不需要在CSS中實施乒乓球,但CSS的靈活性和力量的增加,可以懷疑Lee&Aver Lee有一天會成為一種

有關利用CSS背景濾波器屬性來樣式用戶界面的提示和技巧。您將學習如何在多個元素之間進行背景過濾器,並將它們與其他CSS圖形效果集成在一起以創建精心設計的設計。

好吧,事實證明,SVG的內置動畫功能從未按計劃進行棄用。當然,CSS和JavaScript具有承載負載的能力,但是很高興知道Smil並沒有像以前那樣死在水中

是的,讓#039;跳上文字包裝:Safari Technology Preview In Pretty Landing!但是請注意,它與在鉻瀏覽器中的工作方式不同。

此CSS-tricks更新了,重點介紹了年鑑,最近的播客出現,新的CSS計數器指南以及增加了幾位新作者,這些新作者貢獻了有價值的內容。

在大多數情況下,人們展示了@Apply的@Apply功能,其中包括Tailwind的單個property實用程序之一(會改變單個CSS聲明)。當以這種方式展示時,@Apply聽起來似乎很有希望。如此明顯


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3漢化版
中文版,非常好用

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具