d3js追加div

时间:2012-07-04 05:05:54

标签: d3.js

我尝试在节点旁边添加一些弹出消息,但它看起来像其他任何东西,然后文本svg和图像不能显示附加。

  node.append("text")
      .attr("dx", 16)
      .attr("dy", ".0em")
      .text(function(d) { return d.name });

工作并添加文本,但我试图添加一个div,它不可见,node.append(“div”)。这里有什么我想念的吗?我怎样才能轻松获得节点的位置,以便将属性传递给另一个元素。

2 个答案:

答案 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

enter image description here