CSS子网格布局实战:5个高级网页排版技巧
1. 基础子网格布局
创建嵌套网格对齐:
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1rem;
}
.grid-item {
display: grid;
grid-template-rows: subgrid;
grid-row: span 3; /* 跨越3行 */
}
/* 子元素自动对齐父网格 */
.item-header, .item-content, .item-footer {
grid-column: 1 / -1; /* 跨越所有列 */
}
2. 复杂表单布局
实现标签和输入框对齐:
.form-grid {
display: grid;
grid-template-columns: [labels] auto [controls] 1fr;
gap: 0.5rem 1rem;
}
.form-item {
display: grid;
grid-template-columns: subgrid;
grid-column: span 2;
}
label {
grid-column: labels;
}
input, select {
grid-column: controls;
}
3. 卡片内容对齐
确保多卡片内容区域等高:
.card-grid {
display: grid;
grid-template-rows: auto 1fr auto;
}
.card {
display: grid;
grid-template-rows: subgrid;
grid-row: span 3;
}
.card-header, .card-content, .card-footer {
/* 自动继承父网格行高 */
}
4. 媒体对象布局
图文混排精确控制:
.media-grid {
display: grid;
grid-template-columns: auto 1fr;
grid-template-rows: auto 1fr;
}
.media-item {
display: grid;
grid-template-columns: subgrid;
grid-template-rows: subgrid;
grid-column: 1 / -1;
grid-row: span 2;
}
.media-image {
grid-row: 1 / -1;
}
.media-title {
grid-column: 2;
}
特性 | 传统网格 | 子网格 |
---|---|---|
嵌套布局 | 独立 | 继承父网格 |
代码复杂度 | 高 | 低 |
对齐精度 | 困难 | 精确 |
5. 电商实战:产品列表
完美对齐的产品网格:
.products {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
grid-template-rows: auto 1fr auto auto;
gap: 1.5rem;
}
.product-card {
display: grid;
grid-template-rows: subgrid;
grid-row: span 4;
}
.product-image {
aspect-ratio: 1 / 1;
}
.product-title, .product-price, .product-button {
/* 自动对齐父网格 */
}
CSS子网格为复杂布局提供了革命性解决方案,特别适合需要精确对齐的卡片、表单、媒体对象等场景,能大幅减少布局代码量并提高可维护性。