数据结构(集合)如下(parentid为null表示根节点。),表示页面上一系列 dom 节点:
[
{
id: 'xxxxx',
parentId: 'yyyyyy',
width: 120,
height: 240,
top: 50,
left: 160
}
]
交互逻辑:
拖拽其中某一个节点,表示移动当前节点(及其所有子节点),如果移动到某一个节点附近(节点后面 150px,上下不超过100px),表示设置为该节点的子节点。(当然,父节点需要排除选中的节点及其所有子节点)
激活规则如下:
现在的难点在于,如果一个节点的子节点很多,如果想移动一个节点到该节点的所有子节点最后面,那么很可能会超过 150px 的限制;
综上所述,如何能找到最近的父节点呢?
注意需要排序,如上图“Z”可能需要放到K、L、M、N的后面,所以不止需要确定“父节点”,还需要确定前面或者后面一个兄弟节点。