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

如何让HTML报表模板左侧标题仅按需重复显示?

解决方案

要实现条目多时自动重复左侧标题的新行,核心是调整模板的循环逻辑,让每个条目对应一套完整的标题组,而非把所有标题集中放置。以下是具体实现步骤:

1. 修正原有代码语法错误

你现有代码里的 <dl < class="float-left"> 存在语法错误,应改为 <dl class="float-left">。

2. 根据条目数量切换布局

如果需要保留1-2个条目时的原有布局,同时在条目超过2个时自动每行重复标题,可通过模板条件判断+循环实现:

<section class="keep-together">
  <h5 class="uptick-title no-page-break-after">Results</h5>
  <p>The system results as follows.</p>
  {% if all_servicetasks %}
    {% if all_servicetasks|length <= 2 %}
      <!-- 条目少的场景:沿用原有布局 -->
      <div class="clearfix">
        <dl class="float-left">
          <dt>Asset</dt>
          <dt>These results indicate:</dt>
          <dt>Location:</dt>
          <dt>Fitting:</dt>
        </dl>
        <div class="float-left">
          {% for task in all_servicetasks %}
            <dl>
              <dd>{{ task.asset }}</dd>
              <dd>{{ task.result_indication }}</dd>
              <dd>{{ task.location }}</dd>
              <dd>{{ task.fitting }}</dd>
              {% if not loop.last %}
                <hr> <!-- 条目间添加分隔线 -->
              {% endif %}
            </dl>
          {% endfor %}
        </div>
      </div>
    {% else %}
      <!-- 条目多的场景:每行重复标题 -->
      {% for task in all_servicetasks %}
        <div class="service-task-row clearfix">
          <dl class="float-left">
            <dt>Asset</dt>
            <dt>These results indicate:</dt>
            <dt>Location:</dt>
            <dt>Fitting:</dt>
          </dl>
          <dl class="float-left">
            <dd>{{ task.asset }}</dd>
            <dd>{{ task.result_indication }}</dd>
            <dd>{{ task.location }}</dd>
            <dd>{{ task.fitting }}</dd>
          </dl>
        </div>
      {% endfor %}
    {% endif %}
  {% endif %}
</section>

3. 配套CSS调整布局样式

添加以下CSS保证标题与内容对齐,行布局正常:

/* 清除浮动 */
.clearfix::after {
  content: "";
  display: table;
  clear: both;
}

/* 左浮动通用样式 */
.float-left {
  float: left;
  margin-right: 2em;
}

/* 条目行间距 */
.service-task-row {
  margin-bottom: 1.2em;
}

/* 标题样式:和内容行高对齐 */
dl.float-left dt {
  margin: 0.6em 0;
  font-weight: bold;
}

/* 内容样式:去掉默认缩进,和标题行高对齐 */
dl.float-left dd {
  margin: 0.6em 0;
  margin-left: 0;
}

原理说明

原有代码的问题是把所有标题集中在一个 <dl> 里,内容堆在右侧无法与多个条目一一对应。通过循环每个服务任务条目,为每个条目单独渲染一套标题组和内容,就能实现条目增多时自动生成带左侧标题的新行。若无需保留少条目时的布局,直接使用 else 块里的循环逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 19:03:15