Web前端开发:Grid 布局(网格布局)

一、Grid 是什么?

        Grid(网格布局) 是 CSS 中一种二维布局系统,可以同时控制行和列的排列方式。相比传统的浮动布局和 Flexbox(一维布局),Grid 更适合构建复杂的网页结构(比如仪表盘、卡片布局等)。

 

二、核心概念

1. 网格容器(Grid Container)

通过 display: grid 将一个元素定义为网格容器,它的直接子元素自动成为网格项目(Grid Items)

.container {
  display: grid;
}
2. 行与列(Rows & Columns)
  • 轨道(Track):行或列的集合

  • 单元格(Cell):行和列的交叉区域

  • 网格线(Grid Line):分隔行或列的线(编号从 1 开始)

 

三、基础用法

1. 定义行列大小
.container {
  grid-template-columns: 100px 200px 1fr; /* 3列:100px、200px、剩余空间 */
  grid-template-rows: 50px auto; /* 2行:50px、自适应高度 */
}
  • fr 单位:按比例分配剩余空间(类似“份”)

  • repeat():简化重复值
    grid-template-columns: repeat(3, 1fr); → 3 列等宽

 2. 间距控制

.container {
  gap: 10px; /* 行和列间距均为 10px */
  row-gap: 20px; /* 单独设置行间距 */
  column-gap: 15px;
}

四、定位网格项目

1. 按网格线定位
.item {
  grid-column-start: 1; /* 起始于第1列线 */
  grid-column-end: 3;   /* 结束于第3列线(跨2列) */
  grid-row: 2 / 4;      /* 简写:从第2行线到第4行线 */
}
2. 使用 span 关键字
.item {
  grid-column: 1 / span 2; /* 从第1列开始,跨越2列 */
}

五、对齐方式

1. 整体对齐
.container {
  justify-content: center; /* 水平居中整个网格 */
  align-content: end;      /* 垂直底部对齐 */
}
2. 单元格内对齐
.container {
  justify-items: center; /* 所有项目水平居中 */
  align-items: stretch;  /* 默认拉伸填满单元格 */
}

/* 单独控制某个项目 */
.item {
  justify-self: start;
  align-self: end;
}

 

六、响应式布局技巧

1. 自动填充列
.container {
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
}
  • auto-fill:自动填充尽可能多的列

  • minmax(200px, 1fr):列宽最小 200px,最大按比例分配

 2. 命名区域(适合复杂布局)
.container {
  grid-template-areas:
    "header header"
    "sidebar main"
    "footer footer";
}

.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
.footer { grid-area: footer; }

七、Grid vs Flexbox

特性GridFlexbox
维度二维(行+列)一维(行或列)
适用场景整体页面布局组件内部排列
内容优先容器控制布局内容决定布局
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值