CSS 的网格布局

作者:hubenchang0515日期:2025/11/2

#CSS 的网格布局

CSS 网格布局(Grid Layout)是一个强大的 2D 布局系统,可精确地控制页面的行和列布局,比 Flex 更适合结构化排布。

通过将一个元素样式的 display 属性设为 grid,可以将该元素设为网格布局的 容器

通过容器的 grid-template-columns 属性可以配置网格的列宽度,通过 grid-template-rows 属性可以配置网络的行高度。

下面这个示例将网格设为二行四列,两行的高度分别为 40px 和 80px,四列的宽度分别为 40px,80px,120px 和 160px。

1<!-- 网格有四列,宽度依次为 40px 80px 120px 160px -->
2<!-- 网格有两行,高度依次为 40px 80px-->
3<div style="display:grid; grid-template-columns:40px 80px 120px 160px; grid-template-rows:40px 80px;">
4    <div style="background-color:red;"></div>
5    <div style="background-color:yellow;"></div>
6    <div style="background-color:blue;"></div>
7    <div style="background-color:orange;"></div>
8    <div style="background-color:green;"></div>
9    <div style="background-color:purple;"></div>
10    <div style="background-color:cyan;"></div>
11    <div style="background-color:pink;"></div>
12</div>
13

display:grid

#单位 fr

可以使用特殊的单位 fr 按比例分配列的宽度(或行的高度)。

下面这个示例将网格设为二行四列,两行的高度分均 40px,四列的宽度为 。

1<!-- 网格有四列,宽度为 1:2:2:1 -->
2<!-- 网格有两行,高度依次为 40px 40px-->
3<div style="display:grid; grid-template-columns:1fr 2fr 2fr 1fr;grid-template-rows:40px 40px;">
4    <div style="background-color:red;"></div>
5    <div style="background-color:yellow;"></div>
6    <div style="background-color:blue;"></div>
7    <div style="background-color:orange;"></div>
8    <div style="background-color:green;"></div>
9    <div style="background-color:purple;"></div>
10    <div style="background-color:cyan;"></div>
11    <div style="background-color:pink;"></div>
12</div>
13

grid-template-columns:1fr 2fr 2fr 1fr

#repeat

可以使用 repeat 函数简化代码。

1repeat(重复次数, 被重复的值)
2

下面这个示例将网格设为二行四列,两行的高度分均 40px,四列的宽度为 。

1<!-- 网格有四列,宽度相同 -->
2<!-- 网格有两行,高度均为 40px -->
3<div style="display:grid; grid-template-columns:repeat(4, 1fr);grid-template-rows:repeat(2, 40px);">
4    <div style="background-color:red;"></div>
5    <div style="background-color:yellow;"></div>
6    <div style="background-color:blue;"></div>
7    <div style="background-color:orange;"></div>
8    <div style="background-color:green;"></div>
9    <div style="background-color:purple;"></div>
10    <div style="background-color:cyan;"></div>
11    <div style="background-color:pink;"></div>
12</div>
13

grid-template-columns:repeat(4, 1fr)

#minmax

可以使用 minmax 函数设置单元格宽度的最小值和最大值,通常与 repeat 搭配,适用于响应式设计。

1repeat(重复次数, minmax(最小宽度, 最大宽度))
2

重复次数通常使用 auto-fillauto-fit

  • auto-fill 满足宽度的前提下,单元格数量尽可能多
  • auto-fit 满足宽度的前提下,填满行

下面的示例中,容器的宽度在不断变化。网格将自动适应容器的宽度,列宽最小不小于 100px

可以看到 auto-fit 模式下,当容器宽度不小于 500px 时,由于只包含了 4 个单元,因此最多只被划分为 4 列;单元格的宽度被拉伸。

auto-fill 模式下,当容器宽度不小于 500px 时,尽管只包含了 4 个单元,网格仍被划分为了更多列;单元格仅占据相应的列。

