我想让内联svg元素的内容在大小非本机时缩放。当然我可以把它作为一个单独的文件,然后像这样缩放。

Index.html: <img src="foo.svg" style="width: 100%;"/>

Foo.svg: <svg width="123" height="456"></svg> .svg

但是,我想通过CSS向SVG添加额外的样式,因此链接外部样式不是一个选项。我如何使内联SVG规模?


当前回答

另一种简单的方法是

transform: scale(1.5);

其他回答

调整currentScale属性在IE中工作(我用IE 11测试),但在Chrome中不工作。

另一种简单的方法是

transform: scale(1.5);

你会想这样做一个转换:

使用JavaScript:

document.getElementById(yourtarget).setAttribute("transform", "scale(2.0)");

用CSS:

#yourtarget {
  transform:scale(2.0);
  -webkit-transform:scale(2.0);
}

将您的SVG页面包装在Group标签中,并将其定位为操纵整个页面:

<svg>
  <g id="yourtarget">
    your svg page
  </g>
</svg>

注:Scale 1.0为100%

乱七八糟的&发现这个CSS似乎包含SVG在Chrome浏览器中,直到容器比图像大:

div.inserted-svg-logo svg { max-width:100%; }

似乎也在FF + IE 11工作。

如果你想在没有preserveAspectRatio属性的情况下缩放SVG。

通过这种方式,SVG将始终拉伸以填充宽度和高度,为了做到这一点,它将调整宽度或高度的大小,如果必要的话,正在寻找这个几天,所以想在这里分享它,以防其他人正在寻找这个

你必须从<svg>中删除宽度和高度,并添加viewBox属性,并添加preserveAspectRatio="none"

例子

<?xml version="1.0" encoding="utf-8"?>

<svg 
version="1.1" 
xmlns="http://www.w3.org/2000/svg" 
viewBox="0 0 5.8208332 15.9"
preserveAspectRatio="none">

<polygon points="480.4,200 0,200 0,0 480.4,0 599.9,100 " fill="#E1E1E1"/>
</svg>