Ho una finestra di dialogo basata su Jquery complessa e voglio fornire un'immagine SVG come sfondo. Ho provato a farlo funzionare prima in un semplice file di test e non funziona sebbene SVG, come immagine standalone, funzioni bene. Ecco il codice semplificato:SVG come immagine di sfondo in linea di un Div non funziona
<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>
Lo svg .../svg è lo stesso SVG come usato in background e viene visualizzato correttamente.
Dopo aver esaminato varie soluzioni, mi sono basato principalmente sul post this. Ho anche provato a simulare l'immagine SVG di sfondo usando z-index e posizionando l'immagine in Div come un'immagine ma questa non è una buona soluzione. Voglio ottenere SVG come immagine di sfondo per funzionare senza intoppi tra i browser perché almeno i gradienti SVG sono ben supportati in tutti i browser moderni e penso che il tempo per il potenziale SVG per essere pienamente realizzato è finalmente arrivato.
Devi averlo come base64? Non potresti semplicemente collegare esternamente allo svg come un'immagine normale? 'background: url (../ images/fancy.svg)' Se lo svg non è dinamico, trovo più facile mantenere un normale file. – Lex
@Lex Voglio averlo in linea così posso cambiarlo in modo dinamico con JS. – Sam
il post che hai citato sta chiedendo di fuggire # che non hai fatto come vedo # sostituito con% 23. – uzma