【发布时间】:2015-12-28 12:23:47
【问题描述】:
所以,我正在尝试做这样的事情:
div {
width: 100px;
height: 100px;
background-position: center center;
background-repeat: no-repeat;
background-size: 100px 100px;
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' style='fill:red; stroke:none'><rect x='0' y='40' width='100' height='20' /><rect x='40' y='0' width='20' height='100' /></svg>");
}
请看这里:http://jsfiddle.net/trxkcx41/4/
这在当前版本的 Chrome、Safari(OS X 和 iOS)和 Firefox 中运行良好。但是,SVG 根本不会出现在 IE 9、10 或 11 中。
这是因为 IE 不支持,还是因为我做错了什么?
[使用解决方案更新]
感谢hungerstar,我已经完成了这项工作。总结他的建议,我需要进行以下更改:
将数据类型从
data:image/svg+xml;utf8更改为data:image/svg+xml;charset=utf8(即charset=是必需的)对 svg 进行 URL 编码。要最小化 URL 编码,请使用
'而不是"来包含属性。所以,就我而言,只需要对<和>进行编码。
最终,我的 CSS 看起来像这样:
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' style='fill:red; stroke:none' %3E%3Crect x='0' y='40' width='100' height='20' /%3E%3Crect x='40' y='0' width='20' height='100' /%3E%3C/svg%3E");
【问题讨论】:
-
试试svg4everbody。
-
@hungerstar - 感谢您的链接;这是一个很酷的工具!但是,我真的只是想弄清楚 IE 是否支持这种 SVG 用法,如果支持,我在示例中做错了什么。
-
我已经成功在数据 uri 中使用 base-64,jsfiddle demo。
-
我相信您正在寻找this is the answer。
标签: css internet-explorer svg