在节点的鼠标悬停上显示自定义工具提示(强制D3图形)

时间:2018-09-10 10:41:36

标签: javascript d3.js

我有一个样本力导向图,如下所示: http://next.plnkr.co/edit/C0n0GZvYpppWjx3R?preview

在此图中,现在我可以使用html的title属性在鼠标悬停时显示节点名称。但这看起来没有希望。

因此,我试图在这里使用https://vmware.github.io/clarity/documentation/v0.11/tooltips

中的自定义工具提示库

(我的项目已经有Clarity库)

但是以某种方式无法正常工作...可能是我无法弄清楚如何将鼠标悬停在html后面:

Lorem

我也可以使用其他自定义工具提示...任何人都可以看到这个。

我尝试过的是: 样式:

div.tooltip {
  position: absolute;
  text-align: center;
  width: 60px;
  height: 28px;
  padding: 2px;
  font: 12px sans-serif;
  background: lightsteelblue;
  border: 0px;
  border-radius: 8px;
  pointer-events: none;
}

var div = d3.select("body").append("div")
    .attr("class", "tooltip")
    .style("opacity", 0);

然后将鼠标悬停在上面:

.on("mouseover", function(d) {
       div.transition()
         .duration(200)
         .style("opacity", .9);
       div.html(formatTime(d.id) + "<br/>" + d.close)
         .style("left", (d3.event.pageX) + "px")
         .style("top", (d3.event.pageY - 28) + "px");
       })

这是我更新的plunkr:http://next.plnkr.co/edit/C0n0GZvYpppWjx3R 工具提示无法正常工作。

1 个答案:

答案 0 :(得分:1)

你在做什么?如@Lazar Nikolic所说,它正常工作

   div.html(formatTime(d.id) + "<br/>" + d.close)
     .style("left", (d3.event.pageX) + "px")
     .style("top", (d3.event.pageY - 28) + "px");
   })

您的数据为{ id : string, group: number }

没有名称为close的字段
没有名称为formatTime的函数

 但是为什么名称是formatTime,您要尝试随机转换日期而不是具有日期的字符串?

如果您更改为

   div.html(d.id + "<br/>" + d.group)
     .style("left", (d3.event.pageX) + "px")
     .style("top", (d3.event.pageY - 28) + "px");
   })

它将起作用

设置您的mouseover并添加mouseout事件以在光标离开后将其隐藏