1
我所擁有的是一個SVG(大約300px)內的可拖動行。我的目標是限制線路移動的距離,因此它不會超出我的SVG。我約一小時使用d3,所以任何幫助表示讚賞。D3有界的拖動
我試過使用一些if語句,但他們都沒有工作。這是我的代碼:
var svg = document.getElementById("probabilityDensitySVG");
var drag = d3.behavior.drag()
.on('dragstart', null)
.on('drag', function(d){
var dx = d3.event.dx;
var dy = d3.event.dy;
var x1New = parseFloat(d3.select(this).attr('x1'))+ dx;
var y1New = parseFloat(d3.select(this).attr('y1'));
var x2New = parseFloat(d3.select(this).attr('x2'))+ dx;
var y2New = parseFloat(d3.select(this).attr('y2'));
line.attr("x1",x1New)
.attr("y1",y1New)
.attr("x2",x2New)
.attr("y2",y2New);
}).on('dragend', function(){
});
var line = d3.select(svg)
.append("line")
.attr("x1",100)
.attr("y1",143)
.attr("x2",100)
.attr("y2",370)
.attr("stroke-width",5)
.attr("stroke","black")
.call(drag);
謝謝!這正是我所期待的。語法的一個例子非常有用。 – allegro
@allegro我發現你發佈了另外一個問題,並且你對SO非常熟悉,所以,這裏有一個提示:除非你承認有用的答案,否則人們將停止回答你的問題(我的意思是,這就是我通常所做的)。 –
感謝您的提醒!自從我開始回到SO之後已經有一段時間了。 – allegro