使用 CSS 縮放 SVG 圖形

已發表: 2023-02-03

在為 Web 創建基於矢量的圖形時,您實際上只需要了解一種格式:SVG。 雖然可以使用代碼創建簡單的 SVG 圖形,但使用 CSS 處理它們要容易得多。 在本文中,我們將了解如何使用 CSS 縮放 SVG 圖形。 我們還將討論使用 SVG 相對於其他格式(如 PNG 或 JPEG)的一些好處。

使用矢量圖形 (SVG) 進行縮放。 Amelia Bellamy-Royds 分享了縮放 SVG 的史詩縮放指南。 儘管縮放光柵圖形更加困難,但它有可能開闢新的可能性。 初學者可能會發現很難理解如何讓它按照他們想要的方式運行。 Anaster 圖像由它們的寬高比明確定義,寬高比是文本中的寬度與高度之比。 如果你強迫一個光柵圖像小於它固有的高度和寬度,它就會變形; 然而,如果你強迫它變大,它就會變得扭曲。 內聯 SVG將以代碼指定的大小繪製,而不管代碼中指定的畫布大小如何。

ViewBox,最後一塊,負責設計可以縮放的矢量圖形。 viewBox 元素是元素>svg> 的一個組件。 該值是由四個由空格或逗號分隔的數字組成的列表,每個數字代表該值的不同方面。 x 和 y 確定視口左上角的坐標系。 要縮放的像素/坐標數稱為高度。 如果您指定的尺寸與縱橫比不一致,圖像將不會被拉伸或扭曲。 可以使用新的 object-fit CSS 屬性對齊其他圖像類型。

您還可以設置 preserveRatioAspect=”none” 設置以將圖像縮放到與光柵圖像相同的大小。 您可以使用光柵圖像確定圖像的寬度和高度,也可以讓其他比例與圖像匹配。 sva如何生成矢量圖形的數據? 隨著年齡的增長,它會變得更加複雜。 如果你想自動調整 *.img 文件中的圖像大小,你應該考慮使用 *.img 文件。 您可以通過使用各種 CSS 屬性調整元素的高度和邊距來更改元素的縱橫比。 其他瀏覽器將自動為帶有 viewBoxes 的圖像設置圖像的默認 300*150 大小,而無需指定行為。

可以使用最新的 Blink/Firefox 瀏覽器縮放圖像以適應 viewBox。 無論您指定高度還是寬度,這些瀏覽器都將使用相同的默認尺寸。 例如,容器元素是內聯 SVG 以及其他替換元素的最簡單方法。 在線和 svg 圖形中的官方高度將為零。 當 preserveRatioAspect 值設置為 true 時,圖形將縮小為空。 您不應拉伸圖形,而應強調它們一直拉伸到您為適當的縱橫比精心留出的填充區域。 viewBox 和 preservationRatio 的屬性非常靈活。 嵌套的 <svg> 元素,每個元素都有自己的縮放屬性,可用於分隔圖形比例的各個部分。 此方法允許您創建既長又平的標題圖形,以填充寬屏顯示器而不會過高。

Svg 可以用 Css 縮放嗎?

Svg 可以用 Css 縮放嗎?
圖片來源:thessway.com

如果需要,您可以在 *svg* 文件中更改 *svg* 的高度和寬度屬性。 您可以使用此規則取消您在代碼中指定的尺寸和縱橫比,以及使 svg 的內聯部分成為默認高度。

由於 CSS 寬度和高度屬性設置為 false,因此您無法縮放SVG 圖像。 因為圖標的形狀具有固定的高度,如果高度受到限制,增加 img 的寬度不會使它們變得更高。 transform CSS 屬性允許您旋轉、縮放、傾斜和平移元素。 ViewBox=0 0 我不確定 [w] [h] 對於某些 svgs 是否正確,我的意思是 dubble 零。 前兩位數字確定圖標在框內的位置(是全寬還是全高)以及圖標是否為方形(因為方形圖標只有在全寬或全高時才有效)。

