2013-10-11 49 views
0

一个新手问题。正如我在之前的文章中解释的那样,我从Flash中加入了ActionScript的期望和误解来到SVG Land。设置组的位置

我已经使用D3构建了一个交互式图形,而且我几乎完成了,除了我想添加一个弹出式小框,当用户将鼠标悬停在某个状态上时显示。现在看来标记为“西弗吉尼亚”在舞台左侧的静态对象:

http://www.50laboratories.com/miscellany/demographicclout2.html

弹出是一个有自己独特的ID一组。我需要能够设置它的x和y位置取决于状态悬停,但到目前为止不能弄清楚如何。在我看来,我应该能够在JavaScript中处理一个组,就像我在Flash中的一个已命名的影片剪辑一样,但访问这样的API参考,https://github.com/mbostock/d3/wiki/API-Reference,我没有看到对组对象的方法和属性的引用。在此先感谢您的帮助。

+0

所以,如果我正确地理解你,你想要一些工具提示。那么在[this](https://groups.google.com/forum/#!msg/d3-js/-1oLMKUez3M/g3UjfyvKQIsJ)谷歌小组讨论中已经有相当多的关于这个话题的讨论(它有很多其中的例子的链接)。 – user1614080

+0

看起来很有希望。有趣的是,我从来没有把它们当作工具提示,但是,是的,这基本上就是它们。我将在接下来的几天内调查这些链接。谢谢。 –

回答

0

与actionscript不同,svg元素是dom节点,操纵它们涉及设置它们的属性或样式属性。您可以通过调用dom节点的某些属性/样式设置器来操作这些属性,但由于您使用的是d3,因此您可以使用d3的setter设置这些属性/样式。

来定位元件与D3是 1选择它,由用户分配它 2.设置其transform属性translate([some-x], [some-y])

d3.select("#statepopup").attr("transform", "translate(50,100)"); 

P.S.该ID的方式 transform属性也是您如何缩放和旋转组的方式。

+0

谢谢。我以前有过transform属性的经验。在部分D3-ified SVG之前,我尝试通过transform属性在条形图中设置条的高度和位置。即使在发布这个问题后,我完全无法获得正确的同步缩放和定位。所以在我了解到使用D3之后,我放弃了直接SVG方法,我可以像设置ActionScript那样设置高度,x和y attibutes。因为在这种情况下,我只是定位而不是缩放,我不应该有任何麻烦。 –