You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义节点宽度的Highcharts组织图如何在固定宽高容器内居中

解决方案

你可以通过动态计算水平边距实现全场景居中:当生成的组织图实际宽度小于iframe容器可视宽度时,将剩余宽度平分作为左右外边距;当组织图宽度超出容器宽度时,边距设为0保留滚动条逻辑即可。

修改后的事件代码如下:

events: {
  load() {
    let chart = this,
        series = chart.series[0],
        // 获取iframe容器的可视宽度
        containerWidth = chart.container.parentElement.clientWidth,
        newHeight = (series.options.nodeWidth + series.options.nodePadding) * (series.nodeColumns.length + 1);

    let tab_length = [];
    for(var i=0; i < series.nodeColumns.length; i++){
      tab_length.push(series.nodeColumns[i].length);
    }
    let max_col = Math.max(...tab_length), newWidth;
        
    if(series.options.width)
      newWidth = (series.options.width + series.options.nodePadding) * max_col + series.options.nodePadding;

    // 计算水平居中所需左外边距
    let marginLeft = newWidth < containerWidth ? (containerWidth - newWidth) / 2 : 0;
        
    chart.update({
      chart: {
        width: newWidth,
        height: newHeight,
        marginLeft: marginLeft
      }
    })
  }
}

补充说明

如果需要同时实现垂直居中,可按照相同逻辑获取容器可视高度,计算marginTop值加入配置即可。如果iframe容器存在内边距、边框,计算容器宽高时对应减去对应数值即可避免居中偏差。


内容的提问来源于stack exchange,提问作者vegaelce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 01:57:02