CSS 网格布局
网格布局是一个二维布局系统,允许开发者以行和列的形式创建灵活的网络,并将内容放置在网络的单元格中。有些元素可能只占据网络的一个单元,另一些元素则可能占据多行或多列。
网格的大小既可以精确定义,也可以根据自身内容自动计算。既可以将元素精确地放置到网络的某个位置,也可以让其在网格内自动定位。
1 网格的组成部分
将一个DOM元素设置为display:grid; 使其成为一个网格容器,它的子元素则变成网格元素。

图 网格布局示意图
网格容器:样式设置为display:grid;的元素。
网格元素:网格容器下的子元素。
网格线:构成了网格的框架,一条网格线可以水平或垂直(并且有对应编号,例如从左到右,是从编号1开始)。图中数字编号注明的框架线。
网格轨道:一个网格轨道是两条相邻网格线之间的空间。例如图中粉色和青色的部分。
网格单元:水平和垂直的网格轨道交叉重叠的部分。
网格区域:位于两条垂直网格线和两条水平网格线之间(由一个或多个网格单元组成)。
1.1 网格容器相关属性
| display | display: grid; 将元素设置为网格容器。 display: inline-grid; 将元素设置为行内块级网格容器。
图 网格容器与行内块级网格容器 |
| grid-template-* | grid-template-columns、grid-template-rows: 定义网格容器的轨道大小(列或行)。同时可以指定轨道数量。可以使用px、fr以及css函数(repeat()、minmax())来定义。 grid-template-areas: 用于定义区域名称,每个字符串(用引号括起来)代表网格的一行。 |
| grid-auto-* | grid-auto-columns、grid-auto-rows: 定义自动生成的网格轨道(行或列)的大小。 grid-auto-flow: 自定自动布局的方式,可以是行优先(row,默认值)或列优先(column)。 还可以设置为dense,表示稍后出现较小的网格项时,尝试填充网格中较早的空缺。 |
| grid-gap | 定义行和列之间的间距。 是grid-row-gap和grid-column-gap的简写. |
表 网格容器的相关属性
| grid-[column|row]-[start|end] | grid-column-start、grid-row-start、grid-column-end、grid-row-end:网格项开始(结束)的网格线编号。 grid-column、grid-row: 是对应start和end的缩写,可以使用开始编号/结束编号、开始编号/span 行数(列数)来指定。 |
| grid-area | 指定网格项所占的自定义区域。(可以使用grid-template-areas 中定义的区域名称来指定。) |
| order | 表示网格项的层叠位置,值越小,网格项越靠前。 |
表 网格项目的相关属性

图 网格容器与项目的示意
第2个元素从水平网格线1到水平网格线2,从垂直网格线2到垂直网格线4。
第7个元素从水平网格线1开始,跨了2行,从垂直网格线1到垂直网格线3。
第7个元素与第2个元素有重叠,因为第二个元素的order值更大,所以其在上面。
注意:图中元素的顺序与代码中的顺序不同,图中元素1的位置位于元素7和元素2的后面。
1.2 网格线与区域的命名
1.2.1 网格线命名
记录所有网格线的编号很麻烦,可以给网格线命名,并在布局时使用网格线的名称,而不是编号。
1.同一个网格线可以用多个命名:
grid-template-columns: [left-start] 1fr 1fr [left-end right-send]1fr [right-start] 1fr;
/*left-start/ left-end 的简写*/
grid-column: left;
2.可以给不同区域命名同一个名称:
grid-template-columns: [row] 1fr 1fr [row] 1fr [row];
/*表示第1个叫row的网格线到第3个叫row的网格线 */
grid-column: row 1 / row 3;
1.2.2 区域命名
grid-template-areas: "title title ."
". . ."
". . .";
grid-area: title;
不同的区域可以同样的命名,但是同名区域必须相连。title . title 这样是错误的。
1.3 显式和隐式网格
使用grid-template-*定义网络轨道时,创建的是显式网络,但是有些网格元素仍然可以放在显式轨道外面,此时会自动创建隐式轨道以扩展网络,从而包含这些元素。
grid-auto-* 属性为隐式轨道指定大小。
grid-template-columns: repeat(auto-fill,minmax(100px,1fr));
grid-template-columns: repeat(auto-fit,minmax(100px,1fr));
上面两行都是用于创建一个弹性的网格轨道。不同点在于auto-fill与auto-fit。
| 定义 | 特点 | |
| auto-fill | 会尽量填满容器的宽度(或高度),同时确保每个网格项的大小不小于minmax指定的最小值。 |
|
| auto-fit | 会填满容器的宽度(或高度),尽可能插入更多的网格项,但是能确保每个项目项的大小不小于minmax指定的最小值。 |
|
表 auto-fill 与 auto-fit 的对比

