Я решил использовать библиотеку javascript Raphaël из-за ее обширной поддержки браузерами, но у меня возникли проблемы с правильным отображением SVG в любом браузере, кроме Chrome и Firefox. Я уже некоторое время ломаю голову над этим и хотел бы услышать, как заставить SVG работать в адаптивном макете.
Chrome и Firefox отображают SVG именно так, как мне хотелось бы. Он масштабируется равномерно, поддерживает правильное соотношение сторон и процент родительского элемента при заданной ширине.
Internet Explorer поддерживает правильное соотношение сторон, но неправильно масштабируется со своим родителем.
Safari корректно масштабируется с родителем по ширине, но не по высоте. Высота по отношению к родительскому контейнеру каким-то образом установлена на 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>
Живой пример можно посмотреть по адресу