CSS Grid 简介

CSS Grid 是一个二维布局系统,专为处理行和列的复杂网页布局而设计。与 Flexbox(一维布局)不同,Grid 允许开发者同时控制行和列,实现更精确的布局结构。

核心概念:
  1. Grid 容器:通过 display: grid 定义。
  2. Grid 项目:容器的直接子元素。
  3. 网格线(Grid Lines):划分行列的线(从 1 开始编号)。
  4. 网格轨道(Grid Tracks):行或列的间距(如 grid-template-columns)。
  5. 网格区域(Grid Areas):合并单元格形成的矩形区域。

关键属性速查

容器属性作用
grid-template-columns定义列宽(如 1fr 200px
grid-template-rows定义行高
grid-template-areas定义命名区域(配合 grid-area
gap行列间距(替代 grid-gap
justify-items项目水平对齐(start/end/center)
align-items项目垂直对齐
项目属性作用
grid-column-start/end控制列起始/结束位置
grid-row-start/end控制行起始/结束位置
grid-area指定项目所属命名区域
justify-self单个项目水平对齐
align-self单个项目垂直对齐

何时使用 Grid?

  • 整体页面布局(Header/Footer/Sidebar 等区域)
  • 二维复杂结构(同时控制行和列)
  • 响应式网格系统(如卡片、画廊布局)

💡 Tips
Grid 与 Flexbox 可协同使用!Grid 负责宏观布局,Flexbox 处理微观组件(如导航栏内部对齐)。


示例合集(含完整代码)

示例 1:基础网格布局
<!DOCTYPE html>
<html>
<head>
<style>
.grid-container {display: grid;grid-template-columns: repeat(3, 1fr); /* 三列等宽 */grid-gap: 10px;padding: 15px;background: #f0f0f0;
}.grid-item {background: #4CAF50;color: white;padding: 30px;text-align: center;border-radius: 5px;
}
</style>
</head>
<body>
<div class="grid-container"><div class="grid-item">1</div><div class="grid-item">2</div><div class="grid-item">3</div><div class="grid-item">4</div><div class="grid-item">5</div><div class="grid-item">6</div>
</div>
</body>
</html>
示例 2:网格区域命名布局
<!DOCTYPE html>
<html>
<head>
<style>
.container {display: grid;grid-template-areas:"header header header""sidebar main main""footer footer footer";grid-gap: 10px;height: 300px;
}.header { grid-area: header; background: #FF9800;padding: 20px;
}
.sidebar { grid-area: sidebar; background: #2196F3;
}
.main { grid-area: main; background: #4CAF50;
}
.footer { grid-area: footer; background: #9C27B0;
}
</style>
</head>
<body>
<div class="container"><div class="header">Header</div><div class="sidebar">Sidebar</div><div class="main">Main Content</div><div class="footer">Footer</div>
</div>
</body>
</html>
示例 3:响应式自适应网格
<!DOCTYPE html>
<html>
<head>
<style>
.grid {display: grid;grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));gap: 15px;padding: 20px;
}.item {background: #2196F3;height: 150px;display: flex;align-items: center;justify-content: center;color: white;font-size: 1.5rem;border-radius: 8px;
}
</style>
</head>
<body>
<div class="grid"><div class="item">1</div><div class="item">2</div><div class="item">3</div><div class="item">4</div><div class="item">5</div><div class="item">6</div>
</div>
</body>
</html>
示例 4:复杂定位与对齐
<!DOCTYPE html>
<html>
<head>
<style>
.grid {display: grid;grid-template-columns: 150px 1fr 100px;grid-template-rows: 100px 1fr 100px;height: 400px;background: #eee;gap: 10px;padding: 10px;
}.item-a {grid-column: 1 / 4; /* 跨3列 */background: #FF5722;display: grid;place-items: center;
}.item-b {grid-row: 2 / 4; /* 跨2行 */background: #3F51B5;
}.item-c {grid-column: 2 / 4;display: grid;grid-template-columns: repeat(2, 1fr);gap: 10px;
}.sub-item {background: #009688;display: flex;align-items: center;justify-content: center;
}
</style>
</head>
<body>
<div class="grid"><div class="item-a">Header (跨3列)</div><div class="item-b">Sidebar (跨2行)</div><div class="item-c"><div class="sub-item">内容1</div><div class="sub-item">内容2</div><div class="sub-item">内容3</div><div class="sub-item">内容4</div></div>
</div>
</body>
</html>

关键概念解析

  1. 容器属性

    • display: grid:定义网格容器
    • grid-template-columns/rows:定义列/行尺寸
    • gap:设置网格间距
    • grid-template-areas:命名网格区域
  2. 项目属性

    • grid-column/row:控制项目位置
    • grid-area:指定区域名称
    • justify-self/align-self:单个项目对齐
  3. 响应式单位

    • fr:剩余空间分配单位
    • minmax():定义尺寸范围
    • auto-fill:自动填充列

CSS Grid 彻底改变了网页布局方式,通过组合这些特性,可以轻松实现传统布局难以完成的复杂设计。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91662.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91662.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/91662.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[echarts]多个柱状图及图例

前言 实现多个柱状图功能&#xff0c;并设置多个图例样式&#xff0c;并定时刷新数据 react引入echarts import React, { useEffect, useRef } from react; import * as echarts from echarts; import DeviceApi from /api/screen/DeviceApi;const CenterDeviceSummary (props…

【读文献】Capacitor-drop AC-DC

[1] F. Song, et al., “An 85-to-230VAC to 3.3-to-4.6VDc 1.52W Capacitor-Drop Sigma-Floating-SC AC-DC Converter with 81.3% Peak Efficiency,” 2025 IEEE International Solid-State Circuits Conference (ISSCC), 2025.以下是针对该电容降压AC-DC转换器设计的通俗版解…

`StreamConfigurationMap` 实现逻辑与解析过程详解:相机流能力的声明、匹配与验证机制全景

StreamConfigurationMap 实现逻辑与解析过程详解:相机流能力的声明、匹配与验证机制全景 关键词: StreamConfigurationMap、CameraCharacteristics、OutputFormat、InputFormat、Size 配置、帧率范围、流兼容性、配置失败调试 摘要: StreamConfigurationMap 是 Android 相…

关于“PromptPilot” 之3 -Prompt构造器核心专项能力:任务调度

本篇问题Q20. 以上设计是“原始制造商”的典型范式。在三个不同理论层级&#xff08;Prompt 构造进程的三个子进程&#xff08;线程&#xff09;&#xff09;分别适合三种不同的取向&#xff1a; 面向目标、面向结果和面向过程。不同取向将采取不同的策略 和不同的 监控方式&am…

Solana: 链上开发入门,用 Anchor 和 Rust 构建第一个程序

大家好&#xff0c;如果大家对 Solana 开发充满好奇&#xff0c;但又对 Rust 语言感到陌生&#xff0c;那么大家来对地方了。很多人在探索 Solana 这条高性能公链时&#xff0c;遇到的第一个门槛就是其原生开发语言——Rust。Rust 以其高性能和内存安全著称&#xff0c;但学习曲…

node.js之Koa框架

Koa框架介绍Koa 是一个新的 web 框架&#xff0c;由 Express 原班人马打造&#xff0c;致力于成为一个更小、更富有表现力、更健壮的 Web 框架。Koa 解决了 Express 存在的一些问题&#xff0c;例如&#xff1a;中间件嵌套回调&#xff08;callback hell&#xff09;错误处理不…

C/C++离线环境安装(VSCode + MinGW)

因为工作需要部署离线C环境&#xff0c;网上有许多大佬分享了不错的教程&#xff0c;总结一篇完整教程自用&#xff0c;使用VSCode MinGW感谢一、安装准备二、软件安装1.安装MinGW2.安装VSCode及插件三、测试环境1.创建工程文件夹2.创建cpp文件总结感谢 本教程参考了以下教程…

如何创建一个飞书应用获取自己的飞书AppID和AppSecret?

这篇文章是接下来要开发「监控 X&#xff08;原Twitter&#xff09;博主账号最新推文」 自动化工作流的先导文章&#xff0c;由于内容相对独立&#xff0c;也可用于飞书应用的其他场景&#xff0c;故单独发出来&#xff0c;方便查阅。 监控X平台指定博主最新发文&#xff0c;需…

Prompt工程记录

Prompt基本建议&#xff1a;1.在查询中包含详细信息以获得更相关的答案总结会议笔记:先将会议笔记总结为一段&#xff0c;然后写一份演讲者的打分表&#xff0c;列出他们的每个要点&#xff1b;最后列出发言者建议的下一步行动或者行动项目&#xff08;如果有的话&#xff09;2…

CTE公用表表达式的可读性与性能优化

一、可读性优化CTE通过WITH子句定义临时命名结果集&#xff0c;将复杂查询分解为逻辑独立的模块&#xff0c;显著提升代码清晰度与可维护性‌&#xff1a;‌解构嵌套查询‌&#xff1a;将多层嵌套的子查询扁平化&#xff0c;例如传统嵌套统计订单的查询可重构为分步CTE&#xf…

8.1.2 TiDB存储引擎的原理

TiDB 简介 TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据 库&#xff0c;是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布 式数据库产品&#xff0c;具备水平扩容或者缩容、金融级高可用、实时 …

PTE之路--01

空格绕过:/**/ URL编码伪协议:pagezip://xxx/xx/x/x/xxx.jpg%23解压后的名字pagephar://xxx/xx/x/x/xxx.jpg/解压后的名字pageddata://ata://text/plain,<?php eval($_POST[x]) ;?>pagedata://text/plain,<?php eval($_POST[x]) ;?>127.0.0.1 | grep . ../key…

企业级日志分析系统ELK

1.什么是 Elastic Stack 如果系统和应用出现异常和问题,相关的开发和运维人员想要排查原因,就要先登录到应用运行所相应的主机,找到上面的相关日志文件再进行查找和分析,所以非常不方便,此外还会涉及到权限和安全问题,而ELK 的出现就很好的解决这一问题。 ELK 是由一家 …

ai项目多智能体

手把手教你构建一个 本地化的&#xff0c;免费的&#xff0c;企业级的&#xff0c;AI大模型知识库问答系统 - 网旭哈瑞.AI 体验 AutoGen Studio - 微软推出的友好多智能体协作框架_autogenstudio-CSDN博客 AutoGen Studio: Interactively Explore Multi-Agent Workflows | Au…

【HTML】浅谈 script 标签的 defer 和 async

The async and defer attributes are boolean attributes that indicate how the script should be evaluated. There are several possible modes that can be selected using these attributes, depending on the script’s type. async 和 defer 属性是布尔属性&#xff0c;…

Kafka Streams 并行处理机制深度解析:任务(Task)与流线程(Stream Threads)的协同设计

在构建实时流处理应用时&#xff0c;如何充分利用计算资源同时保证处理效率是一个关键问题。Kafka Streams 通过其独特的任务(Task)和流线程(Stream Threads)并行模型&#xff0c;为开发者提供了既简单又强大的并行处理能力。本文将深入解析 Kafka Streams 中任务与线程的协同工…

使用 Docker 部署 Label Studio 时本地文件无法显示的排查与解决

目录 使用 Docker 部署 Label Studio 时本地文件无法显示的排查与解决 1. 背景 2. 问题现象 3. 排查步骤 3.1 确认文件是否存在 3.2 检查环境变量配置 4. 解决方案 方法一&#xff1a;修改 Sync Storage 路径&#xff08;相对路径&#xff09; 方法二&#xff1a;修改…

ElasticJob怎么使用?

我们使用ElasticJob需要以下步骤&#xff1a; 1. 添加依赖 2. 配置任务&#xff08;可以使用Spring命名空间配置或Java配置&#xff09; 3. 实现任务逻辑&#xff08;实现SimpleJob、DataflowJob等接口&#xff09; 4. 启动任务 下面是一个详细的示例&#xff0c;包括Spring Bo…

TCP协议的特点和首部格式

文章目录TCP协议是什么&#xff1f;TCP协议的主要特点1. 面向连接2. 可靠传输3. 流量控制4. 拥塞控制TCP首部格式源端口和目标端口&#xff08;各16位&#xff09;序列号&#xff08;32位&#xff09;确认号&#xff08;32位&#xff09;数据偏移&#xff08;4位&#xff09;保…

IO流-文件的常用方法

1.关于java.io.File类- File类只能表示计算机中的文件或目录而不能获取或操作文件- 通过File类获得到文件的基本信息&#xff0c;如文件名、大小等&#xff0c;但不能获取文件内容- java中表示文件路径分隔符使用"/"或"\\"- File类中的构造方法- File(&quo…