触发d3.drag事件时无法滚动父div

时间:2018-10-23 19:19:50

标签: javascript d3.js

我正在尝试使用d3在触摸设备上实现可拖动(左或右)折线图。因此,问题在于我将此折线图放在可滚动的div元素中,随着d3.drag事件触发,父div的滚动被触发。 有什么解决方案或建议吗?

    var svg = d3.select("svg"),
    width = +svg.attr("width"),
    height = +svg.attr("height"),
    radius = 32;

var circles = d3.range(20).map(function() {
  return {
    x: Math.round(Math.random() * (width - radius * 2) + radius),
    y: Math.round(Math.random() * (height - radius * 2) + radius)
  };
});

var color = d3.scaleOrdinal()
    .range(d3.schemeCategory20);

svg.selectAll("circle")
  .data(circles)
  .enter().append("circle")
    .attr("cx", function(d) { return d.x; })
    .attr("cy", function(d) { return d.y; })
    .attr("r", radius)
    .style("fill", function(d, i) { return color(i); })
    .call(d3.drag()
        .on("start", dragstarted)
        .on("drag", dragged)
        .on("end", dragended));

function dragstarted(d) {
  d3.select(this).raise().classed("active", true);
}

function dragged(d) {
  d3.select(this).attr("cx", d.x = d3.event.x).attr("cy", d.y = d3.event.y);
}

function dragended(d) {
  d3.select(this).classed("active", false);
}

demo code

我认为d3.drag.filter可以实现此行为。但是我无法确定用户是否要滚动页面或滑动图表。

0 个答案:

没有答案