1<!-- 单元格宽度最小 100px,最大 1fr(无限),自动填满行宽度 -->
2<!-- 单元格高度为 40px -->
3<div style="display:grid; grid-template-columns:repeat(auto-fit, minmax(100px, 1fr));grid-template-rows:repeat(auto-fit, 40px);">
4    <div style="background-color:red;"></div>
5    <div style="background-color:yellow;"></div>
6    <div style="background-color:blue;"></div>
7    <div style="background-color:orange;"></div>
8</div>
9
10<!-- 单元格宽度最小 100px,最大 1fr(无限),自动填满行宽度 -->
11<!-- 单元格高度为 40px -->
12<div style="display:grid; grid-template-columns:repeat(auto-fill, minmax(100px, 1fr));grid-template-rows:repeat(auto-fit, 40px);">
13    <div style="background-color:red;"></div>
14    <div style="background-color:yellow;"></div>
15    <div style="background-color:blue;"></div>
16    <div style="background-color:orange;"></div>
17</div>
18

响应式网格布局 auto-fit

响应式网格布局 auto-fill

上例中,单元格的最小宽度是 100px,最大宽度是无限。当网格容器的宽度为 500px 时, 若 ,则单元格宽度小于 100px 不满足宽度要求。因此 。

  • auto-fill 倾向于单元格更多,因此列数为 5,单元格宽度为 100px,四个元素占前四列。
  • auto-fit 倾向填满行,由于子元素数量只有四个,因此列数为4,单元格宽度为 125px。

CSS 的网格布局》 是转载文章,点击查看原文


相关推荐


CPU 架构(CPU Architecture)
wenjunna2025/10/31

CPU 架构(CPU Architecture)是指 CPU 的指令集架构(ISA, Instruction Set Architecture),即 CPU 能理解和执行的指令系统。不同架构在设计理念、兼容性、性能与功耗上差别很大。 下面我给你分层次整理一下: 一、主流通用 CPU 架构分类 架构全称特点典型厂商/芯片x86 / x86_64Intel 8086 家族指令集(64 位为 x86_64 / AMD64)高性能、兼容性强、功耗高Intel Core / Xeon、AMD Ryze


某银行大厂面试技术问题深度解析(一)
360_go_php2025/10/28

​ 1. MyBatis的依赖pom包 MyBatis 是一个持久层框架,主要用于简化数据库操作。要在项目中使用 MyBatis,必须在 pom.xml 文件中添加相应的依赖。以下是常用的 MyBatis 依赖: <dependency>     <groupId>org.mybatis</groupId>     <artifactId>mybatis</artifactId>     <version>3.5.5</version> </dependency> <depen


Python 的内置函数 complex
IMPYLH2025/10/25

Python 内建函数列表 > Python 的内置函数 complex Python 的内置函数 complex() 用于创建一个复数对象。复数在数学和科学计算中有着广泛的应用,特别是在信号处理、电气工程和物理学等领域。 class complex(r=0, i=0): ''' 类型转换为 complex :param r: 实部 :param i: 虚部 :return: 转换为 complex 后的值 ''' 示例 # 创建实部为


猿辅导Java面试真实经历与深度总结(三)
360_go_php2025/10/23

