本文介绍如何使用 CSS Grid 构建一种视觉上类似表格、但不依赖传统 <table> 或多列结构的响应式布局:顶部并列双区域(各含若干动态行)、底部跨栏单区域,所有区块支持内容自适应高度。
本文介绍如何使用 css grid 构建一种视觉上类似表格、但不依赖传统 `
在实际开发中,当需要呈现结构清晰、分区明确但又无需严格列对齐的数据视图(如事故信息面板、表单摘要区或仪表盘卡片)时,“类表格”布局非常实用。但传统表格语义过重、灵活性差;而单纯用 flex 布局难以精准控制行列关系。此时,CSS Grid 是最优解——它天然支持二维布局,可精确划分区域、定义跨度,并完美适配动态内容高度。
以下是一个简洁、可扩展的实现:
<div class="grid-container"> <div class="top-left"> <div class="row"> <span class="label">Initiator:</span> <span class="value">{{accident.initiator}}</span> </div> <div class="row"> <span class="label">Location:</span> <span class="value">{{accident.location}}</span> </div> </div> <div class="top-right"> <div class="row"> <span class="label">Date:</span> <span class="value">{{accident.date}}</span> </div> <div class="row"> <span class="label">Severity:</span> <span class="value">{{accident.severity}}</span> </div> </div> <div class="bottom"> <div class="row"> <span class="label">Description:</span> <span class="value">{{accident.description}}</span> </div> </div></div>
对应 CSS(已优化兼容性与可维护性):
.grid-container { display: grid; grid-template-columns: 1fr 1fr; /* 左右均分宽度 */ grid-template-rows: auto auto; /* 行高由内容决定 */ gap: 8px; /* 区域间统一间距 */ border: 1px solid #333;}.top-left, .top-right, .bottom { padding: 12px; background-color: #f9f9f9; border-radius: 4px;}/* 顶部左右区域:带右侧/左侧强调边框 */.top-left { border-right: 5px solid #000;}.top-right { border-left: 5px solid #000;}/* 底部区域:横跨两列 */.bottom { grid-column: 1 / -1; /* 等价于 1 / span 2,更健壮 */ min-height: 60px; /* 保证基础高度,内容增多时自动撑开 */}/* 行内样式:垂直居中 + 标签/值对齐 */.row { display: flex; justify-content: space-between; align-items: center; padding: 4px 0; border-bottom: 1px dashed #ccc;}.row:last-child { border-bottom: none;}.label { font-weight: 600; color: #444;}.value { color: #222;}
本方案摒弃了僵化的表格语义和易失控的 Flex 嵌套,以 CSS Grid 为核心,通过 grid-template-columns、grid-column 跨列及 auto 行高,实现了结构清晰、扩展性强、响应友好且高度自适应的“类表格”布局。它既满足视觉分区需求,又保留了现代 CSS 的简洁性与可维护性——是替代传统表格展示非关系型数据的理想选择。
立即学习“前端免费学习笔记(深入)”;