目錄
鑰匙要點
考慮此基本@keyframes規則:
>
>使CSS動畫響應響應涉及相對單位喜歡百分比或視口單元,而不是像像素這樣的絕對單位。這樣可以確保動畫尺寸正確,而不管屏幕尺寸如何。您還可以使用媒體查詢根據特定的屏幕尺寸或設備類型調整動畫。
>我可以將CSS動畫與svg?
>我可以使用CSS?
對背景圖像屬性進行動畫動畫,而不可以CSS來動畫。但是,您可以使用不透明度屬性在多個背景圖像之間逐漸消失來實現類似的效果。
首頁 web前端 js教程 如何使用CSS創建整頁動畫

如何使用CSS創建整頁動畫

Feb 25, 2025 pm 05:26 PM

如何使用CSS創建整頁動畫

鑰匙要點

    可以使用CSS 3D和2D變換和CSS動畫創建整頁動畫,從而為Web內容提供了更具性能和靈活性的替代方案。可以使用CSS動畫來轉換HTML元素以實現這些效果。 > 在應用CSS轉換為元素時,為了確保一致的結果,無論其內容的大小如何,可以將身體元素的大小固定到瀏覽器窗口的大小,並且可以將內容固定在包裝器中。這種方法還可以掩蓋複雜內容可能發生的任何漸進式渲染,重新匯總或資源加載。
  • 。 在瀏覽體驗期間,可以在戰略時期設置
  • 動畫,以使內容過渡到頁面加載並在用戶單擊鏈接時看不見的視圖。設置動畫將頁面內容轉換為視圖的最佳位置是元素頂部。 AnimationEnd事件可用於檢測動畫何時完成,然後觸發導航事件。
  • Internet Explorer(Internet Explorer 10支持CSS 3D和2D變換和CSS動畫)等現代瀏覽器。通過利用GPU的功能並與常規JavaScript進行異步運行,這些技術為Web內容提供了更具性能和靈活的替代方案。
  • >我已經討論過如何使用CSS 3D變換以及以前文章中的CSS動畫和過渡。 在本文中,我想通過描述可以在導航過程中使用的“全頁動畫”的概念來為這些技術介紹一個更“非常規”的用例,以增加瀏覽的流動性和連續性。我們的目標是獲得無縫的瀏覽體驗,當用戶訪問頁面並在單擊鏈接或執行相關操作時,內容順暢地顯示出視圖。
  • 這些效果可以通過使用CSS動畫轉換HTML 元素來實現。但是,此用例提出了一些我們認為值得討論的考慮因素,例如佈局和尺寸對轉換的效果,以及如何適當的時間頁導航,以便它們與我們的動畫正確融合。 >
  • >本文中的代碼示例使用IE10 Release Preview支持的未解決的CSS標記;其他瀏覽器可能需要CSS動畫的供應商前綴,而CSS會轉換所使用的屬性。
轉換頁面的整個內容

CSS變換是在HTML DOM元素的風格屬性上定義的。例如,沿其z軸旋轉45度的元素的標記看起來像這樣:>

#element {
    transform: rotateZ(45deg);
}
登入後複製
登入後複製
登入後複製

>將轉換附加到HTML文檔的

元素上的工作方式完全相同。因此,為了聲明性地添加相同的效果,您可以執行相同的效果。

body {
    transform: rotateZ(45deg);
}
登入後複製
登入後複製
讓我們看一下將轉換應用於身體元素時的頁面前後拍攝的鏡頭:

如何使用CSS創建整頁動畫應用旋轉(45DEG)轉換為文檔的身體元素。 對於三維變換,CSS轉換規範定義了可以在我們轉換的元素的母體上指定的透視屬性。在轉換內容的元素時,必須將其應用於位於DOM層次結構中上方的元素。這樣做很簡單:

在元素上將其與旋轉(45度)變換結合起來,會產生以下結果:>

