我选择使用 Raphaël javascript 库以获得广泛的浏览器支持,但我无法让 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>
可以在以下位置查看实时示例