实现复杂卡片 Grid 布局,核心是合理使用 CSS Grid 的网格划分、区域命名和响应式控制。不需要 JavaScript,仅靠 CSS 就能创建视觉丰富且自适应的布局。
使用 display: grid 启用网格布局,并通过 grid-template-colu
mns 和 grid-template-rows 划分行列。配合 gap 设置卡片间距。
.card-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: repeat(3, minmax(100px, auto));
gap: 16px;
}
为特定卡片分配跨越多个行或列的位置,使用 grid-column 和 grid-row,或更直观的 grid-area。
常见场景:grid-column: span 2;
grid-row: span 2;
grid-area: 1 / 1 / 3 / 3;(起始行/列 到 结束行/列)使用 grid-template-areas 以可视化方式设计布局,适合固定结构的复杂卡片组。
示例:.card-grid {
display: grid;
grid-template-columns: 2fr 1fr 1fr;
grid-template-rows: auto auto;
grid-template-areas:
"main main sidebar"
"main main footer";
}
.card-main { grid-area: main; }
.card-sidebar { grid-area: sidebar; }
.card-footer { grid-area: footer; }
这种方式让布局结构一目了然,便于维护。
利用媒体查询动态调整网格结构,保证移动端体验。
建议做法:@media (max-width: 768px) { grid-template-columns: 1fr; }
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
基本上就这些。掌握 grid-area 控制和响应式断点,就能灵活构建各种复杂但整洁的卡片布局。关键是先规划好区域分布,再用 CSS 实现。不复杂但容易忽略细节。