1
我有一个svg
元素,其中高度和宽度均等于100%,并具有已定义的viewbox
属性。 svg
包含一系列的polygon
对象。在点击一个多边形时,我希望它扩大以填充整个svg
(阅读:整个屏幕)。获取svg视框的x最大值
我可以访问svg
元素尺寸并相应地调整polygon
的大小,但是由于viewbox
属性的原因,绘制宽度会变得很短。
有什么方法可以计算视图框内对应最右边的x尺寸?
我有一个svg
元素,其中高度和宽度均等于100%,并具有已定义的viewbox
属性。 svg
包含一系列的polygon
对象。在点击一个多边形时,我希望它扩大以填充整个svg
(阅读:整个屏幕)。获取svg视框的x最大值
我可以访问svg
元素尺寸并相应地调整polygon
的大小,但是由于viewbox
属性的原因,绘制宽度会变得很短。
有什么方法可以计算视图框内对应最右边的x尺寸?
您想要的最大X值将是viewBox的最大值X,您可以通过添加viewBox minX
+ viewBox width
来计算该值。
我觉得还有比这更多的(可能是一个涉及的系数) - minX + viewbox宽度到达g元素的边界边缘,而不是实际的svg。认为这是与纵横比以及如何决定svg的偏移量有关。改变了我的方法,发现了更多可行的方法。不管怎么说,还是要谢谢你。 – Nathan
好的,你没有清楚地说明你正在处理preserveAspectRatio等。这很难,因为SVG并不真正了解它所在的容器的形状 - 而且应该不太在意。 viewBox是为了描述文档的边界 - 或者至少是你感兴趣的边界。如果你在外面绘图,那么你应该更新viewBox来匹配。 –
是的,我没有意识到它保存了AspectRatio在我发布之前一直参与 - 这导致找到一种更好的方式来实现我所需要的,无需测量 – Nathan