Javascript IE11中SVG图像缩放不好

Javascript IE11中SVG图像缩放不好,javascript,css,svg,internet-explorer-11,Javascript,Css,Svg,Internet Explorer 11,我有一个外部SVG图像,它不能在IE11中保持纵横比 .container{ 宽度:400px; 高度:400px; 显示:块; 边框:1px纯蓝色; } img{ 最大高度:200px; 边框:1px纯红; } 转到图像的url并下载它 在GIMP或Illustrator中的某个地方打开图像,您可以获得SVG代码 获取代码并将其粘贴到html中 然后使用“视图框”属性,直到获得正确的缩放比例 现在您还可以更改SVG中的任何内容 如果在容器div中使用SVG,那么使用 svg{ wid

我有一个外部SVG图像,它不能在IE11中保持纵横比

.container{
宽度:400px;
高度:400px;
显示:块;
边框:1px纯蓝色;
}
img{
最大高度:200px;
边框:1px纯红;
}

转到图像的url并下载它

在GIMP或Illustrator中的某个地方打开图像,您可以获得SVG代码

获取代码并将其粘贴到html中

然后使用“视图框”属性,直到获得正确的缩放比例

现在您还可以更改SVG中的任何内容

如果在容器div中使用SVG,那么使用

svg{
    width:100%;
    height:auto;
}
在CSS中

因为根据这条规则,SVG大小与其容器div相连接


根据我的经验,对于SVG的任何操作,最好使用普通的SVG XML代码

“这在IE11中不起作用的原因是SVG图像没有定义viewbox。”解决方案:添加
viewbox
?SVG图像来自外部网站,因此我无法更改它。我尝试用JS加载它,然后添加一个视图框,但我的尝试失败了。图像在IE 11.187.14393.0中被正确缩放。IE何时会消失?你不应该负责修复其他服务的错误。如果服务返回一个损坏的SVG,他们必须修复它。否则,您仍然可以在两者之间执行代理(PHP中的服务器端或JS中的客户端可能使用BlobUri)。这是不可能的,因为它必须处理数千个不同的图像,所有这些图像都来自不同的源,具有不同的纵横比。CSS中的
max height
也是这里最重要的属性。好吧,然后挑战又开始了:)让我想得更多。第一个想法:为什么不向该URL发出AJAX请求,获取内容,写入DOM,修改它们的viewBox或任何属性?这对你来说会很慢吗?事实上,我想到的一个解决方案是使用js获取图像,使用MIME检查器插件查看它是否是SVG图像(不幸的是,并非所有文件都有正确的扩展名),如果它是SVG文件,解析它并检查是否定义了viewbox,如果不是这样,根据希望定义的宽度和高度添加viewbox属性。但是对于在所有其他浏览器上开箱即用的东西来说,这看起来有点麻烦;)。好吧,同样的思路更好。由于动态内容,我想不出任何其他解决方案。如果有什么事情发生,我会写信的。