当前位置: 首页 > news >正文

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
维度二维(行+列)一维(行或列)
适用场景整体页面布局组件内部排列
内容优先容器控制布局内容决定布局

相关文章:

  • RGB三原色
  • Notebook.ai 开源程序是一套工具,供作家、游戏设计师和角色扮演者创建宏伟的宇宙 - 以及其中的一切
  • 多线程-探索
  • volatile 关键字应用大全
  • 民主与民族主义作为暴力时代的财政策略
  • 基于SRS实现流媒体服务器(最简单的流媒体服务器)
  • Vite 的工作流程
  • 一文读懂Python之pandas模块
  • 代码随想录第32天:动态规划5(组合、排列、最小方法数)
  • 强化学习ppo算法在大语言模型上跑通
  • 迭代器模式
  • python计算shp中每个区域的面积
  • 语音合成之十一 提升TTS语音合成效果:低质量数据清洗、增强与数据扩增
  • 判断字符是否唯一 --- 位运算
  • C++ 外观模式详解
  • Guass数据库实验(数据字典设计、交叉表设计)
  • linux种文件名usr的含义是什么?
  • 20250505解压缩tar.xz压缩包的方法
  • Allegro23.1新功能之自动添加器件下方相邻层禁布操作指导
  • Adobe LiveCycle Designer
  • 特朗普:不谋求第三个总统任期,中意万斯鲁比奥“接棒”
  • 演员扎堆音乐节,是丰富了舞台还是流量自嗨?
  • 击败老对手韩国队夺冠!国羽第14次问鼎苏迪曼杯创历史
  • 习近平给谢依特小学戍边支教西部计划志愿者服务队队员的回信
  • 五一首日出沪高峰,G1503高东收费站上午车速约30公里/小时
  • 国铁集团:5月1日全国铁路预计发送旅客2250万人次