SVG 元素<line>
、<circle>
、<rect>
和允许根据视口通过 x 和 y 进行定位<text>
。<image>
此外,它们也可以相对定位。有什么办法可以做到这一点,而<polygon>
不是将它包装在一个<svg>
? <polygon>
, , 最接近的替代品<path>
也有这个...问题。
问问题
3949 次
2 回答
6
根据@Michael Mullany 的出色评论,我能够找到解决该问题的方法。通过将多边形或路径放在<defs>
标签旁边,它可以稍后在<use>
标签中使用。该<use>
标签允许设置 x 和 y 属性,其功能与其他简单形状的属性相同,如<line>
, <circle>
, <rect>
,<text>
<svg width="100%" height="100%">
<defs >
<path id="Triangle"
d="M 1 1 L 200 1 L 100 200 z"
fill="orange"
stroke="black"
stroke-width="3" />
</defs>
<use x="33%" y="33%" xlink:href="#Triangle"/>
<use transform="scale(-1)" x="-66%" y="-66%" xlink:href="#Triangle"/>
</svg>
能够通过将 的宽度和高度属性设置<use>
为百分比来动态缩放形状会很好,但它仍然可以通过变换进行缩放。
于 2013-11-05T21:47:00.583 回答
0
使用转换(平移、旋转、缩放),这是正确的方法。
其他形状允许您使用由 x,y 坐标定义的点,因为这只是形状定义的一部分(即如何定义圆,您需要中心点和半径)。
理论上你可以使用它的边界框定位一个元素,但是边界框不是“可设置的”(没有setBBox
方法),只有getBBox()
于 2013-11-05T14:02:05.867 回答