日期:2014-05-18  浏览次数:20436 次

求js画div之间的连线;div拖动时,连线也随着拖动!
如题 ↑

如下图:


图中的一个设备图就是一个div。
设备图我已可以实现,现在只需实现有关系(如图)的div之间创建它们的连线,拖动div时,连线也随着拖动/延长。





------解决方案--------------------
学习
------解决方案--------------------
老兄我的可以画图了!!
------解决方案--------------------
用的是vml!!
------解决方案--------------------
流程图!!
------解决方案--------------------
根据数据库的内容画图!!
------解决方案--------------------
不过没有加拖动的函数!!
------解决方案--------------------
学习
------解决方案--------------------
看哈。。。

------解决方案--------------------
曾经见过一个朋友在CRM中用JS实现的拖拉流程图.太牛了..

DIV上能有热点属性吗?热点之间的关系呢?

在DIV的ATTRIBUTE中记住关系,每执行移动后再重绘与之有关的线条.


------解决方案--------------------
作了一个比较苯的
<HTML>
<HEAD>
<TITLE>New Document</TITLE>
<script Language="javascript">
var x,y,divLeft,divTop; 
var isMove = false; 
var html = "";
function MouseDown(obj) 

isMove = true; 
x = event.clientX; 
y = event.clientY; 
divLeft = obj.offsetLeft; 
divTop = obj.offsetTop; 

function MouseMove(obj) 

if(isMove) 

obj.style.left = divLeft + event.clientX - x; 
obj.style.top = divTop + event.clientY - y; 


function MouseUp(obj) 

isMove = false;
var a = parseInt(document.getElementById("div1").style.left);
var b = parseInt(document.getElementById("div1").style.top);
var c = parseInt(document.getElementById("div2").style.left);
var d = parseInt(document.getElementById("div2").style.top);
html ="<div id = 'div1' style='border:1px solid gray;width:42px;height:39px;position:absolute;left:"+a+"px;top:"+b+"px' onmousedown='MouseDown(this)' onmousemove='MouseMove(this)' onmouseup='MouseUp(this)'>a</div>";
line(a,b,c,d,"0000dd");
html += "<div id = 'div2' style='border:1px solid gray;width:45px;height:44px;position:absolute;left:"+c+"px;top:"+d+"px' onmousedown='MouseDown(this)' onmousemove=' MouseMove(this)' onmouseup='MouseUp(this)'>a</div>";
document.body.innerHTML=html
}
function a(x,y,color)
{
html +="<img border='0' style='position:absolute;left:"+(x+20)+";top:"+(y+20)+";background-color:"+color+"'src='px.gif' width=1 height=1>";
}
function line(x1,y1,x2,y2,color)
{
var tmp
if(x1>=x2)
{
tmp=x1;
x1=x2;
x2=tmp;
tmp=y1;
y1=y2;
y2=tmp;
}
for(var i=x1;i<=x2;i++)
{
x =i;
y =(y2-y1)/(x2-x1)*(x-x1)+y1;
a(x,y,color);
}

function show()
{
html ="<div id = 'div1' style='border:1px solid gray;width:42px;height:39px;position:absolute;left:1px;top:1px' onmousedown='MouseDown(this)' onmousemove='MouseMove(this)' onmouseup='MouseUp(this)'>a</div>";