挖掘WordPress中的預覽加載動畫
深入WordPress預覽加載動畫
WordPress在5.0版本中引入了塊編輯器(又名Gutenberg),隨之而來的是一個漂亮的新的文章預覽屏幕,顯示WordPress徽標在預覽加載時自行繪製。
這就是保存文章草稿並在編輯器中點擊“預覽”按鈕時看到的畫面。他們是如何實現的呢?我很難查看頁面的源代碼,因為預覽加載速度很快,但我確實看到了SVG被用於WordPress徽標。這正是我所需要的,因為我的腦海中立刻回想起Chris在2014年寫的一篇文章,該文章使用stroke-dasharray
和stroke-dashoffset
屬性來創建相同的效果。
這是Chris在那篇文章中分享的示例:
[CodePen鏈接](See the Pen bGyoz by Chris Coyier (@chriscoyier) on CodePen.)
此後,我已經能夠獲得CSS代碼來確認WordPress繪圖確實使用了相同的技術,但我將分享我在嘗試反向工程時是如何分解問題的。
我們正在使用內聯SVG
WordPress版本的一個巧妙之處在於我們使用了兩個SVG路徑而不是一個。這意味著我們有兩個似乎同時繪製的部分。以下是內聯在HTML中的SVG。我們還有“正在生成預覽”文本,它可以位於SVG外部。
<svg aria-hidden="true" focusable="false" role="img" viewbox="0 0 96 96" xmlns="http://www.w3.org/2000/svg"><path d="M48 12c19.9 0 36 16.1 36 36S67.9 84 48 84 12 67.9 12 48s16.1-36 36-36" fill="none"></path><path d="M69.5 46.4c0-3.9-1.4-6.7-2.6-8.8-1.6-2.6-3.1-4.9-3.1-7.5 0-2.9 2.2-5.7 5.4-5.7h.4C63.9 19.2 56.4 16 48 16c-11.2 0-21 5.7-26.7 14.4h2.1c3.3 0 8.5-.4 8.5-.4 1.7-.1 1.9 2.4.2 2.6 0 0-1.7.2-3.7.3L40 67.5l7-20.9L42 33c-1.7-.1-3.3-.3-3.3-.3-1.7-.1-1.5-2.7.2-2.6 0 0 5.3.4 8.4.4 3.3 0 8.5-.4 8.5-.4 1.7-.1 1.9 2.4.2 2.6 0 0-1.7.2-3.7.3l11.5 34.3 3.3-10.4c1.6-4.5 2.4-7.8 2.4-10.5zM16.1 48c0 12.6 7.3 23.5 18 28.7L18.8 35c-1.7 4-2.7 8.4-2.7 13zm32.5 2.8L39 78.6c2.9.8 5.9 1.3 9 1.3 3.7 0 7.3-.6 10.6-1.8-.1-.1-.2-.3-.2-.4l-9.8-26.9zM76.2 36c0 3.2-.6 6.9-2.4 11.4L64 75.6c9.5-5.5 15.9-15.8 15.9-27.6 0-5.5-1.4-10.8-3.9-15.3.1 1 .2 2.1.2 3.3z" fill="none"></path></svg><p> Generating preview...</p>
第一個路徑是一個橢圓,作為第二個路徑的邊界,第二個路徑是WordPress徽標的形狀。最好為每個路徑賦予一個類——特別是如果這不是頁面上的唯一元素——但我決定不使用類,因為這是演示中的唯一元素。在這種情況下,我們可以使用CSS選擇這兩個路徑,或者使用偽選擇器(例如path:nth-child(2)
)分別選擇它們。
還有一些其他的輔助操作。例如,SVG獲得屬性以使其更易於訪問,例如將其標識為圖像,將其隱藏在屏幕閱讀器之外,並防止其被聚焦。
我們需要稍微設置一下SVG樣式
非常非常簡單的樣式。我們需要一個描邊,因為路徑上沒有填充顏色。否則我們將看到很多空白。好吧,是一個不可見的形狀,但本質上是沒有任何東西。
svg { stroke: #555; stroke-width: 0.5; width: 250px; }
這給了我們兩個路徑的輪廓。 stroke-width
屬性的好處在於它接受十進制值,因此我們可以使線條更細一些。這樣繪製看起來就像是用鉛筆劃的一樣。
這裡的寬度是相當任意的,但它很重要,因為我們將使用的stroke-dasharray
和stroke-dashoffset
屬性依賴於它。如果這些屬性值小於SVG的大小,則繪製將停止完成。如果它太大,則繪製速度會太快。
現在我們知道了寬度並且可以看到路徑描邊,我們可以相應地設置stroke-dasharray
和stroke-dashoffset
。
svg path { stroke-dasharray: 300; stroke-dashoffset: 300; }
比SVG略大,並且破折號之間有很大的空間,這應該差不多合適。可以調整這些值以根據您的喜好調整動畫。
其餘的只是使用Chris的技術
繪製是一個使用一個關鍵幀的CSS動畫。如果我們將stroke-dashoffset
從零開始,則路徑在初始加載時將不可見,並在動畫達到100%時增長到我們之前設置的300值。同樣,我們將偏移量設置為300,以便描邊破折號及其之間的空間將擴展到SVG之外以覆蓋整個內容。
所有魔法都只是五行代碼:
@keyframes draw { 0% { stroke-dashoffset: 0; } }
將動畫命名為您喜歡的任何名稱。我們可以只在0%定義動畫,因為100%是隱式的。
哦!我們還必須將動畫附加到路徑,所以:
svg path { animation: draw 2s ease-out infinite alternate; stroke-dasharray: 300; stroke-dashoffset: 300; }
您也可以調整這些值來加快或減慢速度。緩動效果使動畫具有輕微的脈衝效果,其中開始和結束的速度比運動的中間部分慢一些。
現在全部放在一起!
我之前提到過,但我最終能夠從實際實現中獲取源代碼,它非常接近,使用了相同的原理。
以上是挖掘WordPress中的預覽加載動畫的詳細內容。更多資訊請關注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)

在本週的平台新聞綜述中,Chrome引入了一個用於加載的新屬性,Web開發人員的可訪問性規範以及BBC Move

有很多分析平台可幫助您跟踪網站上的訪問者和使用數據。也許最著名的是Google Analytics(廣泛使用)