html {
    perspective: 500px;
}
登入後複製

將旋轉(45DEG)轉換為的透視圖:。

>我們可以在人體元素上操縱轉化 - 原始特性以獲得有趣的結果。讓我們看一下幾個示例: 如何使用CSS創建整頁動畫 上面的標記將沿x旋轉作為人體元素設置,同時使用轉化原孔將旋轉的起源轉移到元素的底部。有效地,這將文檔的內容“進入”了這樣的屏幕:

body {
    transform-origin: 50% 100%;
    transform: rotateX(45deg);
}
登入後複製

>

>我們還可以在文檔的根部元素上操縱透視 - 原始屬性,以實現離軸投影效應。將的樣式更改為:

> 如何使用CSS創建整頁動畫我們的頁面現在看起來像這樣:

通過使用CSS變換,我們可以輕鬆地操縱整個頁面內容的視覺外觀。由於通常仍然適用了通常的佈局和尺寸規則,因此人體元素(尤其是使用百分比值或依賴轉換 - 原始屬性的元素)可能會導致不同的視覺效果,這取決於我們頁面的內容。回想我們以前的rotatex(45DEG)示例,其中轉換 - 原始素將其設置為50%100%。
html {
    perspective: 500px;
    perspective-origin: 90% 50%;
}
登入後複製
在下面,您可以在應用轉換之前和之後查看結果。

請注意,內容如何實際上並不在窗口底部,而是在視口外的某個時候。這是CSS變換的預期行為:

正常佈置,然後沿屏幕上某個地方的底部邊緣旋轉。您還會注意到,內容的實際腳印已經擴展(查看“後圖”圖片中的滾動條),以適應變換的內容(我們正在使用透視圖投影的事實使此效果更加多發音)。

>那麼,在將轉換應用於我們的身體元素時,我們如何處理任意尺寸的內容?自定義調整所有內容,以確保身體的大小不會擴大超過一定量可能是不現實的。取而代之的是,我們可以使用簡單的HTML/CSS模式,該模式使我們能夠將身體元素的大小固定到瀏覽器窗口的大小,並在包裝​​器

中附加內容。以下標記實現了:
#element {
    transform: rotateZ(45deg);
}
登入後複製
登入後複製
登入後複製

>下面的插圖顯示了頁面垂直滾動時發生的情況,然後我們將旋轉(45DEG)直接轉換為文檔的

元素(左)(左)和使用包裝模式(右): >

如何使用CSS創建整頁動畫

由於離軸投影,轉換的直接應用導致視覺結果偏斜(因為我們不再查看身體元素的“中心”)。使用包裝器圖案確保元素的觀點 - 原始屬性(默認為50%50%)將始終以與元素有關,從而使我們具有令人愉悅的視覺效果。

>通過利用上述模式並設置CSS隨時使用百分比值轉換,我們可以以一致的方式影響我們的

元素,而不論其內容的大小如何。 > 從變換到動畫

>整理了將CSS轉換到元素的複雜性後,CSS動畫是下一步。通過遵循上述原則,我們可以創建動畫,以有趣的方式將我們的Web內容視為視圖(或從視圖中刪除)。

考慮此基本@keyframes規則:

應用於元素時,此動畫將導致其左側旋轉。當應用於使用我們的包裝器模式的元素時,視覺結果會更有趣。該文檔實際上將從瀏覽器窗口可見區域的外部旋轉,然後旋轉到完整視圖:>

body {
    transform: rotateZ(45deg);
}
登入後複製
登入後複製
同樣,我們可以撰寫動畫,這些動畫會流暢地從視圖中刪除我們的Web內容。例如,如果我們希望我們的頁面在旋轉時消失到遠處,我們可以使用類似的東西:

>

#element {
    transform: rotateZ(45deg);
}
登入後複製
登入後複製
登入後複製

視覺結果為:

如何使用CSS創建整頁動畫

