3
我正在使用d3的svg元素上的拖動行爲,可能需要將svg元素拖放到可見區域之外。我將它設置在兩個div中,溢出設置爲auto以啓用滾動。我只有一些瀏覽器,但不是全部。使用d3.js拖動元素時滾動
問題是,在某些瀏覽器中,您可以在拖動時滾動,但在其他瀏覽器中,拖動時窗口不會滾動。我至今還無法找到一種使這項工作始終如一的方法。
的工作示例看到小提琴:http://jsfiddle.net/glanotte/qd5Td/1/
這是工作的預期:
鉻 - MAC /窗 野生動物園 - MAC
但不工作的
火狐 - 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);
謝謝你,我希望這只是我是缺少一些簡單的設置。但我喜歡你的工作。我將在當時致力於實施和更新。 –
感謝帖子,很好的回答! –