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

求基于Grid的响应式活动日程表模板(支持跨列休息块)

响应式跨列日程表(Grid实现)

以下是基于CSS Grid实现的符合需求的日程表模板,完美支持跨列休息块、响应式布局切换:

HTML 结构

<div class="schedule-container">
  <!-- 时间轴区域 -->
  <div class="time-column">
    <div class="time-slot">09:00</div>
    <div class="time-slot">09:30</div>
    <div class="time-slot">10:00</div>
    <div class="time-slot">10:30</div>
    <div class="time-slot">11:00</div>
    <div class="time-slot">11:30</div>
    <div class="time-slot">12:00</div>
    <div class="time-slot">12:30</div>
    <div class="time-slot">13:00</div>
    <div class="time-slot">13:30</div>
    <div class="time-slot">14:00</div>
  </div>

  <!-- 场地与日程内容区域 -->
  <div class="schedule-content">
    <!-- 场地标题行 -->
    <div class="venue-row">
      <div class="venue">场地A</div>
      <div class="venue">场地B</div>
      <div class="venue">场地C</div>
    </div>

    <!-- 日程网格 -->
    <div class="schedule-grid">
      <!-- 普通活动项 -->
      <div class="event" style="grid-row: 1 / 3; grid-column: 1;">活动A1</div>
      <div class="event" style="grid-row: 1 / 2; grid-column: 2;">活动B1</div>
      <div class="event" style="grid-row: 2 / 4; grid-column: 2;">活动B2</div>
      <div class="event" style="grid-row: 1 / 4; grid-column: 3;">活动C1</div>

      <!-- 跨列休息块 -->
      <div class="event break" style="grid-row: 3 / 5; grid-column: 1 / 4;">茶歇时间</div>

      <div class="event" style="grid-row: 5 / 7; grid-column: 1;">活动A2</div>
      <div class="event" style="grid-row: 5 / 6; grid-column: 2;">活动B3</div>
      <div class="event" style="grid-row: 6 / 8; grid-column: 3;">活动C2</div>

      <div class="event break" style="grid-row: 7 / 9; grid-column: 1 / 4;">午餐休息</div>

      <div class="event" style="grid-row: 9 / 11; grid-column: 1;">活动A3</div>
      <div class="event" style="grid-row: 9 / 11; grid-column: 2;">活动B4</div>
      <div class="event" style="grid-row: 9 / 10; grid-column: 3;">活动C3</div>
    </div>
  </div>
</div>

CSS 样式

/* 基础样式重置 */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: sans-serif;
}

.schedule-container {
  display: flex;
  margin: 2rem;
  gap: 1rem;
}

/* 时间轴样式 */
.time-column {
  display: flex;
  flex-direction: column;
  gap: 2rem;
  padding-right: 1rem;
  text-align: right;
}

.time-slot {
  height: 2rem;
  line-height: 2rem;
  color: #666;
}

/* 内容区域容器 */
.schedule-content {
  flex: 1;
  min-width: 0;
}

.venue-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: #eee;
}

.venue {
  padding: 0.5rem;
  text-align: center;
  background: #fff;
  font-weight: bold;
}

/* 核心日程网格 */
.schedule-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: 2rem;
  gap: 1px;
  background: #eee;
  margin-top: 0.5rem;
}

.event {
  background: #4285f4;
  color: #fff;
  padding: 0.25rem;
  overflow: hidden;
  display: flex;
  align-items: center;
  padding-left: 0.5rem;
}

.event.break {
  background: #fbbc05;
  color: #333;
  font-weight: bold;
  justify-content: center;
}

/* 移动端响应式调整 */
@media (max-width: 768px) {
  .schedule-container {
    flex-direction: column;
    overflow-x: auto;
  }

  .time-column {
    flex-direction: row;
    padding-right: 0;
    padding-bottom: 1rem;
    text-align: center;
  }

  .schedule-content {
    min-width: 600px; /* 保证横向滚动空间 */
  }
}

关键特性说明

  • 跨列实现:通过grid-column: 1 / 4直接让休息块占据3个场地列,完美解决列表结构无法跨列的问题
  • 响应式切换:
    • 桌面端:时间轴在左侧固定,场地标题在顶部,日程内容按网格排列
    • 移动端:时间轴切换为横向排列在顶部,场地列保持纵向,整个容器支持横向滚动
  • 灵活布局:通过grid-row控制活动的时间跨度,grid-template-columns定义场地数量,可根据实际场地数调整repeat(3, 1fr)中的数字

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:25:36