如何在窗口更改时重新调整Raphael
画布中的所有元素?
考虑以下代码/ 演示,如果我重新调整窗口大小,则只有div container
会缩放,因为我将其宽度设置为窗口宽度的50%,而(rect
,circle
或path
)没有任何变化。
代码
<div id="container"></div>
#container{border : 1px solid black ;
width : 50% ;
height:300px}
var con = $("#container");
var paper = Raphael(con.attr('id'), con.attr('width'), con.attr('height'));
var win = paper.rect(0,0,400,300).attr({stroke: 'black' }) ;
var path = paper.path("M 200 100 l 100 0 z") ;
var cir = paper.circle(50, 50, 40);
paper.setSize(300, 200);
到你的小提琴中即可看到它立即扩展。然而要注意,setViewBox()
只有一个布尔参数用于缩放,因此没有公开所有SVG缩放选项。但是,您可以在事后轻松分配不同的选项,例如:paper.canvas.setAttribute('preserveAspectRatio', 'xMidYMid meet');
- mklement0width
和height
属性的需要 - 缩放可以跨浏览器依赖于那个,即使显式属性存在。我已经分叉了你的示例,并在这里添加了更多评论:http://jsfiddle.net/mklement/7rpmH/ 为了更好地进行跨浏览器测试,我还通过显式指定拉伸/收缩而不保持宽高比(preserveAspectRatio='none'
)解决了Raphael的一个bug。然后在当前版本的Chrome、Safari、FF、Opera中工作 - 不幸的是,效果有所不同 - 请参见示例。 - mklement0