您可以使用 jsplumb 库来实现这一点。如果你有两个 div,div1 和 div2,
var endpointOptions = { isSource:true, isTarget:true };
var div1Endpoint = jsPlumb.addEndpoint('div1', { anchor:"TopCenter" }, endpointOptions );
var div2Endpoint = jsPlumb.addEndpoint('div2', { anchor:"BottomCenter" }, endpointOptions );
jsPlumb.connect({
source:div1Endpoint,
target:div2Endpoint,
connector: [ "Bezier", 175 ],
paintStyle:{ lineWidth:5, strokeStyle:'red' }
});
这应该建立连接器。如果你的 div 是可移动的,那么 onmove,调用 jsPlumb.repaint()
链接到 jsPlumb 演示 - https://jsplumbtoolkit.com
Jsplumb 现在似乎已经付费了,(上面的修改链接)。但是他们确实有Community Edition
社区版
这是托管在 GitHub 上的开源 jsPlumb 项目,于 2010 年初首次创建。它是一种视图层技术,为您提供 API 以通过编程方式和鼠标/触摸事件建立 DOM 元素之间的连接。
社区版是免费的,并获得 MIT 或 GPL2 许可;您可以选择适合您需求的。
工具包版
Toolkit 版包含社区版,重点关注底层数据模型,以及一些有用的 UI 功能,例如布局和提供平移/缩放功能的小部件。它提供了一种以视觉连接为核心构建应用程序的快速方法。要更好地了解 Toolkit Edition 的功能,请查看一些演示或仔细阅读文档。
Toolkit Edition 具有针对每个开发人员的商业许可,可选择访问电子邮件支持(以及一年内对新发布版本的更新)。许可条款可在此处获得。立即使用此表单随时加入并购买许可证!
可以查看两个版本的路线图here。