如何使用CSS創建整頁動畫
鑰匙要點
-
可以使用CSS 3D和2D變換和CSS動畫創建整頁動畫,從而為Web內容提供了更具性能和靈活性的替代方案。可以使用CSS動畫來轉換HTML元素以實現這些效果。
- 。 在瀏覽體驗期間,可以在戰略時期設置 動畫,以使內容過渡到頁面加載並在用戶單擊鏈接時看不見的視圖。設置動畫將頁面內容轉換為視圖的最佳位置是元素頂部。 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度的元素的標記看起來像這樣: >將轉換附加到HTML文檔的#element {
transform: rotateZ(45deg);
}
body { transform: rotateZ(45deg); }
應用旋轉(45DEG)轉換為文檔的身體元素。
對於三維變換,CSS轉換規範定義了可以在我們轉換的元素的母體上指定的透視屬性。在轉換內容的元素時,必須將其應用於位於DOM層次結構中上方的元素。這樣做很簡單:
html { perspective: 500px; }
將旋轉(45DEG)轉換為的透視圖:。
>我們可以在人體元素上操縱轉化 - 原始特性以獲得有趣的結果。讓我們看一下幾個示例:
上面的標記將沿x旋轉作為人體元素設置,同時使用轉化原孔將旋轉的起源轉移到元素的底部。有效地,這將文檔的內容“進入”了這樣的屏幕:
body { transform-origin: 50% 100%; transform: rotateX(45deg); }
>
>我們還可以在文檔的根部元素上操縱透視 - 原始屬性,以實現離軸投影效應。將的樣式更改為:>
我們的頁面現在看起來像這樣:
html { perspective: 500px; perspective-origin: 90% 50%; }
請注意,內容如何實際上並不在窗口底部,而是在視口外的某個時候。這是CSS變換的預期行為:
正常佈置,然後沿屏幕上某個地方的底部邊緣旋轉。您還會注意到,內容的實際腳印已經擴展(查看“後圖”圖片中的滾動條),以適應變換的內容(我們正在使用透視圖投影的事實使此效果更加多發音)。>那麼,在將轉換應用於我們的身體元素時,我們如何處理任意尺寸的內容?自定義調整所有內容,以確保身體的大小不會擴大超過一定量可能是不現實的。取而代之的是,我們可以使用簡單的HTML/CSS模式,該模式使我們能夠將身體元素的大小固定到瀏覽器窗口的大小,並在包裝器
#element { transform: rotateZ(45deg); }
>下面的插圖顯示了頁面垂直滾動時發生的情況,然後我們將旋轉(45DEG)直接轉換為文檔的
元素(左)(左)和使用包裝模式(右): >
>通過利用上述模式並設置CSS隨時使用百分比值轉換,我們可以以一致的方式影響我們的
元素,而不論其內容的大小如何。>整理了將CSS轉換到元素的複雜性後,CSS動畫是下一步。通過遵循上述原則,我們可以創建動畫,以有趣的方式將我們的Web內容視為視圖(或從視圖中刪除)。
考慮此基本@keyframes規則:
應用於元素時,此動畫將導致其左側旋轉。當應用於使用我們的包裝器模式的元素時,視覺結果會更有趣。該文檔實際上將從瀏覽器窗口可見區域的外部旋轉,然後旋轉到完整視圖:
body { transform: rotateZ(45deg); }
>
#element { transform: rotateZ(45deg); }
視覺結果為:
>由於我們可以利用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的最新版本中使用。
>簡單地享受頁面到頁面的動畫,使用“繼續……”鏈接在每個頁面的右下角中瀏覽教程的頁面。
>
>將其包裹起來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動畫?
您可以使用Animation-Play-State屬性暫停CSS動畫。通過將其值設置為暫停,動畫將停止運行。 >我可以使用CSS? 對背景圖像屬性進行動畫動畫,而不可以CSS來動畫。但是,您可以使用不透明度屬性在多個背景圖像之間逐漸消失來實現類似的效果。
以上是如何使用CSS創建整頁動畫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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