簡體   English   中英

在 HTML 中調整 SVG 大小

[英]Resizing SVG in HTML

我發現這個問題Resizing SVG in HTML但答案(刪除<svg> widthheight屬性並調整viewBox屬性的大小)沒有正確重新調整我的 SVG 文件。

這是我從Looka購買的徽標文件,我想開始使用它,但我不知道如何重新縮放|調整它的大小。

<?xml version="1.0" encoding="UTF-8"?>
<svg
  xmlns="http://www.w3.org/2000/svg"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  version="1.1"
  width="3171.4285714285716"
  height="2645.5238095238096"
  viewBox="0 -25.714285714285715 3171.4285714285716 2645.5238095238096">
   <rect fill="#67b231" width="3171.4285714285716" height="2645.5238095238096" />
   <g transform="scale(8.571428571428571) translate(10, 10)">
      <defs id="SvgjsDefs2369" />
      <g transform="matrix(...)"></g>
      <g transform="matrix(...)"></g>
      <g transform="matrix(...)"></g>
   </g>
</svg>

如果我刪除<svg> widthheightviewBox會保留大小。

如果我也縮小viewBox ,圖像保持相同的大小,我假設(!?)因為子<rect>也包含widthheight屬性。

但是,如果我刪除<rect> widthheight屬性,結果是類似大小的空白(並且沒有徽標)。

  1. 我應該如何處理任意縮放|調整圖像大小?
  2. 調整height時是否應該保留width viewBox
  3. viewBox是否應該有一個正的 y 位置(當前-25.714... )?

作為一個有用的片段怎么樣。 完全不編輯<svg>代碼,我已經設置了它,以便您可以將任何<svg>包裝在具有 svgSize 類的 div 中,如下所示:

<div class="svgSize"><svg>...</svg></div>

然后使用內聯樣式,您可以使用您希望的任何值傳遞--svgHeight--svgWidth ,例如--svgHeight: 100px並且 SVG 將調整為給定的值,同時保持其縱橫比。 如果您不傳遞任何一個值,它將默認為 auto ,它將調整大小以填充父級

一定要喜歡 CSS 自定義屬性

 .svgSize { display: inline-flex; height: var(--svgHeight, auto); width: var(--svgWidth, auto); } .svgSize svg { height: auto; width: auto; max-height: 100%; max-width: 100%; }
 <div class="svgSize" style="--svgWidth: 5rem"> <?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="3171.4285714285716" height="2645.5238095238096" viewBox="0 -25.714285714285715 3171.4285714285716 2645.5238095238096"> <rect fill="#67b231" width="3171.4285714285716" height="2645.5238095238096" /> <g transform="scale(8.571428571428571) translate(10, 10)"> <defs id="SvgjsDefs2369" /> <g transform="matrix(...)"></g> <g transform="matrix(...)"></g> <g transform="matrix(...)"></g> </g> </svg> </div> <div class="svgSize" style="--svgHeight: 15rem"> <?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="3171.4285714285716" height="2645.5238095238096" viewBox="0 -25.714285714285715 3171.4285714285716 2645.5238095238096"> <rect fill="#67b231" width="3171.4285714285716" height="2645.5238095238096" /> <g transform="scale(8.571428571428571) translate(10, 10)"> <defs id="SvgjsDefs2369" /> <g transform="matrix(...)"></g> <g transform="matrix(...)"></g> <g transform="matrix(...)"></g> </g> </svg> </div> <div class="svgSize" style=""> <?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="3171.4285714285716" height="2645.5238095238096" viewBox="0 -25.714285714285715 3171.4285714285716 2645.5238095238096"> <rect fill="#67b231" width="3171.4285714285716" height="2645.5238095238096" /> <g transform="scale(8.571428571428571) translate(10, 10)"> <defs id="SvgjsDefs2369" /> <g transform="matrix(...)"></g> <g transform="matrix(...)"></g> <g transform="matrix(...)"></g> </g> </svg> </div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM