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

如何使用CSS Grid创建时间表?元素跨多列布局求助

用CSS Grid实现跨列时间表的解决方案

你的当前HTML结构把列标题、行标题和课程内容拆成了三个独立容器,这导致无法利用CSS Grid的跨列/跨行特性。要实现目标时间表,需要将所有元素整合到一个Grid容器中,通过定义网格行列,并为每个元素指定位置和跨度来实现。

修正后的HTML结构

<div class="timetable-grid">
  <!-- 顶部时间表头 -->
  <div class="grid-item time-header">时间</div>
  <div class="grid-item time-slot">1</div>
  <div class="grid-item time-slot">2</div>
  <div class="grid-item time-slot">3</div>
  <div class="grid-item time-slot">4</div>
  <div class="grid-item time-slot">5</div>
  <div class="grid-item time-slot">6</div>

  <!-- 左侧日期行 + 课程内容 -->
  <div class="grid-item day">Monday</div>
  <div class="grid-item class-item class-a">A</div> <!-- 跨3列 -->
  
  <div class="grid-item day">Tuesday</div>
  <div class="grid-item class-item class-b">B</div> <!-- 跨2列 -->
  
  <div class="grid-item day">Wednesday</div>
  <div class="grid-item class-item class-c">C</div> <!-- 跨1列 -->
  
  <div class="grid-item day">Thursday</div>
  <div class="grid-item class-item class-e">E</div> <!-- 跨4列 -->
  
  <div class="grid-item day">Friday</div>
  <div class="grid-item class-item class-f">F</div> <!-- 跨2列 -->
</div>

对应的CSS代码

.timetable-grid {
  display: grid;
  /* 定义列:1列日期 + 6列时间 */
  grid-template-columns: 120px repeat(6, 1fr);
  /* 定义行:1行时间表头 + 5行日期 */
  grid-template-rows: 60px repeat(5, 100px);
  gap: 2px;
  background-color: #eee;
  padding: 2px;
  max-width: 1000px;
  margin: 0 auto;
}

.grid-item {
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: white;
  padding: 10px;
  border: 1px solid #ddd;
}

/* 表头样式 */
.time-header, .day {
  font-weight: bold;
  background-color: #f5f5f5;
}

/* 课程跨列设置 */
.class-a {
  /* 从第2列开始,跨3列 */
  grid-column: 2 / span 3;
}

.class-b {
  grid-column: 2 / span 2;
}

.class-e {
  grid-column: 2 / span 4;
}

.class-f {
  grid-column: 4 / span 2;
}

关键知识点

  • grid-column: span N:指定元素跨越N列,也可以用grid-column: 起始列号 / 结束列号(比如grid-column: 2 / 5表示从第2列到第5列,包含3列)。
  • 统一Grid容器:所有元素必须在同一个Grid容器内,才能利用Grid的布局特性进行跨列/跨行定位。
  • 网格行列定义:通过grid-template-columns和grid-template-rows明确网格的结构,确保表头和内容对齐。

你可以根据实际需求调整行列的宽度、高度,以及课程的跨列数量和位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:59:20