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

如何实现Slate中Gantt Chart小进度条内标签1的动态适配显示?

甘特图标签动态适配进度条的实现方案

下面提供纯CSS和CSS+JS两种实现方案,解决进度条区域较小时标签无法完整显示的问题:

纯CSS方案(依赖容器查询)

利用CSS容器查询和动态字体单位,让标签字体随进度条宽度自动缩放:

HTML结构

<div class="gantt-container">
  <!-- 窄进度条示例 -->
  <div class="gantt-bar">
    <div class="gantt-progress" style="width: 15%">
      <span class="gantt-label">标签1</span>
    </div>
  </div>
  <!-- 宽进度条示例 -->
  <div class="gantt-bar">
    <div class="gantt-progress" style="width: 60%">
      <span class="gantt-label">完整标签内容示例</span>
    </div>
  </div>
</div>

CSS样式

.gantt-bar {
  width: 100%;
  height: 32px;
  background-color: #e0e0e0;
  margin: 8px 0;
  border-radius: 4px;
  overflow: hidden;
}

.gantt-progress {
  height: 100%;
  background-color: #2196F3;
  display: flex;
  align-items: center;
  justify-content: center;
  /* 启用容器查询,以进度条宽度为参考 */
  container-type: inline-size;
}

.gantt-label {
  white-space: nowrap;
  color: #fff;
  font-weight: 500;
  /* 基于进度条宽度动态调整字体大小:最小0.6rem,最大1rem,中间按容器宽度比例缩放 */
  font-size: clamp(0.6rem, 7cqi, 1rem);
  padding: 0 4px;
}

CSS+JS兼容方案(适配旧浏览器)

通过JS计算标签与进度条的宽度比例,动态缩放标签尺寸:

HTML结构

和纯CSS方案一致,无需修改

补充CSS样式

在原有CSS基础上添加:

.gantt-label {
  /* 初始缩放为1,transform-origin确保缩放时居中 */
  transform: scale(1);
  transform-origin: center;
  transition: transform 0.2s ease;
}

JS代码

function resizeGanttLabels() {
  document.querySelectorAll('.gantt-progress').forEach(progressBar => {
    const label = progressBar.querySelector('.gantt-label');
    if (!label) return;

    const barWidth = progressBar.offsetWidth;
    const labelWidth = label.offsetWidth;

    // 当标签宽度超过进度条时,计算缩放比例
    if (labelWidth > barWidth) {
      const scaleRatio = barWidth / labelWidth;
      label.style.transform = `scale(${scaleRatio})`;
    } else {
      label.style.transform = 'scale(1)';
    }
  });
}

// 页面加载完成后初始化
window.addEventListener('load', resizeGanttLabels);
// 窗口大小变化时重新调整
window.addEventListener('resize', resizeGanttLabels);

两种方案都能实现标签随进度条宽度动态适配,纯CSS方案更简洁,JS方案兼容性更好,可根据项目环境选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:57:21