jointJS(一)--关于jointJS的初认识

简介:


最近由于项目需要,开始接触jointJS,妥妥不停刷文档模式,先写一下对于jointjs的粗浅认识吧。

我们可以使用JointJS已提供的图元素绘图,也可根据需求自定义一些图元素。除此之外,JointJS创建的图表就是SVG图形,想改变图形样式,就去GoogleSVG相关语法就好啦。另外,它极易上手且操作简单,并且支持所有的现代浏览器。

下面先通过一个小的demo来展示jointjs的使用~

首先先去官网下载一下这些文件,详见HTML代码块head里的内容: 一切准备好就绪,我们就开始了。

先看HTML代码,body就一个div#myholder用来盛放我的画板graph,这里肯定有人会问什么是graph,憋急,请往下看。


 
 
  1. <!DOCTYPE html> 
  2.  
  3. <html> 
  4.  
  5. <head> 
  6.  
  7. <meta charset="UTF-8"
  8.  
  9. <title></title> 
  10.  
  11. <link rel="stylesheet" type="text/css" href="css/joint.css" /> 
  12.  
  13. <script src="js/lib/jquery.min.js" type="text/javascript" charset="utf-8"></script> 
  14.  
  15. <script src="js/lib/lodash.min.js"></script> 
  16.  
  17. <script src="js/lib/backbone-min.js"></script> 
  18.  
  19. <script src="js/lib/joint.js"></script> 
  20.  
  21. </head> 
  22.  
  23. <body> 
  24.  
  25. <div id="myholder"></div> 
  26.  
  27. </body> 
  28.  
  29. <script src="js/createjoint.js" type="text/javascript" charset="utf-8"></script> 
  30.  
  31. </html>  

JS代码如下: 首先是定义画板和画布


 
 
  1. var graph = new joint.dia.Graph; 
  2.  
  3. var paper = new joint.dia.Paper({ 
  4.  
  5. el: $('#myholder'),//此处是你要放graph的容器 
  6.  
  7. width: 1300, 
  8.  
  9. height: 800, 
  10.  
  11. model: graph, 
  12.  
  13. gridSize: 1 
  14.  
  15. });  

接下来,就先画个简单的矩形,想要改变一些默认样式的话需要了解元素的SVG DOM结构:


 
 
  1. var rect = new joint.shapes.basic.Rect({ 
  2.     position: { 
  3.         x: 100, 
  4.         y: 30 
  5.     }, 
  6.     size: { 
  7.         width: 200, 
  8.         height: 30 
  9.     }, 
  10.     attrs: { 
  11.         //attr SVG attr      prop- custom data 
  12.         rect: { 
  13.             fill: 'rgb(238,244,247)'
  14.             'stroke''rgb(47,152,223)'
  15.             'stroke-width''1px' 
  16.                 //svg上色 fill stroke 
  17.         }, 
  18.         text: { 
  19.             text: 'my box'
  20.             fill: 'black' 
  21.         } 
  22.     } 
  23. });  

跟矩形相似,我们也可以画个椭圆,代码如下:


 
 
  1. var ellipse = new joint.shapes.basic.Rect({ 
  2.     position: { 
  3.         x: 100, 
  4.         y: 30 
  5.     }, 
  6.     size: { 
  7.         width: 200, 
  8.         height: 30 
  9.     }, 
  10.     attrs: { 
  11.         //attr SVG attr      prop- custom data 
  12.         rect: { 
  13.             fill: 'rgb(238,244,247)'
  14.             'stroke''rgb(47,152,223)'
  15.             'stroke-width''1px'
  16.             'rx''10px'
  17.             'ry''30px' 
  18.                 //svg上色 fill stroke 
  19.         }, 
  20.         text: { 
  21.             text: 'ellipse'
  22.             fill: 'pink' 
  23.         } 
  24.     } 
  25. });  

要让他们有一定的距离


 
 
  1. ellipse.translate(300); //两块的距离 

接下来,再来画个连线:


 
 
  1. var link = new joint.dia.Link({ 
  2.     source: { 
  3.         id: rect.id 
  4.     }, 
  5.     target: { 
  6.         id: ellipse.id 
  7.     } 
  8. });  

最后,把前面造的对象都放到画板中:


 
 
  1. graph.addCells([rect, rect2, link]); 

那么,一个小小的demo就实现了,是不是挺简单的,接下来我还会陆续分享使用jointjs中的问题以及我找到的最好的方法,jointjs的初认识就先到这里啦,加油!


作者:佳佳嘉嘉嘉

来源:51CTO

相关文章
|
SpringCloudAlibaba Java Nacos
客户端启动报错java.lang.IllegalArgumentException: no server available的解决方案 SpringCloud中 Nacos做注册中心
客户端启动报错java.lang.IllegalArgumentException: no server available的解决方案 SpringCloud中 Nacos做注册中心
797 0
|
人工智能 自然语言处理 JavaScript
微软开源课程!21节课程教你开发生成式 AI 应用所需了解的一切
微软推出的生成式 AI 入门课程,涵盖 21 节课程,帮助开发者快速掌握生成式 AI 应用开发,支持 Python 和 TypeScript 代码示例。
1328 15
|
存储 前端开发 索引
React 图片轮播组件 Image Carousel
本文介绍了如何使用React创建图片轮播组件。首先,解释了图片轮播的基本概念和组件结构,包括图片容器、导航按钮、指示器和自动播放功能。接着,通过代码示例详细说明了创建基本组件、添加自动播放、处理边界情况的步骤。还探讨了常见问题如状态更新不及时、内存泄漏和样式问题,并提供了解决方案。最后,介绍了进阶优化,如添加过渡效果、支持触摸事件和动态加载图片,帮助读者构建更完善的轮播组件。
464 16
|
存储 云安全 安全
云标准:云计算标准
云计算标准涵盖基础设施、服务、安全、应用等多个方面,旨在提高系统的互操作性、可靠性和安全性。标准分为国际、区域、国家、行业和企业五个层次,由中国ISO、TC260、TC28等组织制定,如GB/T 29194-2012、GB/T 31168-2014等,为云计算技术的发展提供支持。
930 5
|
存储 人工智能 大数据
AI驱动下的云存储创新
随着大数据时代的到来,云存储作为数据存储和管理的核心基础设施,其重要性日益凸显。同时, AI 快速发展也为云存储的进化与创新提供了强大的驱动力。本话题将解读AI 驱动下云存储的进化趋势,分享阿里云存储的创新技术,助力企业实现数字化升级。
1143 5
|
存储 缓存 监控
Sentry Web 前端监控 - 最佳实践(官方教程)
Sentry Web 前端监控 - 最佳实践(官方教程)
1986 0
Sentry Web 前端监控 - 最佳实践(官方教程)
|
机器学习/深度学习 人工智能 自然语言处理
Python转换Excel到Markdown
Python转换Excel到Markdown
657 0
|
弹性计算 人工智能 并行计算
带你读《弹性计算技术指导及场景应用》——3. Ada Lovelace架构解读及RTX 4090性能测试分析(2)
带你读《弹性计算技术指导及场景应用》——3. Ada Lovelace架构解读及RTX 4090性能测试分析(2)
1632 1