Я создал файл SVG, который я намерен использовать в качестве фонового изображения в CSS. Я хочу, чтобы иметь возможность изменить цвет заливки в 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/
javascript отключен, когда SVG используется либо как фоновое изображение CSS, либо в теге изображения. –
Ах, это объясняет, почему это не работает. Я оставлю это открытым, если есть какие-то другие умные решения для передачи параметров SVG через CSS, но похоже, что мне может быть не повезло. – Quantastical
Почему бы не использовать некоторые js вне svg? – mihai