CSS Grid布局完全指南
CSS Grid 是最强大的二维布局系统,让复杂的网页布局变得简单直观。
基本概念
Grid 布局分为容器(Container)和项目(Item)两个层面:
css
.container {
display: grid;
grid-template-columns: 200px 1fr 200px;
grid-template-rows: auto 1fr auto;
gap: 20px;
height: 100vh;
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.content { grid-area: content; }
.footer { grid-area: footer; }定义网格
固定与弹性轨道
css
.grid {
display: grid;
/* 固定宽度 */
grid-template-columns: 200px 300px;
/* fr 单位按比例分配 */
grid-template-columns: 1fr 2fr 1fr;
/* repeat 函数 */
grid-template-columns: repeat(3, 1fr);
/* auto-fill 自动填充 */
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
/* 混合使用 */
grid-template-columns: 200px 1fr 1fr;
}minmax 和 auto-fit
css
/* 响应式卡片网格,无需媒体查询 */
.cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 24px;
}网格区域
css
.layout {
display: grid;
grid-template-columns: 200px 1fr;
grid-template-rows: 60px 1fr 40px;
grid-template-areas:
"header header"
"sidebar content"
"footer footer";
min-height: 100vh;
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.content { grid-area: content; }
.footer { grid-area: footer; }项目定位
css
.item-a {
/* 按线号定位 */
grid-column: 1 / 3;
grid-row: 1 / 2;
}
.item-b {
/* 跨越指定数量 */
grid-column: span 2;
}
.item-c {
/* 使用区域名 */
grid-area: content;
}
.item-d {
/* 命名网格线 */
grid-column: main-start / main-end;
}对齐方式
css
.container {
/* 容器级别对齐 */
justify-items: center; /* 水平对齐 */
align-items: center; /* 垂直对齐 */
place-items: center; /* 简写 */
justify-content: space-between; /* 网格整体水平 */
align-content: center; /* 网格整体垂直 */
}
.item {
/* 项目级别对齐 */
justify-self: end;
align-self: start;
}实战:圣杯布局
css
.holy-grail {
display: grid;
grid-template:
"header header header" auto
"nav main aside" 1fr
"footer footer footer" auto
/ 200px 1fr 200px;
min-height: 100vh;
gap: 16px;
}
/* 响应式:小屏隐藏侧边栏 */
@media (max-width: 768px) {
.holy-grail {
grid-template:
"header" auto
"main" 1fr
"footer" auto
/ 1fr;
}
.nav, .aside { display: none; }
}gap 间距
css
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
/* 行列间距 */
row-gap: 20px;
column-gap: 16px;
/* 简写 */
gap: 20px 16px;
}总结
CSS Grid 是处理二维布局的最佳工具。fr 单位、auto-fit/minmax 实现响应式无需媒体查询,grid-template-areas 让布局像画画一样直观。结合 Flexbox(一维布局),几乎可以完成任何网页布局需求。



评论 2