Ich habe eine SVG-Datei erstellt, die ich als Hintergrundbild in CSS verwenden möchte. Ich möchte in der Lage, die Füllfarbe in der SVG zu ändern, um eine Abfrage-String-Parameter verwenden, etwa so:SVG-Parameter für Abfragezeichenfolgen verstehen
#rect { background-image: url('rect.svg'); }
#rect.red { background-image: url('rect.svg?color=red'); }
Wie ich verstehe, ein Skript-Tag in der SVG, ich bin in der Lage, die color
Parameter zu erhalten und aktualisiere die Füllfarbe. Hier ist ein Beispiel 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>
geht in die Datei direkt, oder über einen Objekt-Tag scheint zu funktionieren, aber für CSS Hintergrundbilder oder img-Tags wird der Farbparameter ignoriert.
Ich bin nicht genau sicher, was hier vor sich geht, und ich hatte gehofft, dass es eine Erklärung oder eine alternative Lösung zu dem geben würde, was ich versuche zu erreichen (vorzugsweise ohne serverseitige Verarbeitung). Hier
ist ein jsFiddle die verschiedenen Render-Methoden zeigt: http://jsfiddle.net/ehb7S/
Javascript ist deaktiviert, wenn SVG entweder als CSS-Hintergrundbild oder in einem Image-Tag verwendet wird. –
Ahh, das erklärt, warum es nicht funktioniert. Ich werde das offen lassen, falls es andere clevere Lösungen für die Übergabe von Parametern an die SVG via CSS gibt, aber es sieht so aus, als ob ich dabei Pech hätte. – Quantastical
Warum nicht einige js außerhalb der Svg verwenden? – mihai