您可以通過多種方式執行此操作。 創建具有尺寸的新 SVG的最簡單方法是將其導出為圖像。 可能需要創建特定的維度,這可能很耗時,而且可能不會被所有瀏覽器接受。 或者,您可以使用 SVG 響應生成器。 該工具會根據您的尺寸和您指定的任何媒體查詢自動創建響應式 SVG 文件,而不管您的媒體查詢是什麼。 如果您知道自己在做什麼,那麼該選項是一個不錯的選擇,但實施起來並不總是那麼容易。 但是,最好的選擇是使用 Illustrator CC 包含的屬性,例如寬度和高度。 如果您指定不同的大小,您的 SVG 將始終在所有瀏覽器中響應。 如果您趕時間或有大量 SVG,則無需在計算機上執行此步驟。 您可以立即從 Illustrator CC 開始導出響應式 SVG 文件。

如何更改 Svg 圖像的寬度和高度?

如何更改 Svg 圖像的寬度和高度?
圖片來源:imgur.com

如何使用 SVG 調整圖像大小? 在您可以選擇要另存為 SVG 的文件之前,您必須先添加一個 SVG 圖像文件。 將您的圖像文件拖放到白色區域並選擇一個文件。 在此步驟中,您必須調整調整大小設置,然後單擊“調整大小”按鈕。 只有在該過程完成後,您才能下載結果。

將圖像變成藝術品非常有趣。 這並不容易,但值得。 您有兩個選項來調整 SVG 圖像的大小。 如果要更改 XML 文件的大小或高度,請單擊 XML 標籤。 您可以使用文本編輯器啟動該文件。 您應該看到下面的代碼行。 CSS 是另一種解決方案。 但是,通過指定“'width”和“'height”,您不會改變這種情況。

Svg 可以拉伸嗎?

創建固定長度的 SVG 圖像時,其處理方式與相同大小的光柵圖像相同。 如果您使用 CSS 將您的 SVG 拉伸為不同的縱橫比,請確保您在 .svg 文件中包含了 preserveRatio=”none”。

可縮放矢量圖形的重要性

要創建既小又大的圖形,您可以使用矢量圖形格式 SVG 。 換句話說,SVG 元素的高度和寬度屬性可能不指定像素; 相反,可以使用幾個單位中的任何一個。 因此可以在不損失任何方面的情況下保持 SVG 的質量。 當談到圖像大小和顯示類型時,這兩者的差異與 SVG 無關。


Svg 圖像可以縮放嗎?

是的,SVG 圖像可以縮放。 這是因為 SVG 圖像是矢量圖像,這意味著它們由一系列直線和曲線組成,而不是像素。 這意味著它們可以按比例放大或縮小而不會損失任何質量。

可以使用裁剪軟件裁剪和縮放圖像。 使用SVG 文檔時,這樣做很簡單。 此 CSS 片段將替換為 SVG 片段。 在本文中,我們將使用 viewBox 和 AspectRatio 屬性來裁剪、縮放和定位圖像。 使用這些屬性不會有任何問題,所以不要害怕嘗試它們。 您希望用戶能夠上傳他們想要的任何尺寸或寬高比的圖像。 通過屬性 object-fit 和 object-position 可以更輕鬆地在擬合框內裁剪和縮放圖像。

所有最新的瀏覽器,包括 Microsoft Edge 16 和 Opera Mini,都支持它,儘管後者需要 -o- 前綴。 PreserveAspectRatio 可用於修改 viewBox 的位置、大小和比例,就像 object-fit 和 object-position 一樣。 例如,假設我們有一個長寬比 (2:1) 不同的正方形和一個 viewBox。 另一方面,scale 用於在減小其尺寸的同時保持 viewBox 的縱橫比,並刪除一些內容(因此切片效果)。 它包括 19 個值,其中沒有確定每個元素提供多少空間的值。 瀏覽器的默認行為是定位圖像和 viewBox,以便在用圖像替換元素並將該圖像的縱橫比與 viewBox 匹配時,它們在視口中完全可見。 更改 preserveAspectRatio 的值可以幫助您確定圖像的哪個方面會根據其在 SVG 中的位置和比例發生變化。

CSS object-fit 和 object-position 可用於裁剪和縮放圖像。 您只能在最新版本的 ME Edge 以及任何現代瀏覽器中使用這些屬性。 當您將 >svg 添加到圖像時,它允許您提供對 Internet Explorer 9 的支持。

需要在不損失清晰度的情況下縮放或校正的圖形非常適合使用 SVG。 它使用起來也相對簡單,適合較小的屏幕,對加載時間影響很小。 此外,圖形是動畫的,這使它們更具動感。

