我創建了一個我打算用作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