let ref = {w:200,h:80,w_gap:40,h_gap:20}
/**
* 先定本身的top/ left,再定子节点的top/ left,以及参与计算的个数,然后再定兄弟的top/ left
* deltaCnt 为计算高度的 子节点个数
*node 为节点数据,ref 为每个节点的基本信息:宽高间距
* */
function toSetXy(node, ref){
let children = node.children || [];
let childCnt = children.length
let deltaCnt = 0
for(let i=0; i<childCnt;i++){
let child = children[i];
child._top = node._top + (deltaCnt ) * ( ref.h + ref.h_gap)
child._left = node._left + ref.w + ref.w_gap
toSetXy(child,ref)
deltaCnt += child._deltaCnt +1
}
node._deltaCnt = deltaCnt ==0 ? 0:deltaCnt -1// 当没有子节点时,则为0,有子节点时,则为子节点个数-1
}
【JS】SVG画树形图计算树形节点位置
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...