jquery - 我如何使用 jquery 在窗口调整大小时缩放 Raphael js 元素

标签 jquery svg raphael html5-canvas

如何在窗口更改时重新缩放 Raphael Canvas 内的所有元素?

考虑以下代码/DEMO如果我只调整窗口大小,因为我将其宽度设置为窗口宽度的 50%,并且没有 (rectcircle路径)更改

代码

<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);

最佳答案

如果您使用 Raphaël 版本 2.0 或更高版本,替代方法是调用 paper.setViewBox设置坐标系,然后让浏览器自动处理大小调整。

更新: 好吧,事实证明 Raphaël 的自动扩展性比我想象的要差一些......无论如何,这里有一个 example (raphaël 仍然在根 上设置绝对宽度/高度,因此需要删除它们才能进行正常的 svg 缩放)。然后尺寸由 CSS 决定,并且 svg 正好适合给定的区域。可以调整它来处理溢出的内容,这种情况可能是由于 svg viewBox 宽高比与它所在的 CSS 框不匹配而发生的。您可以通过向根 svg 元素添加 preserveAspectRatio 属性来实现此目的。

您可以阅读有关可在 svg preserveAspectRatio 属性 here 上设置的值的更多信息。 ,但可能感兴趣的三个值是 'none' (用于挤压/拉伸(stretch)以适应给定的任何矩形)、'xMidYMid slice' (放大到填充矩形,如果方面不匹配,可能会剪掉一些部分),'xMidYMid meet'(这是默认值,与根本不指定 pAR 相同,意味着内容将居中如果方面不匹配,则会向一个方向溢出)。

关于jquery - 我如何使用 jquery 在窗口调整大小时缩放 Raphael js 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11176396/

相关文章:

ajax 第一次加载页面时起作用

text - SVG 文本 anchor 左上角

javascript - 如何使用 Snap.SVG 和 Javascript 将一组 SVG 形状居中

javascript - 为什么这个jQuery click函数不起作用?

javascript - 为什么我不能将 ES6 模板文字与 .css() 方法一起使用?

html - 如何将 svg 填充效果应用于 div 类?

javascript - 是否可以将 SVG 作为 <svg> 标签导入而不复制粘贴 SVG 代码?

javascript - raphaeljs 对象的可点击区域更大

javascript - Raphael js无法通过引用div创建 Canvas

javascript - 动态添加 <ul> 未触发点击事件