我有一个交互式 SVG 图表,它几乎完全不同于这个简单的 demo\xe2\x80\xa6
\n\n\xe2\x80\xa6除了:
\n\n<text>元素,viewBox, 和理想情况下,我想要相当于vector-effect:non-scaling-stroke(至少在 Webkit 上),但对于font-size. 这样的事情存在吗?如果不是,我最好的选择是计算 viewBox 大小,将其与 结合起来aspectRatio以确定较大的轴,然后使用 JS 操作font-size属性的 CSS 规则?
SVG元素内部实际可见的内容取决于其宽高比,viewBox值和preserveAspectRatio值.
例如,具有相同viewBox值(下面的红色虚线)的相同SVG元素大小可以具有不同的视口(在下面显示为蓝色),具体取决于preserveAspectRatio:

Chrome有一个viewport属性,但在我的使用中它始终是一个空的(所有0值)SVGRect.Firefox没有实现此属性.
该svg.getBBox()方法返回的值,而viewBox不是实际的可见视口内容.
给定对SVG元素的引用,我如何最容易地确定可见内容(视口),用SVG根部的用户坐标表示(与坐标相同viewBox)?