本文介绍如何利用 css grid 实现 8 个表格在单页上的灵活、响应式网格化布局,通过 `grid-area` 精确控制每个表格的位置与尺寸,避免传统浮动或内联块带来的错位问题。
在现代网页开发中,将多个表格(尤其是语义上彼此独立的数据展示模块)整齐、可控地排列在单页上,最佳实践是采用 CSS Grid 布局——它专为二维布局设计,远比 float、inline-block 或老旧的 table 嵌套更可靠、可维护性更强。
以下是一个经过优化的完整实现方案,适配您图示中「4 行 × 3 列」区域划分(共 12 个逻辑格子),其中 8 个区域分别承载表格,其余留白或合并使用:
width: 100%; height: 100%,使其完全填充父容器html, body {
margin: 0;
padding: 0;
height: 100%;
}
#container {
display: grid;
grid-template-rows: 30% 30% 25% 15%; /* 四行高度比例 */
grid-template-columns: 1fr 1fr 1fr; /* 三等宽列 */
gap: 8px; /* 表格间统一间距(推荐 8–16px) */
width: 100vw;
height: 100vh;
padding: 12px; /* 可选:整体内边距,提升呼吸感 */
}
/* 每个表格容器按需定位(注意:行/列索引从 1 开始) */
#div1 { grid-area: 1 / 1 / 3 / 2; } /* 占第1–2行、第1列 → 高度约60% */
#div2 { grid-area: 3 / 1 / 4 / 2; } /* 第3行、第1列 */
#div3 { grid-area: 4 / 1 / 5 / 2; } /* 第4行、第1列 */
#div4 { grid-area: 1 / 2 / 5 / 3; } /* 跨第1–4行、第2列 → 高度100% */
#div5 { grid-area: 1 / 3 / 2 / 4; } /* 第1行、第3列 */
#div6 { grid-area: 2 / 3 / 3 / 4; } /* 第2行、第3列 */
#div7 { grid-area: 3 / 3 / 4 / 4; } /* 第3行、第3列 */
#div8 { grid-area: 4 / 3 / 5 / 4; } /* 第4行、第3列 */
/* 统一表格样式:撑满容器、去除默认边距 */
#container table {
width: 100%;
height: 100%;
border-collapse: collapse;
font-size: 14px;
}
#container td, #container th {
padding: 6px 10px;
text-align: left;
border: 1px solid #ddd;
}