这个是左边模型的容器,

表示中间区域容器。

Js代码:首先我们定义几个点的样式的全局变量

//基本连接线样式

var connectorPaintStyle = {

strokeStyle: "#1e8151",

fillStyle: "transparent",

radius: 5,

lineWidth: 2

};

// 鼠标悬浮在连接线上的样式

var connectorHoverStyle = {

lineWidth: 3,

strokeStyle: "#216477",

outlineWidth: 2,

outlineColor: "white"

};

var endpointHoverStyle = {

fillStyle: "#216477",

strokeStyle: "#216477"

};

//空心圆端点样式设置

var hollowCircle = {

DragOptions: { cursor: 'pointer', zIndex: 2000 },

endpoint: ["Dot", { radius: 7 }], //端点的形状

connectorStyle: connectorPaintStyle,//连接线的颜色,大小样式

connectorHoverStyle: connectorHoverStyle,

paintStyle: {

strokeStyle: "#1e8151",

fillStyle: "transparent",

radius: 5,

lineWidth: 2

}, //端点的颜色样式

//anchor: "AutoDefault",

isSource: true, //是否可以拖动(作为连线起点)

connector: ["Straight", { stub: [0, 0], gap: 10, cornerRadius: 5, alwaysRespectStubs: true }], //连接线的样式种类有[Bezier],[Flowchart],[StateMachine ],[Straight ]

isTarget: true, //是否可以放置(连线终点)

maxConnections: -1, // 设置连接点最多可以连接几条线

connectorOverlays: [["Arrow", { width: 10, length: 10, location: 1 }]]

};

然后再页面初始化完成之后注册事件

$(function(){

//左边区域的draggable事件

$("#divContentLeftMenu .node").draggable({

helper: "clone",

scope: "plant"

});

//中间拖拽区的drop事件

$("#divCenter").droppable({

scope: "plant",

drop: function (event, ui) {

// 创建工厂模型到拖拽区

CreateModel(ui, $(this));

}

});

});

//1.创建模型(参数依次为:drop事件的ui、当前容器、id、当前样式)

