使用 GSAP 的動畫可縮放矢量圖形
已發表: 2022-12-06假設您想要一個關於如何為可縮放矢量圖形 (SVG) 製作動畫的教程:
SVG 是開發人員和設計人員用來創建二維矢量圖形的標準。 雖然該格式能夠生成豐富的圖形,但文件往往比其他常見圖像格式更小,因此非常適合在網絡上使用。
當涉及到動畫 SVG 時,有幾種不同的方法可以實現。 GreenSock 的 GSAP 可能是最受歡迎的選項,但不是唯一的選項。 在本教程中,我們將了解如何使用 GSAP 的工具製作 SVG 動畫,以及如何使用 JavaScript 觸發動畫。
這是通過部件的內聯(HTML 中的 SVG 代碼)和基於 CSS 的動畫來實現的。 我的母校 Wufoo 想要刷新我們在這裡使用的廣告圖形。 現在似乎是進一步使用它的好時機。 下面的視頻顯示了它是如何完成的。 CSS 將受益於動畫延遲屬性的原生隨機化。 看到字母在每個時間間隔稍微調整一下會很酷。 如果這個動畫能在大約 3 秒內結束就好了。
translateY(150px) 效果導致恐龍在下方移動得如此之遠,以至於什麼都沒有出現。 恐龍最初在這個廣告中是隱藏的,但是當淡入/淡出動畫淡入時,Fast 字樣出現了。 通過使用 ol' padded box 技術,我們可以創建一個內聯 SVG 比例尺,在使用內聯 SVG 的同時保持其縱橫比。 因為這是一個廣告,您可以使用 <a href=>,只需確保將 block 屬性設置為 display: block 而不是使用 <div>。
創建動畫對象的行為。 導出器可用於創建SVG 動畫。 當渲染模式設置為動畫時,渲染的整個幀,無論是一個幀(F12 或 Shift-F12),還是渲染中的所有幀(Shift-F12 或 F12),都保存在一個文件中。
動畫元素可用於創建 SVG 圖形。 SMIL 的第一個動畫元素被確定如下: *animate%27/animate%27 – 它允許您隨著時間的推移為標量屬性和屬性設置動畫。
在大多數情況下,使用 *img 標籤是導致SVG 動畫失敗的主要原因。 當動畫開始時,SVG 可能在網站上可見,但它不會開始。 解決此問題的最簡單方法是將所有 img> 標籤替換為 object> 標籤。
在 SVG 中,您可以隨時間更改矢量圖形以創建動畫效果。 有幾種方法可以為SVG 內容製作動畫。 對於這篇文章,我將使用 SVG 的動畫元素 [svg-animated]。 可以通過基於時間對文檔元素進行更改來描述 SVG 文檔片段中包含的數據。
如何創建動畫 Svg?
有幾種創建動畫 SVG的方法。 一種方法是使用 Adobe Illustrator 等矢量繪圖程序創建圖稿,然後使用 After Effects 等工具添加動畫。 另一種方法是使用像 Snap.svg 這樣的工具直接在代碼中創建動畫。
本教程將引導您完成在 sva 上下文中使用 CSS 進行優化和動畫製作的基本步驟。 唯一可用於此目的的 Bootstrap 版本是 Bootstrap 4.1.3。 如果您進行引導,請確保您的 SVG 包含類 img-fluid 以確保它在移動設備上正確縮放。 可以通過向 SVG 添加類來自定義圖像。 當我們要求 CSS 對動畫執行效果時,我們必須指定其名稱和關鍵幀。 當矩形完成淡入時,文本動畫必須同時運行。 由於這一變化,這一步的三次方貝塞爾曲線現在處於更快的移動狀態。 這個動畫有 40% 的時間出現在我們中間。 我們重置 stroke-dashoffset,使破折號覆蓋整個路徑。
如何為 Svg 設置動畫
借助正確的工具,製作動畫 svg 可以是一個簡單而愉快的過程。 選擇要製作動畫的幀時,可以使用 SVG 將其導出。 您也可以在該幀中選擇一個節點來設置動畫。 通過實時預覽,您可以調整動畫直到您滿意為止。
在為 HTML 文件製作動畫之前,您必須首先聲明關鍵幀和名稱。 通過將屬性分配給元素來維護屬性。 編輯完所有元素後,保存最終文件。
動畫 Svg Css
可以使用 CSS 對 SVG 文件進行動畫處理。 有許多不同的屬性可用於創建動畫。 最常見的屬性是:動畫、動畫延遲、動畫持續時間、動畫迭代次數、動畫名稱、動畫播放狀態、動畫計時函數。
可縮放矢量圖形 (SVG) 是一種基於 XML 的矢量圖像格式,允許在二維圖形中進行交互和動畫。 本文將介紹如何導出和優化 sva 文件、嵌入它們,並解釋它們中的每一個如何影響您創建的樣式和動畫。 CSS 將用於樣式和動畫。 如果您使用的是路徑繁多的文件,將小數位數從四位更改為一位可以將文件大小減小 50%。 如果優化最終破壞了您的文件,您可以預覽它,所以這是一個很大的優勢。 Peter Collingridge 用於優化 sva 的在線工具是幾個可用的工具之一。 因為 SVG 1.1 不需要 CSS,所以應用於 SVG 節點的 CSS 樣式屬性被稱為表示屬性。
設置表示屬性類似於在元素上設置 CSS 屬性。 儘管它們在樣式級聯中起著重要作用,但我們很快就能更深入地解釋這一點。 CSS 屬性也可用於定義SVG 元素的樣式。 在 sva 節點上使用表示屬性與使用它們定義 CSS 屬性相同。 所有表示屬性都是低級權威樣式表,因此它們可以由任何其他樣式定義指定。 圖表中較低的樣式,例如上面的樣式,應該在它們上面的樣式上使用。 CSS2 的動態偽類,例如:hover、:active 和:focus,用於設置大多數 SVG 的樣式。
SVG 元素以與 HTML 元素相同的方式轉換和轉換原點的能力類似於 HTML 元素以與 CSS 元素相同的方式轉換和轉換原點的能力。 因為 SVG 不受框模型的約束,所以它們沒有邊框、填充或邊距,就像 HTML 元素一樣。 如音節規範中所述,適當的屬性名稱(通常是小寫字母和連字符)由 CSS 規範定義。 當以百分比指定 transform-origin 值時,它是相對於元素的邊界框設置的。 截至目前,Firefox 不支持為轉換設置百分比值的原點。 如果您希望轉換從長遠來看表現良好,您應該使用絕對值。 有六種方法可以在文檔中插入 SVG,每種方法各有優缺點。
在使用 embed 方法嵌入 SVG 後,您可以確定某些 CSS 樣式、動畫和交互是否有效。 有關該技術的更多信息,請參閱 Jake Archibald 的優秀文章。 它仍然得到廣泛支持,儘管 HTML 標準從未指定如何格式化它。 >svg> 標籤也可用於將 SVG 合併到文檔內聯中,這稱為代碼島。 因為可以使用內聯SVG 和 CSS 設置 SVG 的樣式和動畫,所以使用起來更簡單。 如果您要嵌入 SVG,請確保它可嵌入所有瀏覽器。 根據嵌入技術,您可能需要添加 hack 或修復程序以使您的 SVG 跨瀏覽器兼容。
要查看詳細信息,請閱讀我關於 Codrops 的文章。 當圖像作為背景嵌入到 SVG 中時,不可能添加任何新的技巧。 您還必須確保元素的寬度為 100%。 在 CSS 中,300 x 150 像素是替換元素的默認大小。 只有 Thierry Koblentz 在 A List Apart 上開創的 Adobe Photoshop hack 可以使 iframe 響應。 CSS 媒體查詢也可以提交給 SVG。 使用媒體查詢,您可以跨視口大小更改 SVG 的樣式。 當 SVG 響應頁面的視口時,它不是頁面的視口而是它自己的視口。 這與實踐中的元素查詢是同一個概念。
帶有 CSS 的 Svg 動畫
CSS 可用於創建這種通用圖像格式的動畫圖像。 因此,可以更輕鬆地查看和理解更複雜的效果。 通過向 SVG 添加簡單的類,您可以隨意更改圖像的形狀。 您可以使用它來創建更多動態圖形。
如何為 Svg 路徑設置動畫
有幾種不同的方式來製作 SVG 路徑的動畫: 1. 使用 SVG 變換屬性 2. 使用CSS3 動畫3. 使用 SMIL 4. 使用 JavaScript 變換屬性是製作 SVG 路徑動畫的最常見方式。 這將讓您通過轉換路徑的坐標來為路徑設置動畫。 要使用 CSS3 為路徑設置動畫,您需要將 animation-timing-function 屬性設置為 linear 或 alternate。 然後,您可以將 animation-duration 屬性設置為您希望動畫運行的時間長度。 SMIL 是另一種動畫路徑的方法。 SMIL 代表同步多媒體集成語言。 這將使您可以使用該元素為路徑設置動畫。 為路徑設置動畫的最後一種方法是使用 JavaScript。 為此,您需要創建一個函數來更新路徑的坐標。 然後,您可以調用此函數來運行動畫。
使用 SVG 路徑,您可以輕鬆創建任何內容。 它是一種矢量圖像格式,不是由彩色像素組成,而是由創建後可以在屏幕上解釋的數學函數組成。 本文將向您展示如何使用 getPointAtLength() 上下文中的函數 getPointAtLength() 將 SVG 路徑數據集用於創意目的。 我們將在該動畫的每一幀中沿著一條路徑製作一個新的圓形元素。 每個幀都將加載一個新粒子,該粒子將通過在每個幀上按 createParticle 函數創建。 為了使動畫更漂亮,我還為保險絲的 stroke-dashoffset 設置了動畫,使其看起來更逼真。 我們現在能夠從 SVG 路徑中提取點的坐標,並使用我們的新 API 將它們應用於任何其他路徑。 因為每個矢量的動畫都有自己的延遲,是根據其沿路徑的位置計算的,因此預計會產生很好的粒子流。 請花時間嘗試這種技術並在 Twitter 上與我分享你的結果,我迫不及待地想看看你想出了什麼。
為什麼你應該在你的網站上製作 Svgs 動畫
可以通過外部 JavaScript 菜單訪問 JavaScript。 您必須將破折號(和間隙)長度設置為等於路徑長度,以便為該路徑設置動畫,就好像它在屏幕上緩慢而平滑地繪製一樣。 彎曲路徑中每個破折號和間隙的長度等於整個路徑的長度。 你如何為 sva 製作動畫? 與笨重的 gif 和視頻相比,使用 CSS 和 SVG 為網站製作動畫可以縮短加載時間。 無需安裝其他 JavaScript 庫即可為您的網站製作動畫的功能還允許您在頁面加載時製作簡單的動畫。 您認為 SMIL 會退市嗎? 事實上,它並不是SMIL 動畫的替代品。 儘管該規範基於 SMIL,但多年來它已經有了很大的發展。 瀏覽器以多種方式支持它。
Svg 動畫示例
有幾種不同類型的動畫可以與 SVG 一起使用。 這些包括:
-SMIL 動畫:這些是用 SMIL(同步多媒體集成語言)編寫的動畫。 SMIL 是一種基於 XML 的語言,用於描述時間和動畫。
-CSS 動畫:這些是用 CSS 編寫的動畫。 CSS 是一種樣式表語言,用於描述以標記語言編寫的文檔的呈現方式。
-JavaScript 動畫:這些是用 JavaScript 編寫的動畫。 JavaScript 是一種用於創建交互式網頁的編程語言。
SVG(可縮放矢量圖形)是一種可以縮放到任意大小的視覺元素。 它們在以後的生活中更容易修改和適應,因為它們是基於代碼而不是基於像素的。 svg 最好的部分是什麼? 動畫非常小,加載速度非常快。 它們是各種現代網頁設計應用程序的理想選擇。 如果 Animator 已連接到圖像並設置了動畫設置,則可用於為圖像製作動畫。 如果您想使用 CSS、JavaScript 或 HTML 製作 SVG 動畫,請使用 Framer 的SVG 動畫工具。
Svg 可以動畫化 Css 嗎?
還有其他可用的動畫工具,但它們不像 CSS 那樣容易製作動畫。
為什麼 Svg 是網頁設計的高級圖像格式
可縮放矢量圖形 (SVG) 是一種矢量圖像格式,可用於生成對 SEO 友好且可縮放的高質量圖像。 除了易於編輯之外,它還具有廣泛的內置過濾器,可用於創建引人入勝且具有視覺吸引力的用戶界面效果。 另一種類型是 CSS,這是一種更傳統的基於文本的格式,可擴展且更難定制。