【问题标题】:scaling svg to parent container将 svg 缩放到父容器
【发布时间】:2021-06-10 01:16:50
【问题描述】:

我正在使用 svg.js 在画布上画线。是否可以将通过调用 SVG() 创建的 svg 元素缩放到父元素的大小?截至目前,我只是在元素调整大小时重新绘制所有线条。

<div
  ref={r => this.whiteboard = r}
  id="whiteboard"
  >
</div>
{...}
let { offsetWidth: width, offsetHeight: height } = this.whiteboard;
this.draw = SVG('whiteboard').size(width, height);

我正在使用 React,我知道它很难与 svg.js 混合,但这是另一个话题。

【问题讨论】:

标签: javascript svg svg.js


【解决方案1】:

使用 SVG.ViewBox

http://svgjs.dev/geometry/#svg-viewbox

例如:

this.draw = SVG('whiteboard').size(width, height).viewbox(0,0,500,300);

您传递的实际值将取决于您正在绘制的内容以及它在画布上的位置。 viewBox() 参数为:minX、minY、宽度和高度。

【讨论】:

  • 获取“TypeError:this.draw.viewBox 不是函数”。该方法实际上是viewbox。一切都在缩放,但随着父级调整大小,它们也在移动。例如最初在角落里有一个正方形。随着父代变小,正方形变小,但它也向右平移。
  • 抱歉打错了。我已经确定了我的答案。小了怎么办?贴一个例子。该行为可能是正确的,具体取决于您如何调整父级的大小。 [了解 viewBox 和 preserveAspectRatio 的工作原理,](w3.org/TR/SVG/single-page.html#coords-ViewBoxAttribute)
  • 这是正确答案。如果您需要缩放或平移 svg 的可见区域,请使用 viewbox。了解更多的好文章是justinmccandless.com/post/making-sense-of-svg-viewboxs-madness
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多