我的svg上有一条垂直指针跟在鼠标指针之后,但是现在它更新它的位置很慢,这在鼠标快速移动时特别明显.有没有办法减少这种滞后?
当前代码:
svg.on("mousemove", function(d) {
svg.select(".guideline")
.attr("x1", d3.mouse(this)[0]-1)
.attr("x2", d3.mouse(this)[0]-1);
});
svg.on("mouseover", function(d) {
svg.append("line")
.attr("class", "guideline")
.attr("y1", margin[0])
.attr("y2", height+margin[0])
.attr("opacity", originOpacity)
.attr("stroke", "#333")
.attr("pointer-events", "none");
});
svg.on("mouseout", function(d) {
svg.select(".guideline").remove();
});
Run Code Online (Sandbox Code Playgroud)
您在每次鼠标移动时选择该行,而是将该行保留在变量中:
var line = svg.append("line")
.attr("class", "guideline")
.attr("y1", margin[0])
.attr("y2", height+margin[0])
.attr("opacity", 0)
.attr("stroke", "#333")
.attr("pointer-events", "none");
svg.on("mousemove", function(d) {
line
.attr("x1", d3.event.pageX-1)
.attr("x2", d3.event.pageY-1);
});
svg.on("mouseover", function(d) {
line.attr("opacity", originOpacity);
});
svg.on("mouseout", function(d) {
line.attr("opacity", 0);
});
Run Code Online (Sandbox Code Playgroud)