# 科技新知

滾動式動畫:簡介

作者:Oliver Xiong

日期:2024-02-15T00:00:00.000Z

| 前言

2023 Google I/O 中,CSS推出了眾多令人振奮的新特性和功能,例如:容器查詢 (Container queries)、樣式查詢 (Style queries)、:has() 選擇器、color-mix() 函數、巢狀結構 (Nesting)、三角函數、滾動式動畫 (Scroll-driven animations) 等功能。

其中,最令我感到驚奇的莫過於就是「滾動式動畫」了,這使得以往都需要使用到 JavaScript 監聽滾動的互動,往後只需要純 CSS 就可以實現同樣的互動效果了,雖然目前因兼容性問題還無法實際導入項目當中,但我們還是可以先來了解一下這個新功能。


| 簡介

‧ 傳統 CSS 動畫

在傳統 CSS 中,我們會透過 @keyframes 來建立動畫,並使用 animation-name 屬性將此功能連結至元素,同時設定 animation-duration 來決定動畫的時長,此外,也還可以 animation-timing-functionanimation-delayanimation-iteration-countanimation-* 等屬性來為動畫做更詳細的設定,這些屬性都可以在 animation 簡寫中合併使用。

// 以下動畫隨著時間,放大 X 軸上的元素
@keyframes scale-up {
 from {
  transform: scaleX(0);
 }
 to {
  transform: scaleX(1);
 }
}

#progress {
 animation: scale-up 2.5s linear forwards;
}

‧ 滾動式動畫

滾動式動畫是指當用戶滾動頁面時,會觸發特定的動畫效果,例如元素在滾動過程中的移動、縮放、旋轉等效果,然而動畫的執行過程將改由頁面滾動來控制,動畫只會隨著頁面滾動而變化,時間不再起作用

滾動式動畫 Scroll-driven Animations

滾動式動畫 Scroll-driven Animations


| 技術實現

在預設情況下,CSS 動畫的時間軸是依照文件時間軸 (document timeline) 執行的,也就是在網頁載入時從 0 開始計算,並隨著時間流逝而開始執行。

在 Chrome 115 版本中,正式支援了 CSS animation-timeline,同時也新增了兩種新的動畫時間軸(滾動進度時間軸&查看進度時間軸),使得以往需要透過 JavaScript 監聽滾動的互動幾乎都可以使用純 CSS 實現了。

👉 查看瀏覽器支援度


本文轉載自筆者的 Medium 文章,更詳細內容可點及連結前往查看。

更多資訊公告