在html中调整SVG的大小?

Jen*_*nny 141 html svg

所以,我有一个HTML格式的SVG文件,我听说过这种格式的一个原因是当你放大它时它并没有全部像素化.

我知道使用jpeg或其他任何我可以存储为50乘50的图标,然后实际显示为(相当像素化)100×100缩略图(或10乘10),通过手动设置image_src中的高度和宽度标签.

但是,SVG文件似乎与object/embed标签一起使用,并且更改THOSE的高度或宽度只会导致为图片分配更多空间.

有没有办法指定您希望SVG图像的显示小于或大于它实际存储在文件系统中?

Ama*_*dan 160

.svg使用文本编辑器打开文件(它只是XML),并在顶部查找类似的内容:

<svg ... width="50px" height="50px"...
Run Code Online (Sandbox Code Playgroud)

擦除宽度和高度属性; 默认值为100%,因此它应该伸展到容器允许的任何值.

  • 是的,但你还需要在50x50px示例中添加'viewBox'属性(例如viewBox ="0 0 50 50"),否则内容可能无法正确缩放(取决于容器尺寸).Scour会自动为您完成这项工作,http://www.codedread.com/scour/. (71认同)
  • 如果对其他人来说不明显,'viewBox'区分大小写.此外,如果您正在裁剪图像,前两个坐标是左上角,后两个坐标是*缩放前的宽度和高度*. (18认同)
  • 请注意 &lt;div style="width: 50px;height: 50px"&gt;&lt;svg viewBox="0 0 1000 1000"&gt;...&lt;/svg&gt;&lt;/div&gt; 和 &lt;svg viewBox="0 0 1000 1000" style="width: 50px; height: 50px" &gt;...&lt;/svg&gt; 会起作用。 (2认同)
  • 为了补充 @ErikDahlström 和 widged 的​​答案,您可以访问 [Developers Mozilla](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/viewBox) 的官方网站并查看viewBox 的完整文档。4 个值是 min-x、min-y、宽度和高度,后 2 个可以接受负参数。 (2认同)

Lor*_*uer 43

试试这些:

  1. 设置缺少的视图框并在svg标记中填写set height和height属性的高度和宽度值

  2. 然后,只需将高度和宽度设置为所需的百分比值即可缩放图片.祝好运.

  3. 设置固定的宽高比preserveAspectRatio="X200Y200 meet(例如200px),但没有必要

例如

 <svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="10%" 
   height="10%"
   preserveAspectRatio="x200Y200 meet"
   viewBox="0 0 350 350"
   id="svg2"
   version="1.1"
   inkscape:version="0.48.0 r9654"
   sodipodi:docname="namesvg.svg">
Run Code Online (Sandbox Code Playgroud)


Tan*_*eer 21

您可以通过在图像标签和尺寸图像标签中显示svg来调整大小

<img width="200px" src="lion.svg"></img>
Run Code Online (Sandbox Code Playgroud)


duh*_*ime 17

我发现最好为我的 SVG添加viewBoxpreserveAspectRatio属性。视图框应以以下形式描述 SVG 的完整宽度和高度0 0 w h

<svg preserveAspectRatio="xMidYMid meet" viewBox="0 0 700 550"></svg>
Run Code Online (Sandbox Code Playgroud)

  • 老实说,这是最好的选择。奇迹般有效。 (3认同)
  • 这样做以及添加 `width="100%"` 和 `height="100%"` 对我来说非常有效。 (2认同)

Chr*_*s P 12

使用以下代码:

<g transform="scale(0.1)">
...
</g>
Run Code Online (Sandbox Code Playgroud)


小智 9

更改容器的宽度也会修复它,而不是更改源文件的宽度和高度.

.SvgImage img{ width:80%; }
Run Code Online (Sandbox Code Playgroud)

这解决了重新调整svg大小的问题.你可以根据你的要求给出任何%.


小智 5

这是使用以下方法获取边界的示例svg.getBox()https : //gist.github.com/john-doherty/2ad94360771902b16f459f590b833d44

最后,您将获得可以插入 svg 以正确设置视图框的数字。然后在父 div 上使用任何 css 就完成了。

 // get all SVG objects in the DOM
 var svgs = document.getElementsByTagName("svg");
 var svg = svgs[0],
    box = svg.getBBox(), // <- get the visual boundary required to view all children
    viewBox = [box.x, box.y, box.width, box.height].join(" ");

    // set viewable area based on value above
    svg.setAttribute("viewBox", viewBox);
Run Code Online (Sandbox Code Playgroud)