基于jsplumb插件制作可拖拽、保存流程图、重绘保存后的流程图总结
1.重点参考博文
https://blog.csdn.net/j_bean/article/details/78092647
2.关键点总结
1)实现可视区域图形画满后,拖动整个画布的效果
a.最好不要给画图形的容器预设置很大的宽、高,这样遇到钻牛角尖的用户还是会将画布拖到边界。
b.换个思维,拖动画布时,修改画布上画好的图形的left、top值。比如向右拖动时,增大画布上画好的
所有图形left值。这样看起来的效果好像画布像右动了,其实本质上是画布上东西像右了,而画布并
没有真的移动。
而且这样实现后,无论用户像哪个方向拖动,永远也拖不到尽头
c.修改画好的图形的css样式后,记得最后调用jsPlumb.repaintEverything(),来重新绘制画面。
否则端点会与图形脱离。
d.鼠标拖动效果如果不借助任何插件,可以用onmousedown、onmousemove、onmouseup三个事件共同
配合实现。
onmousedown当鼠标按下:设置按下标志置为true,并记录当前的鼠标指针的位置
onmousemove当鼠标移动:判断鼠标按下标志,如果按下了,则开始拖动逻辑(即修改被拖动
元素的css样式)。用当前鼠标位置和onmousedown事件记录的位置就能
计算出拖动的距离。
onmouseup当鼠标抬起:将鼠标按下标志置为false
2)jsPlumb.bind()方法可以给线绑定事件
3)两个图形之间只能画1条线的效果
jsPlumb.bind("connection", function (conn, originalEvent) {
//查看被连接的两个点间是否已经连接过
var conns=jsPlumb.getConnections({
source:conn.sourceId,
target:conn.targetId
});
//如果大于1条,则不在进行连接
if(conns.length>1){
jsPlumb.detach(conn);
}
});
4)当一个图形上有多个点,用jsPlumb.connect()方法控制画具体哪两个端点间的线,使用uuids
a. jsPlumb.connect( {uuids:[sourceUUid,targetUUid]} )//画具体哪两个点间的线
jsPlumb.connect( {source:123,target:456} )//用这个时jsplumb会随机的选择图形上的两个端点进行连接
b. uuid属于endpoint,uuid在添加端点时指定
var port = jsPlumb.addEndpoint(id, { anchors: "TopCenter",uuid:123456789}, upport);
port.getUuid()//获得端点的uuid
3)重要api
connection.getUuids()//获得连接线两个端点的UUID,返回为一个数组 [sourceUuid, targetUuid]
jsPlumbUtil.uuid() //生成id
4)放大缩小
https://bitqiang.gitbooks.io/jsplumb/content/Chapter1_IMPORTS_AND_SETUP/section1.html
---------------------
作者:join_null
来源:CSDN
原文:https://blog.csdn.net/join_null/article/details/80266993
版权声明:本文为博主原创文章,转载请附上博文链接!
基于jsplumb插件制作可拖拽、保存流程图、重绘保存后的流程图总结的更多相关文章
- 【百度地图API】如何制作可拖拽的沿道路测距
原文:[百度地图API]如何制作可拖拽的沿道路测距 摘要: 地图测距,大家都会,不就map.getDistance麼.可是,这只能测任意两点的直线距离,用途不够实际啊.比如,我想测试北京天安门到北京后 ...
- linux chromuim安装常用插件(flash,手势,拖拽,广告屏蔽)
1.本机kali2.0 64位,kali基于Debian.文章所用的所有插件请到http://files.cnblogs.com/files/yuuyuu/chromium_plugins.tar. ...
- 一款基于jQuery的支持鼠标拖拽滑动焦点图
记得之前我们分享过一款jQuery全屏广告图片焦点图,图片切换效果还不错.今天我们要分享另外一款jQuery焦点图插件,它的特点是支持鼠标拖拽滑动,所以在移动设备上使用更加方便,你只要用手指滑动屏幕即 ...
- Vue.Draggable:基于 Sortable.js 的 Vue 拖拽组件使用中遇到的问题
Sortable.js 介绍 https://segmentfault.com/a/1190000008209715 项目中遇到的问题: A - 我需要在项目的拖拽组件中,使用背景 1 - 想到的第一 ...
- 使用zTree插件实现可拖拽的树
在目前接触到的树插件中,我觉得zTree比较简单,也容易上手.有一次业务需求是将某对象分组树上的对象可以随意拖拽,相当于改变了对象的分组,因此我用到了zTree,对其进行了一些列学习. ...
- js制作可拖拽可点击的悬浮球
兼容mouse事件和touch事件,支持IE9及其以上 效果展示:https://jsfiddle.net/shifeng/7xebf3u0/ // index.html <!DOCTYPE h ...
- 使用movable-view制作可拖拽的微信小程序弹出层效果。
仿了潮汐睡眠小程序的代码.[如果有侵权联系删除 最近做的项目有个弹出层效果,类似音乐播放器那种.按照普通的做了一般感觉交互不是很优雅,设计妹子把潮汐睡眠的弹层给我看了看,感觉做的挺好,于是乘着有空仿照 ...
- Chrome - XPath Helper插件 使用手工拖拽方式无法正常安装的解决办法
安装前准备: (1)下载 XPath Helper资源: 链接: https://pan.baidu.com/s/1yEnngIJz8fT9fNv3aHhs7w 提取码: afy3 (2)Chrome ...
- angularjs 使用angular-sortable-view实现拖拽效果(包括拖动完成后的方法使用)
首先还是看效果图吧,方便大家可以快速得知是否是自己需要的功能:(抱歉电脑还未安装动图软件,先用.png) 如果上图是你需要的功能效果图,那么请往下看,我有写出来例子哦~ 使用这个插件有几个好处,首先: ...
随机推荐
- 使用session存储数据
@WebServlet("/reply") public class ReplyServlet extends HttpServlet { @Override protected ...
- ES特点
ES Hadoop spark的区别存(可扩展) hdfs存(可扩展) 不存 ...
- StarUML自动生成Java代码
下载一个starUML 链接:https://pan.baidu.com/s/1pIGNVmhtwBxMrCG9LHdkCQ 提取码:c4i6 复制这段内容后打开百度网盘手机App,操作更方便哦 添加 ...
- window.location.href在微信端不起作用的解决方法?
在我从第一张图的某个活动进去到详情页,点击返回是可以的,这里我是用了一个click事件,window.location.href="某死链接" 但是第二次进去点击之后点击事件是可以 ...
- VMware 桥接网络设置
1. 桥接的基本原理 桥接是将虚拟机和宿主机在局域网中的地位看成是一样的,逻辑如下: 但实际上是通过如下图实现的:(该图来自http://blog.csdn.net/qingfengtsing/art ...
- 关于SQL中的ROWNUM问题
前言 昨天改小程序的后台,看见之前写的分页很奇怪,startIndex和endIndex两个下标, endIndex 总是在里面层,而startIndex总是在外层,我随后改了,直接Where row ...
- http json token
http json token https使用证书来保证链接的安全,是目前最为流行的做法. 另一种保证HTTP 函数的安全,就是http json token,只有TOKEN验证通过,才能调用方法(一 ...
- PathVariable传过来的中文乱码是怎么回事
今天在写一个spring mvc程序,由于客户原来设计的原因,不能传id过来,只能传名称,结果发现收到的数据是乱码. 百度之后,找到别人的解决方案,试了下没问题,转载一下.使用的web服务器是Tomc ...
- Java IO系统--字符流
字符流:尽管字节流提供了处理任何类型输入/输出操作的足够功能,它们补鞥呢直接操作Unicode字符.字符流层次结构的顶层是Reader和Writer抽象类.类似于InputStream和OutputS ...
- spring-data-mongodb中的MongoTemplate与MongoRepository及推荐
SpringData支持两种关系数据存储技术: JDBCJPA ● SpringData 方法定义JPA规范: 1. 不是随便声明的,而需要符合一定的规范2. 查询方法以find | read | g ...