是否有用于在Javascript / CSS中呈现基本流程图的库?

时间:2008-08-26 09:39:34

标签: javascript css

在网页上,我想动态呈现非常基本的流程图,即几行按行连接。理想情况下,用户可以点击其中一个框(DIVs?)并转到另一个页面。诉诸Flash似乎有点矫枉过正。是否有人知道可能有助于实现此目的的任何客户端(即server agnostic)Javascript或CSS library/technique

3 个答案:

答案 0 :(得分:1)

渲染是否必须是客户端?

如果是,您可以尝试处理:

http://ejohn.org/blog/processingjs/

如果您可以在服务器端执行,那么Graphviz是一个不错的选择。

http://www.graphviz.org/

答案 1 :(得分:1)

我找到的最好也是最简单的是js-graph.it

它还有这个有用的功能:deciding the orientation of the flow。例如,在我的情况下,我有一个文档工作流程,所以我需要它向右侧流动。

更简单的替代方案是wz_jsGraphics。在我的情况下,我画这样的箭头:

/**Draw an arrow made of 3 lines. 
 * Requires wz_jsGraphics (http://www.walterzorn.de/en/jsgraphics/jsgraphics_e.htm).
 * @canvas a jsGraphics object used as canvas
 * @blockFrom id of the object from which the arrow starts
 * @blockTo id of the object where the arrow ends with a arrowhead 
 */
function drawArrow(canvas, blockFrom, blockTo){

    //blocks
    var f = $("#" + blockFrom);
    var t = $("#" + blockTo);

    //lines positions and measures
    var p1 = { left: f.position().left + f.outerWidth(),    top: f.position().top + f.outerHeight()/2 };
    var p4 = { left: t.position().left,                     top: t.position().top + t.outerHeight()/2 };
    var mediumX = Math.abs(p4.left - p1.left)/2;
    var p2 = { left: p1.left + mediumX,                 top: p1.top };
    var p3 = { left: p1.left + mediumX,                 top: p4.top };

    //line A
    canvas.drawLine(p1.left, p1.top,    p2.left, p2.top);
    //line B
    canvas.drawLine(p2.left, p2.top,    p3.left, p3.top);
    //line C
    canvas.drawLine(p3.left, p3.top,    p4.left, p4.top);
    //arrowhead
    canvas.drawLine(p4.left - 7, p4.top - 4,        p4.left, p4.top);
    canvas.drawLine(p4.left - 7, p4.top + 4,        p4.left, p4.top);
}

var jg = new jsGraphics('myCanvasDiv');
drawArrow(jg, 'myFirstBlock', 'mySecondBlock');
jg.paint(); 

答案 2 :(得分:0)

这种流程图可以使用CSS完成,使用JavaScript图形库(画布)可能有点过分。您可能希望查看一些Genealogy网站如何做到这一点以获得家谱。