Anchor
:锚点(链接点位置),能够设置在任何没有锚点的目标上(endPoint
)Anchors
:设置在connect的源和目标点的链接点位置,默认是 BottomCenter
Connector
:链接线(好比:["Bezier", {curviness: 63}]
为贝塞尔曲线)ConnectionsDetachable
:是否在链接点能够用鼠标拖动[true/false
]Container
:容器DoNotThrowErrors
:设置当锚点(Anchor
)、端点(endPoint
)和链接器(Connector
)不存在的时候是否抛出异常ConnectionOverlays
:默认覆盖附着在每一个链接器DragOptions
:为 被 jsPlumb.draggable
设置了拖拽的元素拖拽时设置的css样式.eg:Endpoint
: 端点的形状定义,好比圆:[ "Dot", { radius:5 } ]
;正方形:Rectangle
Endpoints
:设置了链接器的源和目标端点的形状,eg圆: [ [ "Dot", { radius:7 } ], [ "Dot", { radius:11 } ] ]
EndpointOverlays
:默认覆盖附着在每一个端点EndpointStyle
:端点的默认样式EndpointStyles
:设置了链接器的源和目标端点的样式EndpointHoverStyle
:端点的hover状态样式EndpointHoverStyles
:设置了链接器的源和目标端点端点的hover状态样式HoverPaintStyle
:LogEnabled
:jsPlumb内部日志是否开启。Overlays
:默认覆盖链接器和端点样式,装饰链接器,如标签、箭头等MaxConnections
:设置链接点最多能够链接几条线PaintStyle
:设置链接点的样式connectorStyle
:设置链接线样式ReattachConnections
:RenderMode
:默认渲染模式Scope
:链接点的标识符,只有标识符相同的链接点才能链接eg:javascript
//定义了一个在底部中间的锚点位置 jsPlumb.connect({...., anchor:"Bottom", ... });
eg:css
//定义了一个在底部中间的锚点位置 jsPlumb.connect({...., anchor:[ 0.5, 1, 0, 1 ], ... });
若是锚点位置没法知足你的需求,还能够设置锚点的偏移量[x,y,dx,dy,offSetX,offSetY] ,下面设置了Y轴偏移50px,锚点Y坐标会+50px:java
jsPlumb.connect({...., anchor:[ 0.5, 1, 0, 1, 0, 50 ], ... });
数组定义数组
没有特殊的语法来建立一个动态锚;能够提供一个静态数组锚规格,如:bash
var dynamicAnchors = [ [ 0.2, 0, 0, -1 ], [ 1, 0.2, 1, 0 ], [ 0.8, 1, 0, 1 ], [ 0, 0.8, -1, 0 ] ]; jsPlumb.connect({...., anchor:dynamicAnchors, ... });
或者组合:jsp
var dynamicAnchors = [ [ 0.2, 0, 0, -1 ], [ 1, 0.2, 1, 0 ], "Top", "Bottom" ]; jsPlumb.connect({...., anchor:dynamicAnchors, ... });
这样锚点会根据位置自动调整到最合适的位置(定义的数组里几个点中)ide
默认定义函数
jsPlumb提供了一个动态锚 AutoDefault
选择从 前 , 右 , 底 和 左 :字体
jsPlumb.connect({...., anchor:"AutoDefault", ... });
eg:ui
jsPlumb.addEndpoint("someElement", { endpoint:"Dot", anchor:[ "Perimeter", { shape:"Circle" } ] });
若是锚点的宽高同样,该锚点位置为动态圆周。宽高不一样为椭圆,相似正方形和矩形。
默认状况下,锚点个数为60,咱们还能够手动指定:
eg(指定150个动态锚点):
jsPlumb.addEndpoint("someDiv", { endpoint:"Dot", anchor:[ "Perimeter", { shape:"Square", anchorCount:150 }] });
jsPlumb.connect({ source:"someDiv", target:"someOtherDiv", endpoint:"Dot", anchors:[ [ "Perimeter", { shape:"Triangle" } ], [ "Perimeter", { shape:"Diamond" } ] ] });
jsPlumb.connect({ source:"someDiv", target:"someOtherDiv", endpoint:"Dot", anchors:[ [ "Perimeter", { shape:"Triangle", rotation:25 } ], [ "Perimeter", { shape:"Triangle", rotation:-335 } ] ] });
上面定义了两个三角形旋转不一样角度获得的组合图形(旋转适用带角度的多边形)。
锚点的不一样位置能够有多种css样式,那就要有不一样的css类提供支持。
被写入到锚点的CSS类和元素与jsPlumb实例相关联的前缀默认的前缀:
jsplumb-endpoint-anchor-
eg:
var ep = jsPlumb.addEndpoint("someDiv", { anchor:[0.5, 0, 0, -1, 0, 0, "top" ] };
jsPlumb将会分配这个类给建立的 endpoint
和元素 someDiv
:
jsplumb-endpoint-anchor-top
一个使用动态锚的例子:
var ep = jsPlumb.addEndpoint("someDiv", { anchor:[ [ 0.5, 0, 0, -1, 0, 0, "top" ], [ 1, 0.5, 1, 0, 0, 0, "right" ] [ 0.5, 1, 0, 1, 0, 0, "bottom" ] [ 0, 0.5, -1, 0, 0, 0, "left" ] ] });
这里的类分配给端点和元素循环这些值做为锚位置的变化:
jsplumb-endpoint-anchor-top jsplumb-endpoint-anchor-right jsplumb-endpoint-anchor-left jsplumb-endpoint-anchor-bottom
若是您提供多个类名,jsPlumb不会预先考虑类中的每一个词的前缀:
var ep = jsPlumb.addEndpoint("someDiv", { anchor:[ 0.5, 0, 0, -1, 0, 0, "foo bar" ] });
会致使2个类被添加到端点和元素:
jsplumb-endpoint-anchor-foo 和 bar
前缀 endpointAnchorClass
用于锚类存储为jsPlumb的成员,这个前缀是可更改的:
jsPlumb.endpointAnchorClass = "anchor_";
或者
var jp = jsPlumb.getInstance(); jp.endpointAnchorClass = "anchor_";
jsPlumb提供了四种链接线:
straight
(直线)Bezier
(贝塞尔曲线)flowchart
(流程图)state machine
在两个端点之间画一条直线。 它支持两个构造函数参数:
stub
:可选的,默认值为0。此参数的任何正值将致使在与链接线的两端产生一段不可改变方向的线段gap
:可选,默认为0像素。在链接线的一端和链接的元素之间指定一个间隙。贝塞尔提供了一个立方的贝塞尔曲线。 它支持一个构造函数参数:
curviness
:参数可选,默认为150。 定义了曲线的弯曲程度。垂直或水平的链接线,提供了四个参数:
stub
:这是最小长度,以像素为单位,最初的存根,源自一个端点。这是一个可选的参数,而且能够是一个整数,它指定了链接器的每一个末端的存根,或是一个整数数组,指定[源目标]端点的链接。默认值为30像素的整数alwaysRespectStubs
:可选,默认为false。gap
:可选,默认为0像素。在链接线的一端和链接的元素之间指定一个间隙。midpoint
:可选,默认为0.5。这是一个流程图中最长的部分将被绘制的2个元素之间的距离。cornerRadius
:默认为0。此参数的正值将改变弯角的度数。略微弯曲的线(其实是二次Bezier曲线),相似于状态机的链接器,支持的构造函数参数:
margin
:可选;默认为5。定义链接线开始/结束的元素的距离。curviness
:可选的,默认为10,定义了曲线的弯曲程度。proximityLimit
: 可选,默认为80。 链接线的两端之间的最小距离 它描绘为一条直线而非二次贝塞尔曲线。端点是链接里的一个端点外观和行为表现的集合,jsPlumb实现了四个端点:
有不一样的方式建立 endpoint
:
并经过一个元素id或DOM元素做为源/目标,建立并分配一个新的端点
eg:
jpInstance.connect({ source: "state1", target: "state2", scope: "state3" });
建立一个新的端点
jpInstance.addEndpoint("myDivId", EndpointConfig)
jpInstance.makeSource(...)
就是在屏幕上画一个点,它支持三个构造函数参数:
radius
:可选,默认为10像素。 定义点的半径cssClass
:可选,端点元素的CSS类。hoverClass
可选的,元素或连线的hover属性样式类绘制一个矩形。 支持构造函数参数有:
width
:可选的,默认为20像素。定义矩形的宽度。height
:可选的,默认为20像素。定义矩形的高。cssClass
:可选的,端点元素的CSS类。hoverClass
:可选的,元素或连线的hover属性样式类从一个指定的URL加载图像,这个端点支持三种构造函数参数:
src
:图片的urlcssClass
:可选的,端点元素的CSS类。hoverClass
:可选的,元素或连线的hover属性样式类jsPlumb带有五个类型的覆盖图:
位置代表链接元素在链接线的位置,一般有三种代表方式:
[0 . . 1]范围内的十进制数,代表在链接线的位置比例,默认0.5
[1 . . . ] (>1)的数字代表沿着链接线的绝对路径的像素
小于零的整数数组:
(1):指定一个覆盖在端点的中心位置:
location:[ 0.5, 0.5 ]
(2):沿着x轴从左上角叠加5像素
location: [ 5, 0 ]
(3):沿着x轴从右下角叠加放置5像素
location: [ -5, 0 ]
对于位置的操做,jsPlumb提供了两个方法:
使用场景(出现如下调用的时候):
jsPlumb.connect
jsPlumb.addEndpoint
jsPlumb.makeSource
注: 没有 jsPlumb.makeTarget
jsPlumb.connect
被调用时使用(1). 下面指定了 一个默认配置的箭头和一个文字为foo的标签文本:
jsPlumb.connect({
...
overlays:[
"Arrow", [ "Label", { label:"foo", location:0.25, id:"myLabel" } ] ], ... });
此链接的箭头在链接线的中间,lable标签则是在链接线的四分之一处;这里添加了一个id,它能够在之后移除或修改标签时使用。
(2). 箭头位置位于链接线距离50像素(绝对位置):
jsPlumb.connect({
...
overlays:[
"Arrow", [ "Label", { label:"foo", location:50, id:"myLabel" } ] ], ... });
jsPlumb.addEndpoint
被调用时使用此链接将有10x30像素箭坐落在链接头,标签“foo”则位于中点。端点自己也有一个覆盖,位于[ - 0.5 *宽,- 0.5 *高]相对于端点的左上角。
jsPlumb.addEndpoint("someDiv", { ... overlays:[ [ "Label", { label:"foo", id:"label", location:[-0.5, -0.5] } ] ], connectorOverlays:[ [ "Arrow", { width:10, length:30, location:1, id:"arrow" } ], [ "Label", { label:"foo", id:"label" } ] ], ... });
注:在addEndpoint 使用 connectorOverlays
代替 overlays
,由于 overlays
指向端点覆盖。
一样使用 connectorOverlays
,并且 makeSource
支持 endpoint
参数。
此链接将有10x30像素箭坐落在链接头,标签“foo”位于中点。
jsPlumb.makeSource("someDiv", { ... endpoint:{ connectorOverlays:[ [ "Arrow", { width:10, length:30, location:1, id:"arrow" } ], [ "Label", { label:"foo", id:"label" } ] ] } ... });
addOverlay
方法Endpoints
和 Connections
都有一个方法: addOverlay
,它提供一个单一的方法定义一个 覆盖(Overlays):
var e = jsPlumb.addEndpoint("someElement"); e.addOverlay([ "Arrow", { width:10, height:10, id:"arrow" }]);
一个箭头 使用四个点:头、两个尾点和一个foldback(监听),它容许箭头的箭尾缩进。此覆盖的可用构造函数参数:
Endpoints
和 Connectors
的样式对象这其实就是一个 foldback=1 的 Arror;继承Arror的构造函数
这其实就是一个 foldback=2 的 Arror;继承Arror的构造函数
(1) 介绍
提供装饰链接器的文本标签。可用的构造函数参数是:
(2). getLabel
和 setLabel
标签覆盖提供了两个方法 getLabel
和 setLabel
用于动态地get/set标签内容:
var c = jsPlumb.connect({ source:"d1", target:"d2", overlays:[ [ "Label", {label:"FOO", id:"label"}] ] }); ... var label = c.getOverlay("label"); console.log("Label is currently", label.getLabel()); label.setLabel("BAR"); console.log("Label is now", label.getLabel());
这个例子里,标签被赋予一个id ‘label’,而后检索这个id动态设置lable的值。
Connections 和 Endpoints 都支持 标签覆盖:
var conn = jsPlumb.connect({
source:"d1", target:"d2", label:"FOO" }); ... console.log("Label is currently", conn.getLabel()); conn.setLabel("BAR"); console.log("Label is now", conn.getLabel());
(3). 动态设置label
var conn = jsPlumb.connect({ source:"d1", target:"d2" }); ... conn.setLabel(function(c) { var s = new Date(); return s.getTime() + "milliseconds have elapsed since 01/01/1970"; }); console.log("Label is now", conn.getLabel());
jsPlumb容许自定义一个 OverLays,你只须要实现 create(component):
var conn = jsPlumb.connect({ source:"d1", target:"d2", paintStyle:{ strokeStyle:"red", lineWidth:3 }, overlays:[ ["Custom", { create:function(component) { return $("<select id='myDropDown'><option value='foo'>foo</option><option value='bar'>bar</option></select>"); }, location:0.7, id:"customOverlay" }] ] });
注意 此处的id为 customeOverlay
,你能够在 Connection 或者 Endpoint上使用 getOverlay(id)
方法。
可使用 setVisible
方法控制 Overlays
的显示属性,或者在一个链接上使用 showOverlay(id)
和 hideOverlay(id)
。
(1). 使用id:
var connection = jsPlumb.connect({ ... overlays:[ "Arrow", [ "Label", { label:"foo", location:0.25, id:"myLabel" } ] ], ... }); // time passes var overlay = connection.getOverlay("myLabel"); // now you can hide this Overlay: overlay.setVisible(false); // there are also hide/show methods: overlay.show(); overlay.hide();
(2). 使用 showOverlay(id)
和 hideOverlay(id)
:
Connection 和 Endpoint 可使用showOverlay(id)
和 hideOverlay(id)
:
var connection = jsPlumb.connect({ ... overlays:[ "Arrow", [ "Label", { label:"foo", location:-30 , id:"myLabel" }] ], ... }); // time passes connection.hideOverlay("myLabel"); // more time passes connection.showOverlay("myLabel");
var connection = jsPlumb.connect({ ... overlays:[ "Arrow", [ "Label", { label:"foo", location:0.25 , id:"myLabel"} ] ], ... }); // time passes connection.removeOverlay("myLabel");