私は複雑なJquery-UIベースのダイアログを持っており、SVG画像をバックグラウンドとして提供したいと思います。私はこの作業を最初に単純なテストファイルにしようとしましたが、スタンドアロンイメージとしてのSVGはうまく動作しますが、動作しません。ここでは単純化されたコードです:Divのインライン背景画像として機能しないSVG
<script>
$(document).ready(function() {
svg = "<svg width='400' height='400' fill='url(#grad1)' \
xmlns='http://www.w3.org/2000/svg'> <rect id='bkgrect' width='400' \
height='400' style='fill:'url(#grad1)'; stroke-width:3;'/> <defs>\
<linearGradient id='grad1' x1='0' y1='20%' x2='0%' y2='100%'> \
<stop id='stop1' offset='0%' stop-color='blue'/> <stop offset='100%' \
stop-color='white'/> </linearGradient> </defs> </svg>";
svgBase64 = btoa(svg);
bkgrndImg = "url('data:image/svg+xml;base64,"+ svgBase64 +"')";
$('#testDiv').css('background-image', bkgrndImg);
});
</script>
</head>
<body>
<div id='testDiv' style="border:2px solid red;width:400px;height:400px;
position:absolute;left:100px;top:100px;"> Some SVG Div </div>
<svg ... /svg>
SVG .../SVGはバックグラウンドで使用したものと同じSVGあり、それが適切に表示されます。
様々な解決策を見て、私はthis投稿に主に依存しています。また、z-indexを使って背景SVG画像をシミュレートしようとしましたが、Divの画像を画像として配置しましたが、それは良い修正ではありません。 SVGのグラデーションはすべての現代のブラウザでうまくサポートされているため、SVGの潜在的な可能性が完全に実現される時期が来たと思います。
base64にする必要がありますか?通常の画像のように外部からsvgにリンクするだけではありませんか? 'background:url(../ images/fancy.svg)' svgが動的でない場合は、通常のファイルとして管理する方が簡単です。 – Lex
@Lex私はそれをインラインにしたいので、JSで動的に変更することができます。 – Sam
#あなたが#23で置き換えられているのを見て、あなたがしなかった#を脱出しようとしています。 – uzma