2
我最近爲一個項目佔用了D3,而且我正面臨樹佈局的問題。當我最初加載樹佈局時,它在SVG中保持良好,如下面的屏幕截圖所示。 節點擴展之後樹的位置
但是,一旦我開始打開節點,我打開的節點越多,開始向上越多,從而變得不可見,如下圖所示。
正如你可以看到我所做的SVG滾動垂直,這樣我可以看到更大的樹木。
這裏是我創建樹佈局:
var tree = d3.layout.tree()
.nodeSize([55,30]);
現在我找到了解決方案通過增加「G」元素的高度,它包含所有節點的每一次點擊,有一個節點上孩子,但這不是一個好的解決方案,因爲這會導致整個樹在每次發生這種情況時都會「跳躍」。
//creates the <g> element
var gWidth = 90;
var gHeight = 250;
var vis = svg.append("g")
.attr('id', 'group')
.attr("transform", "translate(" + gWidth + "," + gHeight + ")");
function updateSvg(node){
//moves the g element 50px down on each click that has a child
if(node.children){
gHeight +=50;
vis.attr("transform", "translate(" + gWidth + "," + gHeight + ")");
}
else{
gHeight-=50;
vis.attr("transform", "translate(" + gWidth + "," + gHeight + ")");
// }
}
我也增加SVG的高度,如果有超過一定數量的節點,但我認爲這超出了我當前的問題的範圍。
有什麼我失蹤?
只是檢查節點是否離開屏幕(< 0 || >高度)並相應地縮放svg – thatOneGuy