D3 鼠标滚轮缩放方向
D3 mousewheel zoom direction
我正在尝试在 d3.js 中创建一些自定义缩放功能。目前,缩放是通过单击触发的,并放大以仅关注单击的区域。
目前我的代码有一个 function zoom(d)
可以完全满足它的需要。还有一个 var zoomTransition
位于 zoom() 内部,负责大部分功能。很遗憾,我无法分享我的大部分代码。
缩放也需要在鼠标滚动时发生。我遇到的困难是:
.on("wheel", function(d){
zoom(d);
});
无视滚轮方向。调用 Zoom 只是因为滚轮向内或向外滚动。
有什么方法可以访问滚动方向并将其传递给 zoom()?或者更好的方法来做到这一点?
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 + ")");
}
完整示例:
正在寻找这个:
.on("wheel", function(d){
var direction = d3.event.wheelDelta < 0 ? 'down' : 'up';
zoom(direction === 'up' ? d : d.parent);
});
比 d3 更 javascript,但这就是您访问滚轮信息的方式。
我正在尝试在 d3.js 中创建一些自定义缩放功能。目前,缩放是通过单击触发的,并放大以仅关注单击的区域。
目前我的代码有一个 function zoom(d)
可以完全满足它的需要。还有一个 var zoomTransition
位于 zoom() 内部,负责大部分功能。很遗憾,我无法分享我的大部分代码。
缩放也需要在鼠标滚动时发生。我遇到的困难是:
.on("wheel", function(d){
zoom(d);
});
无视滚轮方向。调用 Zoom 只是因为滚轮向内或向外滚动。
有什么方法可以访问滚动方向并将其传递给 zoom()?或者更好的方法来做到这一点?
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 + ")");
}
完整示例:
正在寻找这个:
.on("wheel", function(d){
var direction = d3.event.wheelDelta < 0 ? 'down' : 'up';
zoom(direction === 'up' ? d : d.parent);
});
比 d3 更 javascript,但这就是您访问滚轮信息的方式。