logo

X6

  • 文档
  • API
  • 图表示例
  • 常见问题
  • 更新日志
  • XFlow
  • 所有产品antv logo arrow
  • 2.x
  • 画布
    • 画布
    • 网格
    • 背景
    • 画布平移
    • 画布缩放
    • 视口变换
    • 坐标系
  • 元素
    • 元素
    • 节点
    • 边
    • 标签
    • 箭头
    • 元素属性
    • 交互
  • MVC
    • 模型
    • 视图
  • 扩展
    • 节点工具
    • 边上工具
    • 路由
    • 连接器
    • 节点的锚点
    • 边的锚点
    • 连接点
    • 连接桩布局
    • 连接桩标签布局
    • 属性
    • 高亮器
    • 滤镜

节点的锚点

上一篇
连接器
下一篇
边的锚点

Resources

Ant Design
Galacea Effects
Umi-React 应用开发框架
Dumi-组件/文档研发工具
ahooks-React Hooks 库

社区

体验科技专栏
seeconfSEE Conf-蚂蚁体验科技大会

帮助

GitHub
StackOverflow

more products更多产品

Ant DesignAnt Design-企业级 UI 设计语言
yuque语雀-知识创作与分享工具
EggEgg-企业级 Node 开发框架
kitchenKitchen-Sketch 工具集
GalaceanGalacean-互动图形解决方案
xtech蚂蚁体验科技
© Copyright 2025 Ant Group Co., Ltd..备案号:京ICP备15032932号-38

Loading...

当连接到节点时,可以通过 NodeAnchor 来指定被连接的节点的锚点,锚点与连接点 ConnectionPoint 共同确定了边的起点和终点。

  • 起点:从第一个路径点或目标节点的中心(没有路径点时)画一条参考线到源节点的锚点,然后根据 connectionPoint 指定的交点计算方法,计算参考线与图形的交点,该交点就是边的起点。
  • 终点:从最后一个路径点或源节点的中心(没有路径点时)画一条参考线到目标节点的锚点,然后根据 connectionPoint 指定的交点计算方法,计算参考线与图形的交点,该交点就是边的终点。

X6 内置了以下几种锚点定义。

  • center 边链接的元素的中心点(默认值)。
  • top 边链接的元素的顶部中心点。
  • bottom 边链接的元素的底部中心点。
  • left 边链接的元素的左侧中心点。
  • right 边链接的元素的右侧中心点。
  • midSide 边链接的元素的最近侧中心点。
  • topLeft 边链接的元素的左上角。
  • topRight 边链接的元素的右上角。
  • bottomLeft 边链接的元素的左下角。
  • bottomRight 边链接的元素的右下角。
  • orth 正交点。
  • nodeCenter 节点的中心点。
Anchor

可以在创建边时指定锚点:

const edge = graph.addEdge({
source: {
cell: 'source-id',
anchor: {
name: 'midSide',
args: {
dx: 10,
},
},
},
target: {
cell: 'target-id',
anchor: 'orth', // 没有参数时可以简化写法
},
})

创建之后可以调用 edge.setSource 和 edge.setTarget 方法来修改锚点:

edge.setSource({
cell: 'source-id',
anchor: {
name: 'midSide',
args: {
dx: 10,
},
},
})

在创建画布时,可以通过 connecting 选项来设置全局默认的锚点:

new Graph({
connecting: {
anchor: {
name: 'midSide',
args: {
dx: 10,
},
},
},
})

没有参数时可以简化为:

new Graph({
connecting: {
anchor: 'midSide',
},
})

内置锚点

center

元素中心点,支持如下参数:

参数名参数类型是否必选默认值参数说明
dxnumber | string否0X 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
dynumber | string否0Y 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
rotateboolean否false是否使用元素跟随节点旋转后的包围盒,默认不考虑旋转角度。

top

元素顶部中心点,支持如下参数:

参数名参数类型是否必选默认值参数说明
dxnumber | string否0X 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
dynumber | string否0Y 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
rotateboolean否false是否使用元素跟随节点旋转后的包围盒,默认不考虑旋转角度。

bottom

元素底部中心点,支持如下参数:

参数名参数类型是否必选默认值参数说明
dxnumber | string否0X 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
dynumber | string否0Y 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
rotateboolean否false是否使用元素跟随节点旋转后的包围盒,默认不考虑旋转角度。

left

元素左侧中心点,支持如下参数:

参数名参数类型是否必选默认值参数说明
dxnumber | string否0X 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
dynumber | string否0Y 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
rotateboolean否false是否使用元素跟随节点旋转后的包围盒,默认不考虑旋转角度。

right

元素右侧中心点,支持如下参数:

参数名参数类型是否必选默认值参数说明
dxnumber | string否0X 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
dynumber | string否0Y 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
rotateboolean否false是否使用元素跟随节点旋转后的包围盒,默认不考虑旋转角度。

midSide

最靠近边的那一侧中心点,支持如下参数:

参数名参数类型是否必选默认值参数说明
paddingnumber否0通过放大元素的包围盒 padding 像素,来偏移中心点。
rotateboolean否false是否使用元素跟随节点旋转后的包围盒,默认不考虑旋转角度。
direction'H' | 'V'否-连接点的方向,比如如果设置为 H,只能连接到节点的左侧或者右侧的中心点,会根据位置自动判断。

topLeft

元素左上角,支持如下参数:

参数名参数类型是否必选默认值参数说明
dxnumber | string否0X 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
dynumber | string否0Y 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
rotateboolean否false是否使用元素跟随节点旋转后的包围盒,默认不考虑旋转角度。

topRight

元素右上角,支持如下参数:

参数名参数类型是否必选默认值参数说明
dxnumber | string否0X 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
dynumber | string否0Y 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
rotateboolean否false是否使用元素跟随节点旋转后的包围盒,默认不考虑旋转角度。

bottomLeft

元素左下角,支持如下参数:

参数名参数类型是否必选默认值参数说明
dxnumber | string否0X 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
dynumber | string否0Y 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
rotateboolean否false是否使用元素跟随节点旋转后的包围盒,默认不考虑旋转角度。

bottomRight

元素右下角,支持如下参数:

参数名参数类型是否必选默认值参数说明
dxnumber | string否0X 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
dynumber | string否0Y 轴偏移量,支持数字绝对偏移量和百分比相对偏移量。
rotateboolean否false是否使用元素跟随节点旋转后的包围盒,默认不考虑旋转角度。

orth

正交点,支持如下参数:

参数名参数类型是否必选默认值参数说明
paddingnumber否0X 轴偏移量。

nodeCenter

节点的中心,支持如下参数:

参数名参数类型是否必选默认值参数说明
dxnumber否0X 轴偏移量。
dynumber否0Y 轴偏移量。

自定义锚点

锚点定义是一个具有如下签名的函数,返回锚点。

export type Definition<T> = (
this: EdgeView,
nodeView: NodeView,
magnet: SVGElement,
ref: Point.PointLike | SVGElement,
args: T,
type: Edge.TerminalType,
) => Point
参数名参数类型参数说明
thisEdgeView边的视图。
nodeViewNodeView连接的节点视图。
magnetSVGElement连接的节点上的元素。
refPoint.PointLike | SVGElement参照点/元素。
argsT参数。
typeEdge.TerminalType边的终端类型。

完成锚点定义后,我们先注册锚点:

Graph.registerAnchor('custom-anchor', ...)

注册以后我们就可以通过锚点名称来使用:

new Graph({
connecting: {
anchor: {
name: 'custom-anchor',
},
},
})