Я использую поведение перетаскивания d3 на элементе svg, который, возможно, необходимо удалить за пределы видимой области. У меня есть настройка в двух div с переполнением, установленным в auto, чтобы включить прокрутку. У меня это работает только с некоторыми браузерами, но не со всеми.прокрутка при перетаскивании элемента с d3.js
Проблема в том, что в некоторых браузерах вы сможете прокручивать при перетаскивании, но в других окнах не будет прокручиваться при перетаскивании. Я пока не смог найти способ сделать эту работу неизменно.
для рабочего примера см скрипки: http://jsfiddle.net/glanotte/qd5Td/1/
Это работает, как ожидалось на:
хрома - макинтош/окно сафари - макинтош
Но не работает на
Firefox - mac/windows IE - окна
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);
Спасибо, я надеялся, что это всего лишь некоторые простые настройки, что мне не хватало. Но мне нравится твоя работа. Я буду работать над реализацией этого и обновлением в то время. –
Спасибо за сообщение, отличный ответ! –