d3.js ズームをキャンセル ダブルクリックして拡大し、デフォルトのイベントを防止します

説明

D3.js v5 バージョンを使用して強制ガイド グラフを描画すると、いくつかの関数間で競合が発生します。

  • ノードをクリックしてノード情報を表示します
  • ノードをダブルクリックしてノードの周囲を展開します
  • ダブルクリックすると SVG 画像が拡大します (ズーム)
    ここに画像の説明を挿入

質問

ノードがダブルクリックされると、このノードのダブルクリック イベント、このノードのクリック イベント、および svg 全体のダブルクリック イベントがトリガーされます。

解決

方法 1

バブリングによるノードのダブルクリックイベントにより svg グラフ全体が拡大されることを考慮して、d3.js のイベントバブリングをキャンセルできます。

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

ここに画像の説明を挿入
効果:

  • ノードをクリックしても SVG グラフ全体が拡大されない
  • ノード以外の領域をクリックするとSVGを拡大できます

方法 2

ズーム時のダブルクリック イベントを null にリセットします。
ここに画像の説明を挿入

vue によって導入された d3 ライブラリの d3-zoom.js のコードは次のとおりです。
ここに画像の説明を挿入

効果:

  • SVG 画像全体のダブルクリックズーム機能は無効であるため、ノードをクリックしても SVG 画像が拡大されないだけでなく、他の領域をクリックしても SVG 画像は拡大されません。

おすすめ

転載: blog.csdn.net/Charonmomo/article/details/122428430