我创建了一个我打算用作CSS背景图像的SVG文件。我希望能够使用查询字符串参数更改填充颜色在SVG,像这样:了解SVG查询字符串参数
#rect { background-image: url('rect.svg'); }
#rect.red { background-image: url('rect.svg?color=red'); }
据我了解,使用的SVG脚本标签,我能够得到color
参数并更新填充颜色。下面是一个例子SVG:
<!DOCTYPE svg PUBLIC "-//W3C//DDTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
<rect width="100%" height="100%" />
<script>
<![CDATA[
var params = { };
location.href.split('?')[1].split('&').forEach(
function(i)
{
params[ i.split('=')[0] ] = i.split('=')[1];
}
);
if(params.color)
{
var rect = document.getElementsByTagName("rect")[0];
rect.setAttribute("fill", params.color);
}
]]>
</script>
</svg>
将文件直接或使用对象的标签似乎工作,但对于CSS背景图像或的img标签,颜色参数被忽略。
我不完全确定这里发生了什么,我希望有一个解释或替代解决方案,我试图完成(最好不诉诸于服务器端处理)。
这里是一个的jsfiddle显示不同的渲染方法:http://jsfiddle.net/ehb7S/
当SVG被用作CSS背景图像或图像标签时,javascript被禁用。 –
啊,这解释了为什么它不起作用。如果有任何其他聪明的解决方案通过CSS将参数传递给SVG,我将保持开放状态,但看起来我可能不太会运气。 – Quantastical
为什么不在svg之外使用一些js? – mihai