jQuery 可以将 svg 数据注入 css background-image:url() 吗?
Posted
技术标签:
【中文标题】jQuery 可以将 svg 数据注入 css background-image:url() 吗?【英文标题】:Can jQuery inject svg data into css background-image:url()? 【发布时间】:2012-12-05 23:12:06 【问题描述】:我想知道 jQuery 中是否有一种方法可以获取页面上 div 中包含的一些 SVG 数据并将这些数据放入 CSS background-image
url?我正在尝试这样做而不是加载外部 SVG 文件,因为我想要一个完全独立的 html 文件。我正在尝试做这样的事情:
var svgData = $("#div-containing-svg").html()
$("other-div").css(backgroundImage:svgData);
这可能吗?此外,它可以跨浏览器工作吗?
【问题讨论】:
我已经看到这是作为画布完成的 - 你有多灵活? 它可以作为数据 URI 完成,例如background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxu [and so on]");
所以如果你可以将你的数据按摩成那种形式,不知何故......?我发现 jsfiddle.net/estelle/SJjJb 使用直接 SVG,但它似乎只对 webkit 友好。
【参考方案1】:
你应该这样做:
var image = $('#svg-container').html();
$('#elem').css('background-image', 'data:image/svg+xml;utf8,' + image);
是跨浏览器吗?在这里你可以看到一个兼容性矩阵:http://caniuse.com/svg-css
SVG 内容应该是 url 转义【讨论】:
【参考方案2】:@minko-geschev 回答的一个工作示例:
https://***.com/a/21626701/960592
提供的答案使用 base64 编码,而不是转义。
【讨论】:
以上是关于jQuery 可以将 svg 数据注入 css background-image:url() 吗?的主要内容,如果未能解决你的问题,请参考以下文章
CSS 过渡属性覆盖 SVG 元素上的 jQuery 动画时间
如何使用 CSS(jQuery SVG 图像替换)更改 SVG 图像的颜色?
如何使用 CSS(jQuery SVG 图像替换)更改 SVG 图像的颜色?
5个超赞的画布Canvas,SVG和CSS3相关的jQuery插件