function CreateModel(ui, selector) {

//1.1 添加html模型

var modelid = $(ui.draggable).attr("id");

i++;

var id = modelid + i;

var cur_css = modelid;

var type = $(ui.helper).attr("dbtype");

$(selector).append('

' + $(ui.helper).html() + '');

var left = parseInt(ui.offset.left - $(selector).offset().left);

var top = parseInt(ui.offset.top - $(selector).offset().top);

$("#" + id).css("left", left).css("top", top);

//jsPlumb.setContainer($("#divCenter"));

//1.2 添加连接点

jsPlumb.addEndpoint(id, { anchors: "RightMiddle" }, hollowCircle);

jsPlumb.addEndpoint(id, { anchors: "LeftMiddle" }, hollowCircle);

jsPlumb.addEndpoint(id, { anchors: "TopCenter" }, hollowCircle);

jsPlumb.addEndpoint(id, { anchors: "BottomCenter" }, hollowCircle);

jsPlumb.draggable(id);

//1.3 注册实体可draggable和resizable

$("#" + id).draggable({

containment: "parent",

start: function () {

startMove();

},

drag: function (event, ui) {

MoveSelectDiv(event, ui, id);

jsPlumb.repaintEverything();

},

stop: function () {

jsPlumb.repaintEverything();

}

});

$("#" + id).resizable({

resize: function () {

jsPlumb.repaintEverything();

},

stop: function () {

jsPlumb.repaintEverything();

//oInitElement.SendPropRequest("DTO_TM_PLANT", $(this));

}

});

return id;

};

重点来看看这一句:

jsPlumb.addEndpoint(id, { anchors: "RightMiddle" }, hollowCircle);调用了JsPlumb里面的addEndpoint方法,第一个参数表示页面标签的id,第一个表示连线点的位置(RightMiddle、LeftMiddle、TopCenter、BottomCenter四个选项);第三参数表示点的样式以及连线的样式。没调用依次addEndpoint方法,元素上面就会多一个连线的节点。关于hollowCircle里面各个参数的意义,可以查看api。

还有一句多个地方都看到了:

jsPlumb.repaintEverything();看字面意思大概能知道这句是干什么的,修复所有。当在中间区域拖动元素的时候,如果不带这一句,节点不会跟着元素一起移动。加上之后节点才会跟随标签移动。至此,最基础的JsPlumb连线就完成了。

以上就是本文的全部内容,希望能够帮助大家学习掌握流程图的核心技术JsPlumb。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

jsplumb php,详解js中构造流程图的核心技术JsPlumb_javascript技巧相关推荐

  1. php js实现流程图,详解js中构造流程图的核心技术JsPlumb(2)_javascript技巧

    前言:上篇详解js中构造流程图的核心技术JsPlumb介绍了下JsPlumb在浏览器里面画流程图的效果展示,以及简单的JsPlumb代码示例.这篇还是接着来看看各个效果的代码说明. 一.设置连线的样式 ...

  2. 详解js中的继承(一)

    详解js中的继承(一) 前言 准备知识 1.构造函数,实例 2.原型对象 3.构造函数,原型对象和实例的关系 继承 原型链 小结 前言 通过[某种方式]让一个对象可以访问到另一个对象中的属性和方法,我 ...

  3. 详解JS中的Object

    详解 JS 中的 Object 从本质上看,Object 是一个构造函数,用于创建对象. 一.Object 构造函数的属性 在 Object 中声明的属性只有两个: Object.length -- ...

  4. 详解JS中的原型与继承

    每当我们提起原型链时不免会想到原型对象,对象的原型,还有众多的继承方式.于是prototype.[[prototype]].constructor等等难免在头脑中打架. 然而原型其实并不是什么高大上的 ...

  5. 详解js中typeof、instanceof与constructor

    typeof返回一个表达式的数据类型的字符串,返回结果为js基本的数据类型,包括number,boolean,string,object,undefined,function.语法为typeof(da ...

  6. html中隐式转换成数字,详解JS中的隐式类型转换

    JS中隐式类型转换 JS中的数据类型 JS中的数据类型分为两大类: 1.基本数据类型: 1.String 字符串 表示一段文本,例如:人的姓名.地址等 2.Number 数值 3.Boolean 布尔 ...

  7. 详解js中的undefined、NaN、null

    js中三大特殊的值: undefined NaN null 1.undefined 变量声明了但为赋值 console.log(typeof undefined); //undefined conso ...

  8. 详解js中的闭包(closure)以及闭包的使用

    作用域链 我们知道在js中作用域分为全局作用域与局部作用域,作用域链的访问规则为从内到外,也就是说如果当前的作用域中没有该变量或者方法,则会在包含该作用域的外层作用域中,一层一层的向上找,直到wind ...

  9. 详解 JS 中 a.x = a = {} 到底发生了啥?(图文并茂,包你看懂)

    直奔主题,先贴上代码: let a = {n:1}a.x = a = {n:2}console.log(a.x) console.log(a.x) 输出什么呢? 作为一个初学者,我的第一反应还是挺懵的 ...

最新文章

  1. 利用mk-table-checksum监测Mysql主从数据一致性操作记录
  2. 如何关闭eslint检测代码格式报错
  3. PHP 四种基本排序算法的代码实现(2)
  4. java 调用r语言包传参数_Java与R语言的配置,调用
  5. 关于c语言编写 顺序表 的创建、插入、修改、删除、显示、退出 的程序案例
  6. Emscripten 单词_人教版英语八年级上册听力(单词+课文) 朗读录音听力mp3音频电子课本(完整版)...
  7. Java架构师技术进阶路线图详解
  8. CAD,SolidWorks相比ProE,UG等软件有什么区别?怎么下载?
  9. 迷茫时的3个选择,决定了你人生的高度
  10. python银行排队系统仿真_离散事件仿真简例——银行排队系统
  11. 微信公众号代运营的的技巧有哪些(2)
  12. CSS中flex的用法( 学习笔记 )
  13. 2018阿里巴巴全球诸神之战创客大赛总决赛即将举行
  14. 4G图传移动视频取证-可视安全生产监管-常见问题解答FAQ
  15. 卡巴斯基:2019Q3拒绝服务攻击趋势报告
  16. 微信开发-js接口的使用无法使用分享功能的一些说明
  17. Java 编程问题:七、Java 反射类、接口、构造器、方法和字段
  18. 张飞硬件班笔记之电容
  19. 无人值守称重系统 | 地磅称重系统
  20. 华为 SRG1200 端口映射功能和转发策略

热门文章

  1. 最好用的录屏工具Bandicam (班迪录屏)
  2. Oracle ORA-31000: Resource 'http://xmlns.oracle.com/xdb/acl.xsd' is not an XDB schema 解决方法
  3. android 屏幕密度350 是xh xxh,Android-绘图机制总结
  4. java 正则表达式过滤_java正则表达式过滤特殊字符
  5. volatility3安装报错
  6. plus.nativeUI.showWaiting()实时进度无法正常显示
  7. Centos7 挂载新硬盘(SSD|M.2)的操作方法
  8. 创建Apache的CA证书
  9. cublas library not found
  10. UE4地编基础-入门