D3鼠标滚轮变焦方向

时间:2016-07-20 11:58:15

标签: javascript d3.js scroll zoom zooming

我试图在d3.js中创建一些自定义缩放功能。目前,只需单击即可触发缩放,并放大以仅关注单击的区域。

目前我的代码有function zoom(d),可以完全满足需要。还有一个var zoomTransition驻留在zoom()内部,负责大部分功能。很遗憾,我无法分享我的大部分代码。

鼠标滚动也需要进行缩放。我遇到的困难是:

        .on("wheel", function(d){
            zoom(d);
        });

忽略滚轮方向。调用缩放只是因为滚轮滚动或滚动。

有什么方法可以访问滚动方向并将其传递给zoom()?或者更好的方法吗?

2 个答案:

答案 0 :(得分:4)

正在寻找:

.on("wheel", function(d){
            var direction = d3.event.wheelDelta < 0 ? 'down' : 'up';
            zoom(direction === 'up' ? d : d.parent);
        });

j3比d3更多,但这就是你访问滚轮信息的方式。

答案 1 :(得分:2)

d3具有您可能觉得有用的缩放行为。

示例代码:

 var zoom = d3.behavior.zoom()
        .scaleExtent([0, 10])
        .on("zoom", redraw); //if you are sure that your zoom function is working just replace redraw with your zoom function


function redraw() {
    return svg.attr("transform", "translate(" + d3.event.translate + ")" + " scale(" + d3.event.scale + ")");
}

完整示例:

http://bl.ocks.org/mbostock/2206340