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

如何用CSS Grid实现Div表格的移动端响应式转置?

实现Div表格的响应式转置(移动端适配)

核心思路

通过CSS媒体查询,在移动端将横向布局的Div表格重构为纵向键值对布局——隐藏原表头,把每一行数据转为独立卡片,每个单元格通过伪元素关联对应表头文本,完美适配移动端窄屏。

实现步骤

1. 基础HTML结构

给每个数据单元格添加data-label属性,存储对应表头文本,方便移动端动态调用:

<div class="div-table">
  <!-- 桌面端表头 -->
  <div class="table-header">
    <div class="table-cell">姓名</div>
    <div class="table-cell">年龄</div>
    <div class="table-cell">职业</div>
    <div class="table-cell">邮箱</div>
    <div class="table-cell">地址</div>
  </div>
  <!-- 数据行 -->
  <div class="table-row">
    <div class="table-cell" data-label="姓名">张三</div>
    <div class="table-cell" data-label="年龄">28</div>
    <div class="table-cell" data-label="职业">前端开发</div>
    <div class="table-cell" data-label="邮箱">zhangsan@example.com</div>
    <div class="table-cell" data-label="地址">北京市朝阳区</div>
  </div>
  <div class="table-row">
    <div class="table-cell" data-label="姓名">李四</div>
    <div class="table-cell" data-label="年龄">32</div>
    <div class="table-cell" data-label="职业">产品经理</div>
    <div class="table-cell" data-label="邮箱">lisi@example.com</div>
    <div class="table-cell" data-label="地址">上海市浦东新区</div>
  </div>
</div>

2. 桌面端CSS(横向布局)

用Flex实现类似原生表格的横向排列效果:

.div-table {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
}

.table-header, .table-row {
  display: flex;
  border-bottom: 1px solid #eee;
}

.table-cell {
  flex: 1;
  padding: 12px;
  text-align: left;
}

.table-header .table-cell {
  font-weight: 700;
  background-color: #f5f5f5;
}

3. 移动端CSS(纵向转置布局)

通过媒体查询触发窄屏样式,彻底重构布局逻辑:

@media (max-width: 767px) {
  /* 隐藏桌面端表头 */
  .table-header {
    display: none;
  }

  /* 每个数据行转为独立卡片 */
  .table-row {
    display: block;
    border: 1px solid #eee;
    margin-bottom: 16px;
    border-radius: 8px;
    overflow: hidden;
  }

  /* 单元格转为键值对布局 */
  .table-row .table-cell {
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-bottom: 1px solid #eee;
    padding: 10px 12px;
  }

  /* 去掉最后一个单元格的下边框 */
  .table-row .table-cell:last-child {
    border-bottom: none;
  }

  /* 通过data-label动态生成表头文本 */
  .table-row .table-cell::before {
    content: attr(data-label) ":";
    font-weight: 700;
    margin-right: 8px;
  }
}

关键细节

  • data-label属性实现表头文本的动态复用,避免硬编码伪元素内容,适配后端动态生成的表格
  • 移动端卡片式布局提升可读性和触摸交互体验
  • Flex布局保证单元格内容自动对齐,兼容不同长度的文本内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:15:59