Svg 變換=縮放

縮放變換允許您調整SVG 元素的大小。 您可以使用正數或負數來增加或減少元素的大小。 比例變換採用兩個參數:x 坐標和 y 坐標。

轉換函數可用於以與 HTML 轉換相同的方式操作 SVG 元素。 有些東西在 SVG 元素上的工作方式與在 HTML 元素上的工作方式不同。 例如,我們不能使用 % 值轉換函數(% 值也不適用於 CSS 轉換),我們也不能使用度數旋轉或傾斜角度。 HTML 元素形成其坐標的點是元素坐標的 50%。 在SVG 案例中,畫布上有一個 0 0 點。 當發生旋轉、縮放或傾斜變換時,不同原點的結果會有所不同。 當對我們的元素之一應用平移變換時,變換會隨之移動。

對於 2D 元素,我們提供三個翻譯函數:translateX(tx)、translateY(ty) 和 translate(tx[, ty)。 在每種情況下,x 和 y 方向都按照元素系統坐標的指示使用。 第三個平移函數通過 tx 沿 x 和 y 軸重新定位元素。 元素的旋轉及其坐標係將元素與其固定原點相關聯。 角度值可以用度數(degrees)、弧度(radians)、圈數(turns)或gradians(刻度)來表示。 我們也可以使用 calc() 值(例如,類似 25turn – 30deg 的值),但這目前僅適用於 Chrome 38/35。 可以在 Firefox 59 及更高版本中使用角度值 calc() 執行旋轉功能。

如果我們在 CSS 中設置這個值,我們可以使用 x 和 y 參數來模擬它們的使用。 當使用SVG 變換屬性時,元素及其係統坐標僅圍繞 rotate() 函數的第二個和第三個參數指定的點旋轉。 要在此示例中反轉旋轉,請旋轉 (-45 140 105) 而不是旋轉 (-45)。 我們只需為元素在右下角旋轉 90 度和在右上角旋轉 90 度指定一個不同的固定點。 如何使用 CSS 轉換獲得相同的效果? 在第一次旋轉中,將變換原點設置為右下角很簡單,但是第二次旋轉呢? 如果我們在它已經旋轉 90 度後再次鏈接它,它只會重複。

比例變換由系統原點在坐標系中的位置決定。 (-1, 1) 的比例因子會在收縮時放大元素,而 (-1, 1) 範圍之外的比例因子會在收縮時放大元素。 定向縮放定義為 1 和 2 之間縮放因子的差異。因此,我們可以在任何一種情況下定義變換原點和鏈接變換。 偏離以與平移和旋轉相同的方式扭曲元素,將正方形變成圓形,將圓形變成平行四邊形。 傾斜角定義為應用變換後軸的最終位置和初始位置之間的角度。 在[0*, 90*]區間,由於偏斜角為正,加上一個與初始值中不變坐標同號的值。

當沿 x 軸執行傾斜時,x 坐標對於我們元素的任何點保持不變,而 y 坐標根據傾斜角度變化量 d。 當元素傾斜時,結果由其在坐標係原點的位置決定。 沿同一軸的兩個傾斜變換根據變換的原點產生不同的結果。 HTML 情況(左)和 SVG 情況(右)如上圖所示。 雖然兩種情況下的角度都是 60 度,但右上角的 y 坐標符號可以區分它們。 角度是 CSS 變換屬性中的單位值,用於將值轉換為變換。 度數(degrees)、弧度(rads)、轉數(turns)和梯度(grads)都可以用這些表示,甚至可以和calc()結合使用,在某些情況下。

轉換可用於旋轉、縮放和傾斜元素,就像 HTML 元素一樣。 例如,當我們在 IE 中使用鍊式變換作為 SVG 屬性的值時,我們可以得到一個結果。 然而,它是醜陋的。 為什麼沒有更簡化的方法來做到這一點? 在這段代碼中,我們有三個類似多邊形的形狀,稱為星形。 在下面的演示中,您可以看到它們是如何相對於畫布的原點 (0 0) 定位的。 在代碼中或通過懸停 x,y 對,您可以找到哪些點對應於哪些對。 換句話說,我們希望每顆恆星都以不同的方式旋轉——假設它們有一個隨機角度,而它們的索引有一個特定的角度。