有没有办法减少鼠标指针后面的指南滞后?

Jim*_*y C 5 svg d3.js

我的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)

met*_*ion 3

您在每次鼠标移动时选择该行,而是将该行保留在变量中:

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)