>由於我們可以利用CSS動畫的全部功能來影響我們的整個Web內容,因此我們在生成這些頁面效果方面具有很大的靈活性(而且我們當然不限於僅使用CSS變換)。但是,一旦我們構成了要應用於內容的效果,我們如何使它們在頁面導航過程中觸發?

將動畫附加到

>

>我們的目標是在瀏覽器體驗期間在戰略時期使用觸發動畫,以使內容過渡的外觀在頁面加載並在用戶單擊鏈接上時的視圖時將其視為視圖。

>在身體元素中添加動畫的第一個直觀位置是Onload JavaScript事件。然而,事實證明,當on load火災實際上為時已晚時添加動畫。當我們頁面中的整個內容完成加載時(包括任何圖像或其他帶寬密集型資源),此事件實際上會觸發。將動畫附加到帶寬密集的頁面上的onload將導致我們的內容顯示“正常”,然後動畫觸發並將內容重新包含到視圖中。不完全是我們目標的效果。

> 或者,我們可以利用當瀏覽器完成內容的DOM結構時觸發的Domcontentloaded事件(但有可能在資源完成加載之前)。 IE測試驅動器domcontentloaded演示說明了這兩個事件之間的區別。但是,在具有復雜的Web內容的情況下,現代瀏覽器可能會選擇執行“漸進式”渲染,並在加載整個DOM樹之前顯示頁面。在這些情況下,視覺結果將類似於Onload方案。

>設置一個動畫的最佳位置,該動畫過渡我們的頁面內容是元素的頂部。這樣可以確保動畫隨著內容的渲染而開始正確(並且內容的啟動位置將是我們所選動畫的關鍵幀的開始位置)。這種方法的一個令人愉悅的副作用是,動畫實際上可以掩蓋可能與復雜內容一起發生的任何進行性渲染,重新分析或資源加載。 >

>設置動畫,使我們的內容過渡出來也很有趣。人們可以假設我們可以將onclick處理程序附加到我們內容中所有感興趣的元素上(例如所有標籤),並且只需在回調函數中設置相關的動畫屬性(Animation-name,Animation-Duration等) 。但是,如果我們實際上沒有延遲導航的發生,我們將不會看到我們的預期流體過渡。

這是利用CSS動畫規範中描述的動畫事件的好機會。特別是,我們可以使用AnimationEnd事件來檢測動畫何時完成,然後觸發導航(例如,通過設置window.location.href)。因此,我們的onclick將觸發“刪除從視圖”動畫,並在

上註冊一個動畫結構的處理程序,以確保發生導航事件。

>實時演示可用

>我們創建了一個演示和教程,以使CSS變換和動畫充滿活力,以提供深度和示例,超出了我們在此處顯示的內容。該教程本身在頁面導航期間使用了全頁動畫,該動畫在Windows 8上的Internet Explorer 10以及Chrome和Firefox的最新版本中使用。

>簡單地享受頁面到頁面的動畫,使用“繼續……”鏈接在每個頁面的右下角中瀏覽教程的頁面。 >

在教程末尾,我們提供了一些有關如何將這些動畫與您自己的Web內容合併的其他指南和示例代碼。

>

>將其包裹起來

CSS變換和CSS動畫是兩個強大的功能集,可實現更豐富,更身臨其境的網絡體驗。通過少量努力,您可以創建網頁(甚至是靜態的頁面),以提供流暢且幾乎類似應用的導航體驗。 如果您喜歡閱讀這篇文章,那麼您會喜歡學習;從大師那裡學習新鮮技能和技術的地方。成員可以立即訪問SitePoint的所有電子書和互動在線課程,例如實用的CSS。

全頁CSS動畫上經常詢問問題

> CSS動畫和JavaScript動畫之間的關鍵區別是什麼?