图 auto-fill 与 auto-fit 效果图
当不指定网格上元素的位置时,元素会按照其布局算法自动放置。默认情况下,布局算法会按元素在按元素在标记中的顺序将其逐列逐行摆放。当一个元素无法在某一行容纳时,算法会将它移动到下一行,寻找足够大的空间容纳它。
grid-auto-flow 可以控制布局算法的行为。它的初始值时row,上面描述的就是这个值的行为。如果值为column,按元素在标记中的顺序将其逐行逐列摆放,当一个元素无法在某一列容纳,算法会将它移动到下一列。

图 布局算法row 与 column的对比
上面布局中,网格中出现了空白部分,可以在上面属性中加上一个关键字(dense),它让算法紧凑地填满网格里的空白,但是可能会改变某些网格元素的顺序。加上这个关键字,小元素就会“回填”大元帅造成的空白区域。

图 布局算法加上dense的效果
1.4 对齐
justify-* 是设置水平方向的位置。align-* 是设置垂直方向的位置。
| 属性 | 作用于 | 对齐 | 常用属性值 |
| justify-items align-items | 网格容器 | 网格区域内的所有元素。 | stretch(默认值):网格单元会拉伸以填满整个网格轨道。 start、end、center:网格单元对齐到网格轨道起始/结束/居中的位置。 self-start、self-end:网格单元对齐到自身的起始/结束(取决于writing-mode和direction等属性)边缘 align-items 还有baseline属性值,表示网格单元对齐到它们的基线。 |
| justify-content align-content | 网格容器 | 网格区域内的网格轨道。 | start(默认值)、end、center网格区域从容器起始/末尾/居中边缘开始排列。 stretch: 拉伸以填满(较少用) space-around: 网格轨道之间的空间相等,网格轨道距容器边缘的空间等于轨道之间空间的一半。 space-between: 网格轨道之间的空间相等,但网格轨道与容器边缘之间没有空间。 space-evenly: 网格轨道之间、网格轨道与容器边缘之间的空间相等。 |
| justify-self align-self | 网格元素 | 网格区域内的网格元素。 | 会覆盖justify-items 或align-items的值。 auto: 使用*-item属性的值。 start、end、center: 网格项对齐单元格的起始/结束/居中边缘。 stretch: 默认值。 |
表 网格内的对齐属性
相关文章:
CSS 网格布局
网格布局是一个二维布局系统,允许开发者以行和列的形式创建灵活的网络,并将内容放置在网络的单元格中。有些元素可能只占据网络的一个单元,另一些元素则可能占据多行或多列。 网格的大小既可以精确定义,也可以根据自身内容自动计…...
python实现屏幕录制,录音录制工具
python实现屏幕录制,录音录制工具 一,介绍 Python 实现的屏幕录制和录音录制工具是一个便捷的应用程序,旨在帮助用户同时捕捉计算机屏幕上的活动以及与之相关的音频输出。这个工具尤其针对教育工作者、内容创作者、技术支持人员以及任何需要…...
elementui 的 table 组件回显已选数据时候使用toggleRowSelection 方法的坑点
elementui 的 table 组件回显问题 "vue": "^2.7.16", "element-ui": "^2.15.14", 问题描述: 场景:首先我们是通过接口获取到数据之后 然后将返回的数据回显到表格上面 问题:直接将后端返回的数据…...
MATLAB基础应用精讲-【数模应用】负二项回归(附R语言和python代码实现)
目录 前言 几个高频面试题目 负二项回归、Probit回归如何选择 负二项回归 Probit回归 知识储备 逻辑回归 算法原理 多阈值负二项回归模型 模型及估计方法 负二项回归模型 多阈值负二项回归模型 分割阶段 精确估计阈值阶段 负二项回归的操作步骤 负二项回归…...
20240803 芯动科技 笔试
文章目录 1、单选题1.11.21.31.42、填空题2.12.23、问答题3.13.23.34、编程题4.14.24.3岗位:嵌入式软件工程师(25届校招)(J12042) 题型:4 道单选题,2 道填空题, 3 道简答题,3 道编程题 1、单选题 1.1 已知 5 个元素的出栈序列是 1,2,3,4,5,6 则对应的入栈顺序可能是 …...
如何将 ECharts 图表插入 HTML Canvas
在 Web 开发中,数据可视化是一个常见且重要的需求。ECharts 是一个强大的图表库,而 HTML5 Canvas 则提供了灵活的绘图能力。今天,我们将探讨如何将这两者结合起来,实现将 ECharts 生成的图表插入到 HTML Canvas 中的特定位置。 为…...
突破干扰,无人机自动驾驶技术详解
突破干扰的无人机自动驾驶技术,是一个结合了多学科领域的复杂系统,旨在确保无人机在复杂电磁环境、人为干扰等条件下仍能自主、安全地完成飞行任务。以下是对该技术的详细解析: 一、技术概述 无人机自动驾驶技术通过集成传感器技术、人工智…...
Xamarin学习计划
一、Xamarin 的产生历程 Xamarin 由 Nat Friedman 和 Miguel de Icaza 创立。它的出现主要是为了让开发者能够使用 C#语言来构建跨平台的移动应用程序。 Xamarin 提供了一种统一的开发方式,允许开发者使用熟悉的 C#语言和.NET 框架来开发同时适用于多个平台的应…...
exchange online邮件系统EAM双因素认证技术方案
exchange online邮件系统是指微软推出的电子邮件系统云服务,通常作为office 365和microsoft 365的一个子项目来提供服务。这样用户就不需要自己部署exchange邮件服务器,只需要订阅微软的云服务,然后就可以直接使用微软提供的exchange邮件服务…...
【数据结构与算法】栈和队列
文章目录 一.栈1.1定义 顺序栈和链式栈1.2基本操作1.2.1表示1.2.2初始化1.2.3清空1.2.4销毁1.2.5入栈1.2.6出栈1.2.7取栈顶 1.3共享栈1.3.1定义1.3.2进栈出栈 二.队列2.1定义 顺序队列和链式队列循环队列2.2基本操作2.2.1初始化2.2.2判空2.2.3求队列长度2.2.4取队头元素2.2.5销…...
基于php的图书管理系统
摘 要 随着互联网的发展,许多人都热衷于在线购物,无需离开家就可以获得所需的产品,通过简单的操作,就能够获得快速、准确的配送。 科技已然渗透到进社会的方方面面,让我们的学习、交流、工作变得无比轻松自如。由于…...
k8s Node节点维护
Kubernetes (K8s) 中对 Node 节点的维护是保证集群健康和性能的重要部分。Node 节点通常是 Kubernetes 工作负载的运行环境,负责运行 Pods。当需要对节点进行维护(如升级、修复问题、调整配置等)时,可能需要将该节点标记为不可用并…...
【航天宏图旗下的PIE engine】
航天宏图旗下的PIE engine是一个集实时分布式计算、交互式分析和数据可视化为一体的在线遥感云计算开放平台,以下是对其的详细介绍: 一、平台背景与定位 PIE-Engine地球科学引擎是航天宏图自主研发的一套基于容器云技术构建的面向地球科学领域的专业P…...
Python酷库之旅-第三方库Pandas(157)
目录 一、用法精讲 716、pandas.Timedelta.view方法 716-1、语法 716-2、参数 716-3、功能 716-4、返回值 716-5、说明 716-6、用法 716-6-1、数据准备 716-6-2、代码示例 716-6-3、结果输出 717、pandas.Timedelta.as_unit方法 717-1、语法 717-2、参数 717-3、…...
【原创】java+springboot+mysql校园表白墙网站设计与实现
个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…...
CSS学习(Grid布局和flex布局比较)
grid网格布局真香,比flex方便太多了,grid-template-columns用法 文章目录 flex布局的时候网格grid布局的时候可以修改某一列的像素可以修改某一列的宽度占比自适应屏幕分列让第一个元素长宽都占2个 flex布局的时候 最后一行不够4个的时候 最下面一行无法…...
RTThread-Nano学习二-RT-Thread启动流程
一、简介 上一章,我们已经了解了如何通过MDK来移植RTT,不熟悉的可以看如下链接:RTThread-Nano学习一-基于MDK移植-CSDN博客本章我们就来继续了解一下,RTT的启动流程。 二、启动流程 官方给了一幅非常清晰的启动流程图&am…...
排查sshfs挂载失败的问题
#排查sshfs挂载失败的问题 写代码在Linux上运行,但是熟悉的IDE(比如VS code)在自己的电脑上,可以使用sshfs把linux上的目录挂载到本地,再用VScode打开即可,可以使用下面的命令: sshfs -odebug…...
【002】基于Spring Boot+Unipp的古诗词学习小程序【原创】
一.系统开发工具与环境搭建 1.系统设计开发工具 后端使用Java编程语言的Spring boot框架 项目架构:B/S架构 运行环境:win10/win11、jdk17 前端: 技术:框架Vue.js;UI库:ElementUI; 开发工具&…...
PageHelper循环依赖问题
1. 问题 2. 原因 项目中SpringBoot的版本为2.7.18。 SpringBoot2.6.x后不推荐使用循环依赖,也就是说从2.6.x版本开始,如果项目里还存在循环依赖,SpringBoot将拒绝启动! 3. 解决 去pageHelper github看,才看到新版本…...
DeepSeek代码质量评估实战手册:7步完成从混沌到可度量的质变跃迁
更多请点击: https://kaifayun.com 第一章:DeepSeek代码质量评估的底层逻辑与核心价值 DeepSeek代码质量评估并非简单地统计行数或检测语法错误,而是基于多维语义理解构建的推理系统。其底层逻辑融合了静态分析、符号执行与大语言模型生成式…...
从多路复用到三维光阵:Arduino驱动8x8x8 LED立方体全解析
1. 项目概述:用Arduino点亮一个三维世界几年前,我第一次在创客展上看到一个8x8x8的LED立方体,那种由数百个光点构成的、在三维空间中流动的动画效果,瞬间就把我吸引住了。它不像普通的平面LED屏,而是真正有“深度”的光…...
别再死记硬背Payload了!我用XSS-Game靶场,带你拆解18种过滤规则背后的绕过逻辑
从XSS-Game靶场实战中掌握18种过滤规则的逆向思维在网络安全领域,跨站脚本攻击(XSS)始终是Web应用面临的主要威胁之一。许多开发者虽然了解XSS的基本概念,但当面对各种复杂的过滤规则时,往往不知如何系统分析并构造有效…...
潮州东方轻奢风全屋高定找哪家
开篇引言根据《2026年中国全屋定制行业发展报告》,潮州市全屋定制市场规模同比增长38%,其中全屋高端定制细分市场同比增长52%。目前,潮州市家庭全屋定制需求占比72%,高端定制需求占比45%。为了帮助潮州市消费者选择合规、靠谱、差…...
别再只测accuracy!DeepSeek集成测试必须监控的5个隐性指标(P99首token延迟、context bleed率、tool-call schema漂移)
更多请点击: https://intelliparadigm.com 第一章:DeepSeek集成测试的核心范式演进 DeepSeek大模型的工程化落地对集成测试提出了全新挑战:传统基于接口响应码与字段校验的测试范式已难以覆盖语义一致性、推理链鲁棒性、上下文敏感度等高阶质…...
航空航天为什么离不开高强镁合金?国产替代到哪一步了
飞机每减重一千克,全年大约节省四千两百美元的燃油费用——这是航空工程师熟悉的经验值。在商业航空领域,这个数字还只是财务账;在战斗机、导弹和卫星的世界里,减重的收益被换算成更远的航程、更大的载荷、更高的机动性࿰…...
ZMJS,把 JavaScript 解释器放进 SAP ABAP 应用服务器之后,很多扩展思路会变得不一样
我今天看这个 oisee/zmjs 仓库时,最吸引人的不是它把 JavaScript 语法做进了 ABAP,而是它选择了一条非常 SAP 的路线,纯 ABAP、无外部依赖、无 Kernel Module、以类和接口的形式运行在 SAP 应用服务器内部。仓库自己的定位很直接,ZMJS 是一个面向 SAP ABAP 的 Mini JavaScr…...
输电线路在线监测系统|架空线路安全运行的“第一道防线“!
输电线路微气象监测站是专为高压输电线路、电网廊道、杆塔运维量身打造的专利级一体化微气象智能监测设备。依托双专利超声波探测技术、六要素集成传感架构、无启动风速高精测量、智能抗干扰稳控系统,实现输电线路沿线气象24小时全自动捕捉、动态实时监测、大风风险…...
3PEAK思瑞浦 TPA6531-S5TR SOT23-5 运算放大器
特性 供电电压:1.75V至5.5V 偏移电压:1.5mV(最大值) 最大可调工作频率:300kHz,斜率:0.15V/us 轨到轨输入和输出 0.1赫兹至10赫兹电压噪声:1伏峰值 开关电源时无显著输出抖动 低功耗:每通道最大25安培 工作温度范围:-40C至125C...
拒绝延迟与黑屏:向日葵控制端 局域网直连 P2P 穿透与无头服务器(Headless)虚拟显示器优化指南
拒绝延迟与黑屏:向日葵控制端 局域网直连 P2P 穿透与无头服务器(Headless)虚拟显示器优化指南 在远程开发、分布式部署及日常运维场景中,我们经常需要远程连接到公司的高配工作站、机房服务器或家中的调试开发机。 作为国内普及…...

