D3 鼠标滚轮缩放方向

xan*_*key 4 javascript scroll zooming d3.js

我正在尝试在 d3.js 中创建一些自定义缩放功能。目前缩放是通过单击触发并放大以仅关注被点击的区域。

目前我的代码有一个function zoom(d)完全符合它需要的。还有一个var zoomTransition位于 zoom() 内部,负责大部分功能。不幸的是,我无法分享我的大部分代码。

缩放也需要发生在鼠标滚动上。我遇到的困难是:

        .on("wheel", function(d){
            zoom(d);
        });
Run Code Online (Sandbox Code Playgroud)

忽略滚轮方向。之所以调用 Zoom 只是因为滚轮滚动,无论是向内还是向外。

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

xan*_*key 10

一直在找这个:

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

javascript 比 d3 更重要,但这就是您访问滚轮信息的方式。


eko*_*eko 5

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 + ")");
}
Run Code Online (Sandbox Code Playgroud)

完整示例:

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