我尝试在节点旁边添加一些弹出消息,但它看起来像其他任何东西,然后文本svg和图像不能显示附加。
node.append("text")
.attr("dx", 16)
.attr("dy", ".0em")
.text(function(d) { return d.name });
工作并添加文本,但我试图添加一个div,它不可见,node.append(“div”)。这里有什么我想念的吗?我怎样才能轻松获得节点的位置,以便将属性传递给另一个元素。
答案 0 :(得分:6)
您不能将HTML元素放在SVG中的任何位置,您需要将它们放在foreignObject
元素中,请参阅here。如果您将text
元素和foreignObject
同时包含在SVG组(g
元素)中并设置其位置,则它们都应显示在同一位置而无需在两者上设置相同的位置。
答案 1 :(得分:4)
或者,您可以在其自己的div中定义svg之外的html代码。然后使用以下方法按类附加内容:
d3.select("#nytg-tooltip").style('top',ypos+"px").style('left',xpos+"px").style('display','block');
如本例所示:
http://www.nytimes.com/interactive/2012/10/15/us/politics/swing-history.html?_r=0