SVG的背景大小在IE9-10中被压缩

Jul*_*rog 73 css svg internet-explorer-9 internet-explorer-10 background-size

我有一个带背景图片的div集:

<div>Play Video</div>
Run Code Online (Sandbox Code Playgroud)

使用以下CSS:

div {
background-image: url('icon.png');
background-image: url('icon.svg'), none;
background-size: 40px 40px;
background-repeat: no-repeat;
background-position: 90% 50%;
padding: 20px;
width: 150px;
}
Run Code Online (Sandbox Code Playgroud)

背景大小在Firefox,Safari和Chrome中得到尊重.在IE8中,SVG由PNG文件替换.但是,在IE9和IE10中,SVG文件的大小很小.这个问题似乎与div的宽度和高度有关.如果我添加150px的高度,SVG将正确呈现.如果我把它缩小(即100px),图形就开始缩小.

有没有人找到办法在资源管理器中解决这个问题?有没有办法告诉IE使用背景大小值独立于div的宽度和高度?

mbx*_*xtr 162

确保您的SVG有一个width和height指定.如果要从Illustrator生成它,请确保取消选中"响应"框,因为此选项会删除宽度和高度.

  • 这对我来说也是如此.我在编辑器中打开了SVG,并将viewBox属性中的最后两个值复制/粘贴到width和height属性中.所以,之前:<svg viewBox ="0 0 800 150">之后:<svg viewBox ="0 0 800 150"width ="800"height ="150"> (33认同)
  • 我的问题要求我删除SVG代码的高度和宽度值FWIW. (2认同)
  • YMMV我想,添加宽度和高度属性对我来说不起作用.IE10似乎仍然不知道"覆盖"是什么意思,它就像"包含"一样. (2认同)

Sim*_*ell 13

添加宽度和高度到SVG,因为mbxtr说几乎为我工作.我需要添加preserveAspectRatio="none slice"以使其在IE中响应性地工作.

  • 在实际的svg文档中将`preserveAspectRatio ="none slice"添加到<svg>标签只是为我解决了这个问题!谢谢你的建议. (2认同)

小智 5

对我来说,这 3 个修复有帮助:

  • 如果可能,将背景位置设置为“中心”
  • 对于 background-size 设置两个值,“100% auto”不会成功,所以使用“100% 100%”
  • 如果这仍然无助于将最后一个值更改为 SVG 本身的“viewBox”属性,并使其比 SVG 的宽度和高度宽和高一个像素。这会稍微缩小 SVG,但会阻止 IE 将其切断 - 并且根本不会注意到较小的尺寸。