CSS動畫和JavaScript動畫具有與動畫Web元素的相同目的,但它們具有一些關鍵差異。 CSS動畫更容易實現,尤其是對於簡單的動畫。當瀏覽器的渲染引擎處理時,它們也更加友好。但是,與JavaScript動畫相比,CSS動畫的控制力和靈活性有限。另一方面,JavaScript動畫提供了更多的控制和靈活性,可以進行複雜的動畫。它們可以實時暫停,逆轉或操縱,也可以響應用戶互動。

>

>我如何使我的CSS動畫響應?

>使CSS動畫響應響應涉及相對單位喜歡百分比或視口單元,而不是像像素這樣的絕對單位。這樣可以確保動畫尺寸正確,而不管屏幕尺寸如何。您還可以使用媒體查詢根據特定的屏幕尺寸或設備類型調整動畫。

>

>我可以將CSS動畫與svg?

一起使用,是的,CSS動畫可以與SVG一起使用(可擴展向量圖形)。 SVG擁有自己的CSS屬性集,可以動畫,例如填充,中風和轉換。與對常規的HTML元素進行動畫相比,這允許更複雜,有趣的動畫。

>

為什麼我的CSS動畫在某些瀏覽器中不起作用?

>並非所有瀏覽器都支持所有CSS動畫屬性。例如,Internet Explorer不支持動畫觸時屬性。為了確保跨瀏覽器兼容性,您可以在動畫屬性之前使用-webkit-,-moz-,-o-和-ms-等供應商前綴。您還可以使用諸如AutopRefixer之類的工具自動添加這些前綴。

>

>如何優化我的CSS動畫的性能?

>

>

以優化CSS動畫的性能,您可以限制動畫屬性,尤其是觸發佈局的動畫屬性會更改寬度,高度和邊距。而是使用僅觸發複合變化(例如變換和不透明度)的屬性。您還可以使用Will-Change屬性將可能是動畫化的屬性通知瀏覽器。

>

>我可以使用CSS?

用CSS動畫。這是因為它在其值之間沒有中間狀態。但是,您可以通過對不透明度和可見性屬性進行動畫效果來實現類似的效果。

如何使用CSS創建一個循環的動畫?

您可以使用動畫在CSS中創建一個循環動畫 - 列表計數屬性。通過將其價值設置為無限,動畫將無限期重複。

我可以控制CSS動畫的速度嗎?財產。此屬性定義了動畫完成一個週期的時間長度。

>

>我如何暫停CSS動畫?

您可以使用Animation-Play-State屬性暫停CSS動畫。通過將其值設置為暫停,動畫將停止運行。

>我可以使用CSS?

對背景圖像屬性進行動畫動畫,而不可以CSS來動畫。但是,您可以使用不透明度屬性在多個背景圖像之間逐漸消失來實現類似的效果。

以上是如何使用CSS創建整頁動畫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1658
14
CakePHP 教程
1415
52
Laravel 教程
1309
25
PHP教程
1257
29
C# 教程
1231
24
神秘的JavaScript:它的作用以及為什麼重要 神秘的JavaScript:它的作用以及為什麼重要 Apr 09, 2025 am 12:07 AM

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

JavaScript的演變:當前的趨勢和未來前景 JavaScript的演變:當前的趨勢和未來前景 Apr 10, 2025 am 09:33 AM

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript引擎:比較實施 JavaScript引擎:比較實施 Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript:探索網絡語言的多功能性 JavaScript:探索網絡語言的多功能性 Apr 11, 2025 am 12:01 AM

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

如何使用Next.js(前端集成)構建多租戶SaaS應用程序 如何使用Next.js(前端集成)構建多租戶SaaS應用程序 Apr 11, 2025 am 08:22 AM

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

從C/C到JavaScript:所有工作方式 從C/C到JavaScript:所有工作方式 Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

使用Next.js(後端集成)構建多租戶SaaS應用程序 使用Next.js(後端集成)構建多租戶SaaS應用程序 Apr 11, 2025 am 08:23 AM

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

See all articles