线条 SVG 动态
Line SVG dynamic
我正在尝试在移动对象时重新绘制线条。
我已经有了线的起点和终点 x 和 y (x1, y1, x2, y2),但我无法在拖动事件中重新绘制线。
下面是代码和 link jsFiddle:
https://jsfiddle.net/rafaelcb21/vtga3119/2/
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-2.2.1.min.js"></script>
<script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<style>
body {
padding:0px;
margin:0px;
width: 3300px;
height: 5000px
}
svg {
position:absolute;
width:100%;
height:100%;
top:0px;
z-index:-1;
}
.table {
position:absolute;
cursor:pointer;
border-top: solid 1px;
}
.table.node2 {
left: 353px;
top: 383px;
}
.td {
padding-top: 0px;
padding-bottom: 0px;
padding-left: 7px;
padding-right: 7px;
border-style: solid;
border-top-width: 0px;
border-bottom-width: 1px;
border-left-width: 1px;
border-right-width: 1px;
}
</style>
</head>
<body>
<div class='table node1'>
<div class='td' id='Table_1'>Table_1</div>
<div class='td' id='test_11'>test_1</div>
<div class='td' id='test_12'>test_2</div>
<div class='td' id='test_13'>test_3</div>
<div class='td' id='test_14'>test_4</div>
</div>
<div class='table node2'>
<div class='td' id='Table_2'>Table_2</div>
<div class='td' id='test_21'>test_1</div>
<div class='td' id='test_22'>test_2</div>
</div>
<svg>
<line id='test_13_test_21' style='stroke:rgb(255,0,0)'></line>
</svg>
<script>
$(".node1").draggable(
{
drag: function(){
//OUT
var test_13= $("#test_13");
var test_13_position = test_13.offset();
test_13_position_top_y = test_13_position.top + 9
test_13_position_left_x = test_13_position.left + test_13.width() + 15;
}
});
$(".node2").draggable(
{
drag: function(){
//IN
var test_21= $("#test_21");
var test_21_position = test_21.offset();
test_21_position_top_y = test_21_position.top + 9
test_21_position_left_x = test_21_position.left + 1;
}
});
//OUT
var test_13= $("#test_13");
var test_13_position = test_13.offset();
test_13_position_top_y = test_13_position.top + 9
test_13_position_left_x = test_13_position.left + test_13.width() + 15;
//IN
var test_21= $("#test_21");
var test_21_position = test_21.offset();
test_21_position_top_y = test_21_position.top + 9
test_21_position_left_x = test_21_position.left + 1;
//LINE
$('#test_13_test_21').attr({
'x1': test_13_position_left_x,
'y1': test_13_position_top_y,
'x2': test_21_position_left_x,
'y2': test_21_position_top_y
});
</script>
</body>
</html>
这里您正在计算线的新坐标,但没有将它们分配给线元素的 x1,y1,x2,y2
属性。试试更新后的 fiddle
在node1拖拽事件中使用$('#test_13_test_21').attr({x1:test_13_position_left_x,y1:test_13_position_top_y})
并在节点 2 $('#test_13_test_21').attr({x2:test_21_position_left_x,y2:test_21_position_top_y})
我正在尝试在移动对象时重新绘制线条。
我已经有了线的起点和终点 x 和 y (x1, y1, x2, y2),但我无法在拖动事件中重新绘制线。
下面是代码和 link jsFiddle:
https://jsfiddle.net/rafaelcb21/vtga3119/2/
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-2.2.1.min.js"></script>
<script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<style>
body {
padding:0px;
margin:0px;
width: 3300px;
height: 5000px
}
svg {
position:absolute;
width:100%;
height:100%;
top:0px;
z-index:-1;
}
.table {
position:absolute;
cursor:pointer;
border-top: solid 1px;
}
.table.node2 {
left: 353px;
top: 383px;
}
.td {
padding-top: 0px;
padding-bottom: 0px;
padding-left: 7px;
padding-right: 7px;
border-style: solid;
border-top-width: 0px;
border-bottom-width: 1px;
border-left-width: 1px;
border-right-width: 1px;
}
</style>
</head>
<body>
<div class='table node1'>
<div class='td' id='Table_1'>Table_1</div>
<div class='td' id='test_11'>test_1</div>
<div class='td' id='test_12'>test_2</div>
<div class='td' id='test_13'>test_3</div>
<div class='td' id='test_14'>test_4</div>
</div>
<div class='table node2'>
<div class='td' id='Table_2'>Table_2</div>
<div class='td' id='test_21'>test_1</div>
<div class='td' id='test_22'>test_2</div>
</div>
<svg>
<line id='test_13_test_21' style='stroke:rgb(255,0,0)'></line>
</svg>
<script>
$(".node1").draggable(
{
drag: function(){
//OUT
var test_13= $("#test_13");
var test_13_position = test_13.offset();
test_13_position_top_y = test_13_position.top + 9
test_13_position_left_x = test_13_position.left + test_13.width() + 15;
}
});
$(".node2").draggable(
{
drag: function(){
//IN
var test_21= $("#test_21");
var test_21_position = test_21.offset();
test_21_position_top_y = test_21_position.top + 9
test_21_position_left_x = test_21_position.left + 1;
}
});
//OUT
var test_13= $("#test_13");
var test_13_position = test_13.offset();
test_13_position_top_y = test_13_position.top + 9
test_13_position_left_x = test_13_position.left + test_13.width() + 15;
//IN
var test_21= $("#test_21");
var test_21_position = test_21.offset();
test_21_position_top_y = test_21_position.top + 9
test_21_position_left_x = test_21_position.left + 1;
//LINE
$('#test_13_test_21').attr({
'x1': test_13_position_left_x,
'y1': test_13_position_top_y,
'x2': test_21_position_left_x,
'y2': test_21_position_top_y
});
</script>
</body>
</html>
这里您正在计算线的新坐标,但没有将它们分配给线元素的 x1,y1,x2,y2
属性。试试更新后的 fiddle
在node1拖拽事件中使用$('#test_13_test_21').attr({x1:test_13_position_left_x,y1:test_13_position_top_y})
并在节点 2 $('#test_13_test_21').attr({x2:test_21_position_left_x,y2:test_21_position_top_y})