d3.js 取消zoom双击放大, 阻止默认事件

本文介绍了使用D3.js v5版本绘制力引导图时遇到的功能冲突问题:单击与双击节点事件及SVG缩放之间的冲突,并提供了两种解决方案,一是阻止事件冒泡,二是禁用SVG的双击缩放功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述

使用 D3.js v5版本绘制了一个力引导图, 有几个功能之间发生了冲突:

  • 单击节点展示节点信息
  • 双击节点以该节点为中心展开
  • 双击导致 svg 图放大 (zoom)
    在这里插入图片描述

问题

双击节点时, 会触发这个节点的双击事件, 这个节点的单击事件, 还有整个svg的双击事件.

解决

方法一

考虑到整个svg图会受节点双击事件影响导致放大, 是由于冒泡导致的, 所以可以取消一下 d3.js 的事件冒泡:

        .on("zooms", function () {
            d3.event.sourceEvent.stopPropagation();
        })

在这里插入图片描述
效果:

  • 点击节点时不会放大整个 svg 图
  • 点击节点以外的其他区域时, svg 可以放大

方法二

将 zoom 中的双击事件重新设置为null:
在这里插入图片描述

vue 引入的 d3 库中, d3-zoom.js 中的代码:
在这里插入图片描述

效果:

  • 整个svg图的双击放大功能失效, 因此不仅点击节点时不会导致svg图放大, 点击其他区域也不会使svg图放大.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Charonmomo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值