Antv X6官网:https://x6.antv.vision/zh/docs/tutorial/about
首先展示一下效果:
这是只是做了一个简单的demo,具体项目的需求就看个人怎么使用,下面附上demo的全部代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="x6.js"></script> <title>X6流程图</title> <style type="text/css"> #container { width: 100%; height: calc(100vh); } @keyframes ant-line { to { stroke-dashoffset: -1000; } } </style> </head> <body> <div id="container" style="position: fixed;"></div> </body> <script type=" text/javascript"> const male = \'images/1.png\' X6.Graph.registerNode( \'org-node\', { width: 180, height: 60, markup: [{ tagName: \'rect\', selector: \'body\', }, { tagName: \'image\', selector: \'avatar\', }, { tagName: \'text\', selector: \'rank\', }, { tagName: \'text\', selector: \'name\', }, ], attrs: { body: { refWidth: \'100%\', refHeight: \'100%\', fill: \'#FFFFFF\', stroke: \'#000000\', strokeWidth: 2, rx: 10, ry: 10, pointerEvents: \'visiblePainted\', }, avatar: { width: 48, height: 48, refX: 8, refY: 6, }, rank: { refX: 0.9, refY: 0.2, fontFamily: \'Courier New\', fontSize: 14, textAnchor: \'end\', //textDecoration: \'underline\', }, name: { refX: 0.9, refY: 0.6, fontFamily: \'Courier New\', fontSize: 14, fontWeight: \'800\', textAnchor: \'end\', }, }, }, true, ) const graph = new X6.Graph({ container: document.getElementById(\'container\'), grid: { size: 20, //网格大小 visible: true, //是否开启网格画布 type: \'dot\', // \'dot\' | \'fixedDot\' | \'mesh\'| //网格样式 args: { color: \'#75664D\', // 网格线/点颜色 thickness: 1, // 网格线宽度/网格点大小 }, }, //对齐线是移动节点排版的辅助工具 snapline: true, connecting: { snap: true, highlight: true, }, }) function member(x, y, rank, name, image, background, textColor) { return graph.addNode({ width: 180, // Number,可选,节点大小的 width 值 height: 60, // Number,可选,节点大小的 height 值 x:x, y:y, shape: \'org-node\', attrs: { body: { fill: background, stroke: \'none\', }, avatar: { opacity: 0.7, \'xlink:href\': image, }, rank: { text: rank, fill: \'#000\', wordSpacing: \'-5px\', letterSpacing: 0, }, name: { text: name, fill: \'#000\', fontSize: 13, fontFamily: \'Arial\', letterSpacing: 0, }, }, }) } const node1 = member(200, 160, \'张三\', \'已审批(同意)\', male, \'green\'); const node2 = member(460, 160, \'王五\', \'已审批(驳回)\', male, \'yellow\'); const node3 = member(720, 160, \'李四\', \'正在审批中\', male, \'red\'); const node4 = member(980, 160, \'王麻子\', \'未审批\', male, \'#f2f2f2\'); const edge1 = new X6.Shape.Edge({ id: \'edge1\', source: node1, target: node2, router: { name: \'er\', args: { offset: \'center\', }, }, attrs: { line: { stroke: \'#000\', strokeDasharray: 5, targetMarker: \'classic\', style: { animation: \'ant-line 30s infinite linear\', }, }, }, }) const edge2 = new X6.Shape.Edge({ id: \'edge2\', source: node2, target: node3, router: { name: \'er\', args: { offset: \'center\', }, }, attrs: { line: { stroke: \'#000\', strokeDasharray: 5, targetMarker: \'classic\', style: { animation: \'ant-line 30s infinite linear\', }, }, }, }) const edge3 = new X6.Shape.Edge({ id: \'edge3\', source: node3, target: node4, router: { name: \'er\', args: { offset: \'center\', }, }, attrs: { line: { stroke: \'#000\', strokeDasharray: 5, targetMarker: \'classic\', style: { animation: \'ant-line 30s infinite linear\', }, }, }, }) graph.addEdge(edge1) graph.addEdge(edge2) graph.addEdge(edge3) </script> </html>
节点之间的动画属性=》
<style>
@keyframes ant-line {
to {
stroke-dashoffset: -1000;
}
}
</style>
js下载链接: https://pan.baidu.com/s/1YSezUqOTqdPkBCDTfA7Rpg 提取码: 976p