您还可以在这里查看:https://gist.github.com/larrybotha/7881691 - 这是这个“故事”的续篇。
修复IE9、IE10、IE11中<img>
标签中的SVG文件不按比例缩放的问题
当指定了viewBox
、width
和height
属性时,IE9、IE10和IE11不会正确缩放使用img
标签添加的SVG文件。在不同的浏览器上查看此codepen。
当图像高度大于容器宽度时,图像高度不会缩放。这可以通过两种方法解决。
使用bash中的sed
删除SVG文件中的宽度和高度属性
根据Stackoverflow上的此回答,可以通过仅删除width
和height
属性来解决该问题。
此小脚本将递归搜索当前工作目录中的SVG文件,并删除这些属性以实现跨浏览器兼容性:
find ./ -name '*.svg' -print0 | xargs -0 sed -i "" -e 's/width="[0-9]*\.*\[0-9]*" //' -e 's/height="[0-9]*\.*\[0-9]*" //'
注意事项
删除宽度和高度属性会强制图像在非IE浏览器中占用其容器的整个宽度。
IE10(其他浏览器需要测试)将缩小图像至某些任意大小-这意味着您需要为那些图像添加width: 100%
以适应其容器。
使用CSS针对IE进行操作
由于以上解决方案无论如何都需要使用CSS,因此我们可以使用一个hack来使IE表现正常,而不必担心管理每个单独的SVG文件。
以下代码将针对所有包含SVG文件的img
标签在IE6+浏览器中生效(但只有IE9+支持SVG文件)。
.ie9 img[src*=".svg"] {
width: 100%;
}
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
img[src*=".svg"] {
width: 100%;
}
}
注意事项
在IE9、IE10和IE11中,此代码会将所有包含“.svg”的img
标签进行处理 - 如果您不希望对特定的图像进行处理,则需要为该图像添加一个类来覆盖这个行为。