在我的 Mac 上使用两根手指在触摸板上缩放适用于 D3v4:
https://jsfiddle.net/zshktfp9/2/
点击 svg 和缩放效果如我所料。
但是相同的代码在 v5 中不再有效:
https://jsfiddle.net/zshktfp9/4/
它不再在 svg 内缩放,而是整个浏览器缩放。
我在 chrome 和 mac 上的 safari 上试过这个,让一个 friend 在 windows chrome 上测试过,同样的功能中断发生在 v4 和 v5 之间。
var zoom = d3.zoom()
.scaleExtent([1, 10])
.on("zoom", function() { grp.attr("transform", d3.event.transform) });
svg.call(zoom);
据我所知,我没有发现我应该在 v5 中做些不同的事情。有没有我遗漏的东西,或者这是 D3.js 中的错误?
最佳答案
我认为这可能是一个错误,所以我提交了 https://github.com/d3/d3-zoom/issues/204 - 我不确定如何在启用 mac 捏合缩放时禁用 ctrl + 单击,因此我无法创建拉取请求。
现在你可以通过覆盖过滤器函数来解决这个问题:
d3.zoom().filter(() => !d3.event.button)...
恢复 v4 行为。
关于javascript - D3 双指缩放在 v5 中不起作用,但在 v4 中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59972769/