拖放功能和箭头图

Posted

技术标签:

【中文标题】拖放功能和箭头图【英文标题】:Drag Drop Feature and Arrow Map 【发布时间】:2013-12-21 05:37:49 【问题描述】:

我打算制作一个流程图工具,如果可行的话将使用拖放功能,例如拖动菱形、椭圆形、菱形框等以及可以连接它们的箭头。

任何人都可以建议适当的语言开始,它可以支持诸如定义矩形对象、箭头和映射等功能,以便我知道一个特定的箭头指向一个 ID 为 xyz 的矩形......

我用 jquery、javascript、actionscript 来标记这个问题...如果它们确实支持我正在寻找的东西,我会通过名称而不是技术专长知道一些库。

请提出建议。

【问题讨论】:

我会选择老式的 html、CSS 和 jQuery。如果您觉得更熟练,可以查看 github.com/GoodBoyDigital/pixi.js (2D) 或 threejs.org (3D) @NinjaFart:您能否编写一个简短的说明,说明几个 div 由一条线连接,该线的每一端都有箭头,其中一个 div 是可拖动的? 这个问题最好发给softwarerecs.stackexchange.com(只是宣传一个优秀的SE网站)。您可能会得到更令人满意的回应,而不是凝视。 Drawing a line between two divs的可能重复 【参考方案1】:

这是一个起点:http://jsfiddle.net/Qgt9V/2/

$( ".box-handle" ).draggable( 
    containment: ".container", 
    scroll: false, 
    drag: function ()  /* While dragging check for stuff */

        var box = $(this);
        var boxPosition = box.position();
        box.find('.arrow').show();

        if (boxPosition.left >= 90)
        
            // In the parent div called ".box" find ".box-line"
            box.closest('.box').find('.box-line').css(
                'top':'50px', /* Put top left corner of ".box-line" a the edge of ".static" */
                'left':'110px',
                'width': boxPosition.left - 60, /* Put bottom right corner of ".box-line" a the edge of current dragged box */
                'height': boxPosition.top + 50,
                'border':'none',
                'border-top':'1px solid #bfbfbf',
                'border-right':'1px solid #bfbfbf'
            );
            /* place the arrow*/
            box.find('.arrow').css(
                'top':'-10px',
                'left':'45px'
            );
        
        else if (boxPosition.left < 90)
        
            box.closest('.box').find('.box-line').css(
                'top':'110px',
                'left':'50px',
                'width': boxPosition.left,
                'height': boxPosition.top - 60,
                'border':'none',
                'border-left':'1px solid #bfbfbf',
                'border-bottom':'1px solid #bfbfbf'
            );
            box.find('.arrow').css(
                'top':'45px',
                'left':'-10px'
            );
        
    
);

我正在使用可拖动的 jQuery UI 来移动 div。在移动 div 时,“box-line”会根据我拖动的框的位置调整自身的大小。然后只需在“box-line”的正确一侧添加边框即可。

More about draggable。 还可以查看 position 和/或 offset 方法。

【讨论】:

【参考方案2】:

另见this question,它引用了优秀的JsPlumb。

工具包版在社区版中包含拖放功能,在(非常昂贵的)工具包版中实际上有一个demo flowchart app。

事实上,社区版完全回答了您的问题。看看perimeter anchors demo。

【讨论】:

以上是关于拖放功能和箭头图的主要内容,如果未能解决你的问题,请参考以下文章

jquery实现添加到购物车拖放功能 像百度旅游定制旅游一样 如下图

Fabric.js 拖放元素进画布

EA画时序图初试

Html5 的拖拽功能

ppt 的基本操作1

TableView 拖放功能