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內容視為視圖(或從視圖中刪除)。
應用於元素時,此動畫將導致其左側旋轉。當應用於使用我們的包裝器模式的元素時,視覺結果會更有趣。該文檔實際上將從瀏覽器窗口可見區域的外部旋轉,然後旋轉到完整視圖:
body { transform: rotateZ(45deg); }同樣,我們可以撰寫動畫,這些動畫會流暢地從視圖中刪除我們的Web內容。例如,如果我們希望我們的頁面在旋轉時消失到遠處,我們可以使用類似的東西:
>
#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變換和CSS動畫是兩個強大的功能集,可實現更豐富,更身臨其境的網絡體驗。通過少量努力,您可以創建網頁(甚至是靜態的頁面),以提供流暢且幾乎類似應用的導航體驗。 如果您喜歡閱讀這篇文章,那麼您會喜歡學習;從大師那裡學習新鮮技能和技術的地方。成員可以立即訪問SitePoint的所有電子書和互動在線課程,例如實用的CSS。
全頁CSS動畫上經常詢問問題一起使用,是的,CSS動畫可以與SVG一起使用(可擴展向量圖形)。 SVG擁有自己的CSS屬性集,可以動畫,例如填充,中風和轉換。與對常規的HTML元素進行動畫相比,這允許更複雜,有趣的動畫。
>>
>如何優化我的CSS動畫的性能?以優化CSS動畫的性能,您可以限制動畫屬性,尤其是觸發佈局的動畫屬性會更改寬度,高度和邊距。而是使用僅觸發複合變化(例如變換和不透明度)的屬性。您還可以使用Will-Change屬性將可能是動畫化的屬性通知瀏覽器。
>我可以控制CSS動畫的速度嗎?財產。此屬性定義了動畫完成一個週期的時間長度。
>以上是如何使用CSS創建整頁動畫的詳細內容。更多資訊請關注PHP中文網其他相關文章!