Ho optato per utilizzare la libreria javascript Raphaël per l'ampio supporto del browser, ma ho difficoltà a visualizzare correttamente SVG in qualsiasi browser, ad eccezione di Chrome e Firefox. Mi sono grattato la testa per un po 'ora e mi piacerebbe sapere come posso far funzionare SVG in un layout reattivo.SVG cross-browser in layout reattivo o fluido?
Chrome e Firefox visualizzare l'SVG esattamente come mi piacerebbe. Scala in modo uniforme, mantiene un rapporto proporzioni corretto e la larghezza indicata dalla percentuale del genitore.
Internet Explorer mantiene un rapporto aspetto corretto, ma non viene ridimensionato correttamente con il relativo genitore.
Il Safari si adatta correttamente con il genitore in larghezza, ma non in altezza. L'altezza, in relazione al contenitore genitore, è in qualche modo impostata al 100%.
Javascript
var menu = Raphael('menu', '100%', '100%');
menu.setViewBox('0', '0', '50', '50', true);
var menu_bg = menu.rect(0,0, 50, 50);
menu_bg.attr({
id : 'menu_bg',
'stroke-width' : '0',
'fill' : '#000'
});
CSS
* {
margin: 0;
padding: 0;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
html, body {
height: 100%;
}
#menu {
width: 50%;
background: #60F;
padding: 2.5%;
}
#menu svg {
display: block;
width: 100%;
height: 100%;
max-height: 100%;
}
#text {
width: 50%;
background: #309;
padding: 2.5%;
color: #FFF;
}
HTML
<div id="menu"></div>
<div id="text">
Filler text
</div>
dal vivo ad esempio può essere visionato a
Grazie per la risposta, ma purtroppo non funziona ancora. :(Avevo impostato preserveAspectRatio su quel valore usando 'paper.setViewBox' di Raphaël e l'ho appena provato usando' paper.canvas.setAttribute ('preserveAspectRatio', 'xMidYMid meet'); 'Come accennato in precedenza, funziona perfettamente in Chrome e Firefox, ma per qualche motivo Safari espande l'altezza del contenitore fino al 100% e Internet Explorer (10) non viene ridimensionato correttamente in relazione al contenitore genitore. – Jason