基于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) 如果上图是你需要的功能效果图,那么请往下看,我有写出来例子哦~ 使用这个插件有几个好处,首先: ...
随机推荐
- MCMC蒙特卡罗马尔科夫模型
https://www.cnblogs.com/pinard/p/6645766.html https://blog.csdn.net/saltriver/article/details/521949 ...
- SpringBoot整合ElasticSearch:基于Jest技术
1.给pom.xml添加依赖 <!--SpringBoot默认使用SpringData ElasticSearch模块进行操作 <dependency> <groupId> ...
- Function.apply.bind()与Function.apply.bind()
1.Function.apply.bind(…) 我在学习promise部分的时候遇到了这样的代码: Promise.resolve([10,20]).then(Function.apply.bind ...
- python定制后处理云图
用后处理软件处理的云图会出现这样或那样的不满意,其实我们可以将求解数据导出以后,借助python定制云图. 我们以fluent为例 求解完成之后,我们将我们需要做云图的物理量以ASCII导出 如下的p ...
- 微信小程序“一劳永逸”的接口封装
前言 最近都在研究小程序了,我可以的! 需求 之前都是用vue来开发项目的,接口模块我特意封装了一下.感觉也可以记录一下 小程序的接口虽说简单,但是重复调用那么多,显得不专业(一本正经的胡说八道) 还 ...
- mongo最大连接数查看
进入客户端 mongo 输入查看命令 db.serverStatus().connections
- Oracle表空间 与 分页
目录 Oracle表空间 表空间的构建以及数据文件的挂接 创建一个用户,并指定专有的永久表空间和临时表空间 伪列 分页 Oracle表空间 一个表空间可以包含1至n个数据文件 一个数据文件必然属于某个 ...
- T-MAX-测试总结
一.项目相关: 作业相关 具体描述 所属班级 2019秋福大软件工程实践Z班 作业要求 团队作业第五次-项目冲刺 作业正文 T-MAX组--测试总结 团队名称 T-MAX小组 作业目标 将团队的项目做 ...
- open jdk性能与稳定性测试比较(转载)
因为oracle jdk从jdk8u201之后就不提供免费下载了,所以最近在看openjdk的分支实现,网上搜了下,有下列选择和比较(我们目前主要在跑的是open jdk,不少人推荐的zulu ope ...
- Grafana 在添加邮件和钉钉报警之后不报警的原因是没有重启grafana 不生效重启。
即使在grafana页面上面添加也需要重启.配置邮件配置文件更需要重启. systemctl restart grafana-server.service