​ 在Java面试中,有些问题是每个面试官几乎都会问到的。这些问题涉及到JVM内存管理、Spring框架的核心原理以及一些常见的Java技术点。今天我们来解答一系列常见的Java面试问题,帮助你更好地准备面试。 1. JVM内存区域及内存溢出 JVM内存分为多个区域,每个区域有不同的功能。主要分为以下几个区域:​编辑 程序计数器(Program Counter Register):每个线程有独立的程序计数器,用于指示当前线程所执行的字节码指令的位置。 Java虚拟机栈(JVM Sta


3个技巧让你彻底搞懂JavaScript异步编程
良山有风来2025/10/22

你是不是曾经遇到过这样的情况? 页面上的数据加载了半天就是出不来,控制台报了一堆看不懂的错误。代码写着写着就变成了“回调地狱”,一层套一层,自己都看不懂自己写了什么。 别担心,异步编程确实是很多前端开发者的痛点。但今天,我会用最通俗易懂的方式,带你彻底搞懂JavaScript中的异步编程。 读完本文,你不仅能理解回调、Promise和async/await的区别,还能掌握如何在实际项目中优雅地处理异步操作。最重要的是,你会拥有一套清晰的异步编程思路,再也不用害怕处理复杂的异步逻辑了。 什么是异步


基于SpringBoot的高校迎新管理系统
计算机毕设定制辅导-无忧2025/10/20

一、前言         随着高等教育规模的持续扩大和信息化建设的不断推进,传统高校迎新工作面临着流程繁琐、信息分散、效率低下和管理混乱等挑战。人工办理报到手续、纸质材料收集与核对不仅耗时耗力,还容易出现差错,给新生、家长及迎新工作人员带来诸多不便,难以满足现代化高校管理的需求。         为提升迎新工作的组织效率与服务质量,本文设计并实现一套基于SpringBoot的高校迎新管理系统。系统采用SpringBoot框架构建稳定、高效的后端服务,利用Vue.js开发响应迅速、交互友好


MYSQL学习笔记(个人)(第十五天)
chenzhou__2025/10/19

自学《数据库系统原理与应用》——— 黄宝贵、马春梅、禹继国 —— 清华大学出版社 关系规范化理论: 关系规范化的作用:         为了设计一个合理、可靠、简单、正确的关系数据库,形成了关系规范化理论。其包括两个方面的内容:1.数据依赖,研究属性之间的依赖关系;2.范式,是关系模式符合某种级别的标准。 1.问题的提出: 下面有个关系模式: SCD(sno, sname, dname, office, cno, cname, score) 其中按照现实需求和实际应用,可得语义: (


[嵌入式系统-136]:主流AIOT智能体软件技术栈
文火冰糖的硅基工坊2025/10/18

主流AIoT(人工智能物联网)智能体软件技术栈涵盖了硬件、通信、AI算法、安全防护等多个层面,其核心在于通过“感知-分析-决策-执行”的闭环架构,将物联网的连接能力与人工智能的认知能力深度融合。以下从技术架构、关键技术栈、应用场景三个维度进行解析: 一、技术架构:分层解耦与闭环控制 AIoT智能体的技术架构通常分为四层,每层承担特定功能并协同工作: 感知层 功能:通过传感器和终端设备采集环境数据(如温度、湿度、图像、声音等)。关键技术: 传感器技术:高精度、低功耗的传感器(


C#设计模式源码讲解
小张9992025/10/16

C#设计模式源码合集,包含23种设计模式完整源码,每个模式都有详细注释和实例代码。 不想打螺丝,转行做架构师       功能亮点: 1.创建型模式5种:单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式 2.结构型模式7种:适配器模式、桥接模式、组合模式、装饰者模式、外观模式、享元模式、代理模式 3.行为型模式11种:策略模式、迭代器模式、中介者模式、观察者模式、状态模式、模板方法模式、命令模式、职责链模式、访问者模式、解释器模式、备忘录模式 4.每个模式都配有详细注释和实


告别JS初学者噩梦:这样写流程控制和函数才叫优雅
良山有风来2025/10/15

你是不是也遇到过这样的场景? 面对一堆复杂的if-else嵌套,自己都看不懂昨天写的代码;想要复用某个功能,却只能笨拙地复制粘贴;代码越写越长,bug越改越多,最后连自己都不想维护... 别担心,今天这篇文章就是来拯救你的! 我将带你重新认识JavaScript的流程控制和函数封装,分享一些让代码变得更优雅、更易维护的实用技巧。读完本文,你将彻底告别“面条式代码”,写出既漂亮又实用的JavaScript代码。 流程控制:从混乱到清晰 先来看个真实案例。假设我们要根据用户等级显示不同的权益: //

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2025 聚合阅读