【发布时间】:2014-11-12 10:09:47
【问题描述】:
我不知道如何相对于其兄弟路径的边界框放置路径。想象一个像窗口一样的盒子,我想在它的右上角放一个关闭按钮。这是转换窗口(缩放 3 倍)后组合在一起的框和关闭按钮:
<g id="group24">
<path id="path24" fill="#00aa00" stroke="#00ff00" stroke-width="4" stroke-miterlimit="10" d="M301,585.08v47h45.834l-0.134-21.8
l12.3-0.2l-1-239H253v216c0,0,22,0.2,22,0c0-41,26-31.357,26-31.357V585.08L301,585.08z" transform="matrix(3,0,0,3,-612,-1003.16)"></path>
<path id="close-button" fill="#B40000" d="M256,232c-13.255,0-24,10.745-24,24s10.745,24,24,24s24-10.745,24-24
S269.255,232,256,232z M265.102,270.277l-8.985-8.984l-8.985,8.985l-4.826-4.829l8.983-8.984l-8.984-8.984l4.829-4.826l8.983,8.982
l8.981-8.983l4.83,4.827l-8.983,8.983l8.984,8.983L265.102,270.277z"></path>
</g>
我只是在将框(动画回调)动态转换到 group24 组后附加按钮,关闭按钮如下所示:
当我得到分组中 path24 元素的边界框并尝试将关闭按钮定位到右上角时:
var p = this.SvgButton.select("path");
var bbox = myBox.getBBox();
var coordString = (bbox.x2 - 10) + " " + (bbox.y);
p.transform("T" + coordString);
坐标总是错误的。如何将关闭按钮定位到浅绿色框的右上角?
我想要实现的一个例子在这里:http://jsfiddle.net/savpm8w3/1/ 请注意,缩放动画在 jsfiddle 中不起作用,这就是 fiddle 中的示例起作用的原因。
【问题讨论】:
-
是否可以放一个基本的jsfiddle来展示它?
-
您好,我添加了一个示例 jsfiddle,我尝试在此处实现的工作(没有转换):jsfiddle.net/savpm8w3/1。由于某种原因,缩放动画在 jsfiddle 中不起作用。我想在动画结束后使用 3 倍缩放的变换主框 (rect1) 来实现这一点。
-
你可能想输出你创建的矩阵,看看是不是你想的那样。出于兴趣,也尝试 getBBox(1) 看看它是否有任何区别,iirc 有类似的东西,如果它的 1 会考虑转换(不过我可能错了!)
标签: coordinates transform bounding-box snap.svg