【发布时间】:2017-11-07 21:39:21
【问题描述】:
SVG 属性viewBox似乎不一致。 似乎它不会以相同的方式缩放所有 SVG 图形基元。这是一个示例 SVG 文件,其中包含一个矩形、一个circle、一个polyline 和一个polygon。矩形已正确缩放并几乎填满了视口(@987654327@ 为 500,height 为 500)。
请查看下面生成的 SVG 代码和图像。您会注意到polyline、polygon 和circle 没有缩放以填充视口。它们确实(始终)占据了视口的左上角四分之一(移动但保留了原始大小)。任何人都可以解释一下这是怎么回事吗?非常感谢您的反馈。
<?xml version='1.0' encoding='utf-8'?>
<svg version='1.1' xmlns='http://www.w3.org/2000/svg'
xmlns:xlink='http://www.w3.org/1999/xlink'
height='499' width='501' viewBox='100 100 200 200'>
<g stroke='BLACK' stroke-width='5' fill='none'>
<rect x='105' y='105' width='193' height='193'/>
<polygon points="150,100 200,200 100,200" style="stroke:purple" />
<polyline points='115,180 155,127 180,180' stroke='red'/>
<circle cx='150' cy='150' r='50' stroke='green'/>
</g>
</svg>
【问题讨论】:
-
也许你可以解释一下为什么你认为半径为 50 的圆应该填充宽度和高度为 200 的 viewBox?
-
193 x 193 矩形填充 500 x 500 视口的原因相同。这是我的理解(如果我错了,请纠正)。 viewBox 的内容总是缩放以填满视口。
-
矩形的宽度接近 200,因为 193 距离 200 不远。圆的宽度为 100,半径为 50 = 直径为 100。 100 作为一个接近 200 的数字并不广为人知。
-
是的,200 x 200 的 viewBox 尺寸会缩放以填充 501 x 499 的视口。这意味着 200 个用户单位宽的东西变成 501px 宽。小东西变小,大东西变大。
标签: svg viewport scaling viewbox