SVG定位
我正在玩SVG,并且在定位时遇到了一些问题。 我有一系列g
组标签中包含的形状。 我希望像容器一样使用它,所以我可以设置它的x位置,然后该组中的所有元素也将移动。 但这似乎不可能。
- 大多数人如何定位一系列你想要一起移动的元素?
- 有没有相对定位的概念? 例如相对于其父母
g元素中的所有元素都相对于当前的变换matrix进行定位。
要移动内容,只需将转换放在g元素中:
<g transform="translate(20,2.5) rotate(10)"> <rect x="0" y="0" width="60" height="10"/> </g>
链接:来自SVG 1.1规范的 示例
有一个较短的select前一个答案。 SVG元素也可以通过嵌套svg元素进行分组:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg x="10"> <rect x="10" y="10" height="100" width="100" style="stroke:#ff0000;fill: #0000ff"/> </svg> <svg x="200"> <rect x="10" y="10" height="100" width="100" style="stroke:#009900;fill: #00cc00"/> </svg> </svg>
两个矩形是相同的(除了颜色),但父svg元素有不同的x值。
正如在其他评论中提到的那样, g
元素的transform
属性就是你想要的。 使用transform="translate(x,y)"
移动g
内的内容将相对于g
移动。
有两种方法可以组合多个SVG形状并定位组:
像Aaron写的那样,首先将<g>
和transform
属性一起使用。 但是你不能在<g>
元素上使用x
属性。
另一种方法是使用嵌套的<svg>
元素。
<svg id="parent"> <svg id="group1" x="10"> <!-- some shapes --> </svg> </svg>
这样,#group1 svg嵌套在#parent中, x=10
是相对于父svg的。 但是,不能在<svg>
元素上使用transform
属性,这与<g>
元素相反。