在鼠标悬停时使用d3.js时,工具提示未显示在元素顶部

时间:2018-12-21 00:58:32

标签: javascript asp.net-mvc d3.js graph

我有一个使用d3.js的工具提示

这是我的工具提示声明

var tooltip = d3.select("body")
                    .append("div")
                    .style("position", "absolute")
                    .style("z-index", "10")
                    .style("visibility", "hidden")
                    .style("background", "white")
                    .style("text-align", "center")
                    .style("font-size", "15px")
                    .attr("class", "shade")
                    .text("a simple tooltip");

我的CSS:

 .shade {
          border: 1px solid #e6e6e6;
          padding: 10px;
          box-shadow: 3px 2px #888888;
          width:90px;
          height:80px;
          text-align:center;
}

事件:

state.selectAll("rect")
                      .data(function (d) { return d.ages})
                      .enter().append("rect")
                      .attr("width", x1.rangeBand())
                      .attr("x", function (d) { return x1(d.name); })
                      .attr("y", function (d) { return y(d.value); })
                      .attr("height", function (d) { return height - y(d.value); })
                      .style("fill", function (d) { return color(d.name); })
                      .on("mouseover", function (d) {

                              tooltip.text("")
                              var tooltext = tooltip.append('label')
                              tooltext.text(d.name).attr("class","middleText")
                              tooltip.append("br")
                              var labeltooltip = tooltip.append('label').attr('class', GetColor(d.name))
                              labeltooltip.text(d.value)

                          return tooltip.style("visibility", "visible");
                      })
                      .on("mousemove", function () { return tooltip.style("top", (d3.event.pageY - 10) + "px").style("left", (d3.event.pageX + 10) + "px"); })
                      .on("mouseout", function () {

                          return tooltip.style("visibility", "hidden");
                      });

此代码运行良好,但是我的问题是发生悬停事件时鼠标指针旁边显示的工具提示。

我也尝试更改以下内容:

 .on("mousemove", function () { return tooltip.style("top", d + "px").style("left", d + "px"); })

但同样,我没有运气。

我的问题是,是否有可能在发生鼠标悬停事件的每个元素的top上移动光标?

预先感谢

1 个答案:

答案 0 :(得分:1)

如果我对您的理解正确,那么您需要这样的东西:

.on("mousemove", function () { 
  return tooltip.style("top", this.getBBox().y + "px").style("left", this.getBBox().x + "px"); 
});