首頁 >web前端 >js教程 >視圖過渡的簡介API

視圖過渡的簡介API

Lisa Kudrow
Lisa Kudrow原創
2025-02-08 12:15:10803瀏覽

An Introduction to the View Transitions API

View Transitions API:簡化網頁動畫的革新技術

View Transitions API 提供了一種更簡便的方法來實現網頁元素間的動畫效果,即使是在頁面加載之間也能流暢過渡。它是一種漸進增強技術,具有良好的兼容性。

傳統的 CSS 過渡和動畫在網頁特效方面取得了顯著成就,但並非所有動畫都易於實現。例如,對包含十張圖片和標題的列表進行交叉淡入淡出動畫,需要以下步驟:

  1. 保留舊的 DOM 元素;
  2. 創建新的 DOM 元素,並將其添加到頁面適當的位置;
  3. 淡出舊元素的同時淡入新元素;
  4. (可選)用新 DOM 元素替換舊元素。

而 View Transitions API 簡化了這一過程:

  1. API 捕獲當前頁面狀態的快照;
  2. 更新 DOM,添加或刪除必要的元素;
  3. API 捕獲新頁面狀態的快照;
  4. API 使用默認的淡入淡出效果或自定義 CSS 動畫在兩個狀態之間進行動畫過渡。

我們只需更新 DOM,無需額外複雜的步驟。只需幾行代碼,即可在支持 View Transitions API 的瀏覽器中實現類似幻燈片的精美動畫效果。

An Introduction to the View Transitions API

目前,該 API 處於實驗階段,但最新的基於 Chromium 的瀏覽器已經支持單頁面 DOM 動畫效果。 Chrome 115 及更高版本還支持頁面加載間的動畫效果,例如在典型的 WordPress 網站上。這使得使用更加簡便,無需 JavaScript 代碼。

需要注意的是,Mozilla 和 Apple 尚未公佈其在 Firefox 和 Safari 中實現該 API 的計劃。不支持 View Transitions API 的瀏覽器仍能正常工作,因此現在添加此效果是安全的。

新舊技術的對比

資深開發者可能會感到似曾相識。早在 1997 年發布的 Internet Explorer 4.0 就引入了元素和整頁過渡功能,並在 2000 年發布的 IE5.5 中進行了更新。我們可以使用 <meta> 標籤添加 PowerPoint 風格的各種過渡效果:

<code class="language-html"><meta content="progid:DXImageTransform.Microsoft.Iris(Motion='in', IrisStyle='circle')" http-equiv="Page-Enter">
<meta content="progid:DXImageTransform.Microsoft.Iris(Motion='out', IrisStyle='circle')" http-equiv="Page-Exit"></code>

然而,這種技術並未得到廣泛採用,因為它並非 Web 標準。

創建頁面內過渡效果

以下示例展示瞭如何在 Chrome 瀏覽器中使用 View Transitions API 創建簡單的淡入淡出效果:

(此處應嵌入 CodePen 示例 1 的鏈接和截圖)

HTML 代碼包含兩個 <article></article> 元素,分別用於顯示不同的內容塊:

(此處應嵌入 HTML 代碼片段)

switchArticle() 函數處理所有 DOM 更新,通過添加或刪除 hidden 屬性來顯示或隱藏每個 <article></article> 元素。頁面加載時,根據頁面 URL 的 location.hash 或第一個 <article></article> 元素確定活動的 <article></article> 元素:

(此處應嵌入 JavaScript 代碼片段)

事件處理程序函數監控所有頁麵點擊,並在用戶點擊帶有 #hash 的鏈接時調用 switchArticle()

(此處應嵌入 JavaScript 代碼片段)

通過將 switchArticle() 函數作為回調傳遞給 document.startViewTransition(),我們可以使用 View Transitions API:

(此處應嵌入 JavaScript 代碼片段)

document.startViewTransition() 會捕獲初始狀態的快照,運行 switchArticle(),捕獲新狀態的快照,並在兩者之間創建默認的半秒鐘淡入淡出效果。

CSS 選擇器 ::view-transition-old(root)::view-transition-new(root) 可用於分別設置舊狀態和新狀態的動畫效果:

(此處應嵌入 CSS 代碼片段)

(後續內容,包括更複雜的動畫、異步DOM 更新、Web Animations API 的使用、多頁面導航過渡、動畫禁用以及總結和常見問題解答,均需按照類似方式進行改寫,將原文中的代碼和圖片嵌入到相應位置,並用更簡潔明了的語言進行描述。)

以上是視圖過渡的簡介API的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn