【发布时间】:2020-01-17 06:06:22
【问题描述】:
我画了一条连接可拖动 div 的线。但是,当 div 被拖动时,这条线失去了它的源点和目标点(即从一个 div 到另一个 div)。我的目标是以这样的方式设置线,它不应该从任何 div 中丢失其边缘,并且无论我在哪里拖动 div,它都会动态更新自身,即高度、旋转、位置。
抱歉英语不好。请帮忙.....! 这是我的代码
var coordinates = function(element) {
element = $(element);
var top = element.position().top;
var left = element.position().left;
//--------------line------------------------------
var length = Math.sqrt(((left) * (left)) + ((top) * (top)));
var angle = Math.atan2(top, left) * 180 / Math.PI;
var transform = 'rotate(' + angle + 'deg)';
$('#results').text('X: ' + left + ' ' + 'Y: ' + top).attr('style', 'margin-left:' + left + 'px');
//$('#line1').attr('style', "margin-left:"+left+"px;margin-top:"+top+"px;height:"+(parseInt(100+top))+"px;transform:"+transform+";width:"+length+"px;");
$('#line1').attr('style', "transform:" + transform + ";height:" + length + "px;");
}
//alert($('#box1').position().top);
$('#box1').draggable({
start: function() {
coordinates('#box1');
},
stop: function() {
coordinates('#box1');
}
});
$('#box2').draggable({
start: function() {
coordinates('#box2');
},
stop: function() {
coordinates('#box2');
}
});
.box {
border: 1px solid black;
background-color: #ccc;
width: 100px;
height: 100px;
position: absolute;
}
.line {
width: 1px;
height: 100px;
background-color: black;
position: absolute;
}
#box1 {
top: 0;
left: 0;
}
#box2 {
top: 200px;
left: 0;
}
#box3 {
top: 250px;
left: 200px;
}
#line1 {
top: 100px;
left: 50px;
/*transform: rotate(222deg);
-webkit-transform: rotate(222deg);
-ms-transform: rotate(222deg);*/
}
#line2 {
top: 220px;
left: 150px;
height: 115px;
transform: rotate(120deg);
-webkit-transform: rotate(120deg);
-ms-transform: rotate(120deg);
}
<div class="box" id="box1"></div>
<div class="box" id="box2"></div>
<div class="line" id="line1"></div>
<div id="results">test</div>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
【问题讨论】:
-
你可以用画布来做这个吗?
-
很遗憾没有,我已经向客户提供了画布或 svg 但他拒绝了。
标签: javascript jquery html css