javascript - D3 捏缩放在 v5 中不起作用,但在 v4 中起作用
问题描述
在 D3v4 上使用两根手指放大我的 mac 上的触摸板:
https://jsfiddle.net/zshktfp9/2/
单击 svg 和缩放就像我期望的那样工作。
但是相同的代码在 v5 中不再适用:
https://jsfiddle.net/zshktfp9/4/
它不再在 svg 内缩放,而是整个浏览器缩放。
我在 Mac 上的 chrome 和 safari 上试过这个,并让一个朋友在 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 pinch-to-zoom 时禁用 ctrl + click 所以我不能不要创建拉取请求。
现在,您可以通过覆盖 filter 函数来解决此问题:
d3.zoom().filter(() => !d3.event.button)...
这恢复了 v4 行为。
推荐阅读
- node.js - 仅当新的 providerId 不存在时才更新 MongoDB 字段值
- python - 如何编码涉及两个输入的斐波那契序列,一个确定规则,另一个确定产生的数字数量?
- javascript - 有没有办法通过 HTML 或 JavaScript 文件声明\初始化 JavaFX 的 FXML 元素?
- javascript - 有没有办法将 XMLHTTPRequest 循环到从同一请求方法的 responseText 中找到的链接数组
- java - 数组中的数字增量
- python - 不可腌制的并行作业库
- javascript - 捕获是否选择了文本
- mysql - 无法在 openshift 4 online realse 上安装 mysql
- postgresql - 无法将应用程序连接到运行 postgresql 的 IIS 服务器
- ssh - Terraform/GCP:未将 ssh 密钥添加到元数据中