求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>";