基于jsPlumb实现的可拖拽自定义流程图

所属分类:输入,其他-拖和放,独立的部件

 22033  154  查看评论 (4)
分享到微信朋友圈
X
基于jsPlumb实现的可拖拽自定义流程图 ie兼容11

更新时间:2020-10-28 00:26:05

使用方法

一,需要引用的文件:

<link rel="stylesheet" type="text/css" href="./css/jquery-ui.min.css">
<link rel="stylesheet" type="text/css" href="./css/style.css">
<script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script>
<script src="https://www.jq22.com/jquery/jquery-ui-1.11.0.js"></script>
<script type="text/javascript" src="./js/jquery.jsPlumb.min.js"></script>
<script type="text/javascript" src="./js/index.js"></script>

二、官方jsPlumb.js方法参考:

https://github.com/wangduanduan/jsplumb-chinese-tutorial

jsplumb 中文基础教程

 jsplumb能干什么?

那么如果你应该使用它取决于你想用jsPlumb做什么。该框架适用于必须绘制图表的Web应用程序,例如类似于Visio的应用程序或工作流程设计器等。由于图表项目和连接的所有参数都是非常精细可控的,因此您可以绘制您可以想到的任何类型的图表的!

基本概念

  • Souce 源节点

  • Target 目标节点

  • Anchor 锚点 锚点位于源节点或者目标节点上

  • Endpoint 端点 端点位于连线上

  • Connector 连接 或者也可以理解是连接线

  • Overlays 可以理解为在连接线上的文字或者箭头之类的东东

ttt2.png


Anchors [todo]

锚点类型:

  • 静态锚点

  • 动态锚点

  • 边缘锚点

  • 固定锚点

Connectors [todo]

连线类型:

  • Bezier 贝塞尔曲线

  • Straight 直线

  • Flowchart 90度转角线

  • State Machine 状态机

Endpoints [todo]

端点类型:

  • Dot 圆点

  • Rectangle 矩形

  • Image 图像

  • Blank 空白

Overlays [todo]

Overlays可以理解为在连接线上的文字或者箭头之类的东东

Overlays类型

  • Arrow

  • Label

  • PlainArrow

  • Diamond

  • Custom

// 连线上overlay可以多个,
// 每个overlay可以指定相对位置
// label类型的overlay实际上可以在里面直接写html
// 
jsPlumb.connect({
  ...
  connectorOverlays: [
    ['Arrow', {
      width: 10,
      length: 10,
      location: 1
    }],
    ['Label', {
      label: '<button class="delete-node-btn">X</button>',
      cssClass: '',
      labelStyle: {
        color: 'red'
      },
      events: {
        click: function (labelOverlay, originalEvent) {
          console.log('click on label overlay for :' + labelOverlay.component)
          console.log(labelOverlay)
          console.log(originalEvent)
        }
      }
    }]
  ]
});

基础demos

连接两个节点

jsPlumb.ready方法和jquery的ready方法差不多的功能,jsPlumb.connect用于建立连线

<div id="diagramContainer">
    <div id="item_left" class="item"></div>
    <div id="item_right" class="item" style="margin-left:50px;"></div>
  </div>
  <script src="https://cdn.bootcss.com/jsPlumb/2.6.8/js/jsplumb.min.js"></script>
  <script>
    /* global jsPlumb */
    jsPlumb.ready(function () {
      jsPlumb.connect({
        source: 'item_left',
        target: 'item_right',
        endpoint: 'Dot'
      })
    })
  </script>

参数说明: jsPlumb.connect(config) return connection

参数参数类型是否必须说明
sourceString,Object,Endpoint连线源的标识,可以是id, element, 或者Endpoint
targetString,Object,Endpoint连线目标的标识,可以是id, element, 或者Endpoint
endpointString可选端点类型,形状


相关插件-拖和放,独立的部件

可拖拽图片文本框(类似QQ发送消息框)

支持拖拽图片,并且将图片转换为base64,兼容IE8以上所有浏览器
  拖和放
 30162  304

jQuery双击拖拽图片

jQuery鼠标双击事件拖拽图片
  拖和放
 29921  298

jQuery九宫格拖拽效果

九宫格拖拽效果简单上手附带代码注释详解
  拖和放
 29093  315

图标拖拽效果,兼容所有浏览器

原生JS实现图标图片拖拽,封装好了,可以直接拿去使用
  拖和放
 38503  374

讨论这个项目(4)回答他人问题或分享插件使用方法奖励jQ币 评论用户自律公约

    蜜果 0
    2022/6/21 15:13:45
    我得注册个账号,过来夸夸这个,非常nice!!!! 回复
    永夜的微尘 0
    2021/2/22 16:28:48
    这个能通过后台传过来的json数据生成流程图吗
        半醒狐狸0
        2021/3/23 8:24:09
        可以的,只不过是把拖拽的事件改成了遍历json数据
    回复
    凌乱的华丽…… 0
    2021/2/6 16:02:58
    要是能另存为图片就更好了👍👍👍 回复
😃
  • 😀
  • 😉
  • 😥
  • 😵
  • 😫
  • 😘
  • 😡
  • 👍
  • 🌹
  • 👏
  • 🍺
  • 🍉
  • 🌙
  • 💖
  • 💔
😃
  • 😀
  • 😉
  • 😥
  • 😵
  • 😫
  • 😘
  • 😡
  • 👍
  • 🌹
  • 👏
  • 🍺
  • 🍉
  • 🌙
  • 💖
  • 💔
取消回复