我正在创建一个散点图,其中的点有时会相互重叠。将鼠标悬停在任何这些点上时,工具提示都会闪烁或有时不显示。有人可以帮我吗?
dots.on("mouseenter", function(d) {
d3.select(this).attr({
r: radius * 2
});
d3.selectAll(".crosshair")
.style("display", "block");
var xCoord = d3.mouse(this)[0];
var yCoord = d3.mouse(this)[1];
addCrossHair(xCoord, yCoord);
tooltipDiv
.style("top", (d3.event.pageY + 2) + "px")
.style("left", (d3.event.pageX - 28) + "px")
.style("opacity", 0.9)
.style("display", "block")
.html(content);
});
dots.on("mouseout", function(d) {
d3.select(this).attr({
r: radius
});
d3.selectAll(".crosshair")
.style("display", "none");
tooltipDiv.transition()
.duration(100)
.style("display", "none");
});
//tooltip //
var tooltipDiv = d3.select("#scatterChart")
.append("div")
.attr("class", "d3-tip n")
.style("opacity", 0)
.style("position","fixed")
.style("display", "block")
.style("top", 100)
.style("left", 100)
.style("pointer-events","none");
//crossHair//
function addCrossHair(xCoord, yCoord) {
if(!xCoord || !yCoord){ // don't draw cross hair if no valid coordinates given
return;
}
d3.select("#h_crosshair")
.attr("x1", 0)
.attr("y1", yCoord)
.attr("x2", width)
.attr("y2", yCoord)
.style("display", "block");
d3.select("#v_crosshair")
.attr("x1", xCoord)
.attr("y1", 0)
.attr("x2", xCoord)
.attr("y2", height)
.style("display", "block");
}
Run Code Online (Sandbox Code Playgroud)
我得到了上述问题的解决方案。鼠标移出时,提供给工具提示的持续时间会导致闪烁问题。
dots.on("mouseout", function(d) {
d3.select(this).attr({
r: radius
});
d3.selectAll(".crosshair")
.style("display", "none");
tooltipDiv.transition()
.style("display", "none");
});
Run Code Online (Sandbox Code Playgroud)
在删除工期(100)时,解决了上述问题。