表示領域の外にドロップする必要がある可能性のある svg 要素で d3 のドラッグ動作を使用しています。スクロールを有効にするためにオーバーフローを自動に設定して、2 つの div 内にセットアップしました。これは一部のブラウザでのみ機能しますが、すべてではありません。
問題は、一部のブラウザーではドラッグ中にスクロールできるが、他のブラウザーではドラッグ中にウィンドウがスクロールしないことです。私はまだこれを一貫して機能させる方法を見つけることができませんでした。
実際の例については、フィドルを参照してください: http://jsfiddle.net/glanotte/qd5Td/1/
これは期待どおりに機能しています:
クロム - mac/windows safari - mac
しかし、取り組んでいない
Firefox - Mac/Windows IE - Windows
html:
<div id="outerFrame">
<div id="innerFrame">
<svg width="600" height="600">
</svg>
</div>
</div>
CSS:
#outerFrame{
width: 300px;
height: 300px;
border: 1px solid red;
overflow: auto;
}
#innerFrame{
width: 600px;
height: 600px;
background-color: lightgrey;
}
JavaScript:
var drag = d3.behavior.drag()
.on("dragstart", dragstart)
.on("drag", dragmove)
.on("dragend", dragend);
function dragstart() {
d3.select(this).style("border", "1px solid red");
}
function dragmove(d) {
var coordinates = d3.mouse(d3.select("svg").node());
d3.select(this).attr({
x: coordinates[0] - 50,
y: coordinates[1] - 25
})
}
function dragend() {
d3.select(this).style("border", null);
}
d3.select("svg")
.append("rect")
.attr({x: 100, y: 100, width: 100, height: 50})
.call(drag);