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