【CSS】网格布局(简单布局、网格合并、网格嵌套)
文章目录
- CSS网格布局(Grid Layout)
- 1. 简单布局
- 2. 网格合并
- 3. 网格嵌套
- 4. 总结
CSS网格布局(Grid Layout)
CSS网格布局(Grid Layout)是一种强大且灵活的CSS布局系统,允许开发者以网格形式组织和定位HTML元素。网格布局可以帮助我们在一个容器中定义行(rows)和列(columns),然后将元素放置在这些网格中。这种布局方式比传统的基于浮动和定位的布局更直观和易于管理,特别适用于响应式设计和复杂的布局需求。
1. 简单布局
我们首先来看一个简单的网格布局示例。假设我们有一个容器,我们将其分为3列,每列的宽度平分剩余空间,然后在容器中放置一些网格项。

HTML代码:
<!DOCTYPE html>
<html>
<head><title>CSS Grid Layout - 简单布局</title><style>.grid-container {display: grid;grid-template-columns: repeat(3, 1fr);grid-gap: 10px;}.grid-item {font-size: 2em;text-align: center;border: 1px solid #e5e4e9;padding: 20px;}</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 class="grid-item">7</div><div class="grid-item">8</div><div class="grid-item">9</div></div>
</body>
</html>
在这个简单的示例中,我们创建了一个包含9个网格项的网格布局。我们使用display: grid;来创建网格容器,通过grid-template-columns设置为repeat(3, 1fr)来定义3列,每列宽度平分剩余空间。通过设置grid-gap: 10px;,我们为网格项之间添加了10px的间隔。
2. 网格合并
在网格布局中,我们可以通过设置grid-row和grid-column的起始和结束行/列索引,将多个网格项合并成一个大的网格单元。

在这个例子中,我们不难看出上面的网格是3*4的。注意看这里的item-1、item-2。
HTML代码:
<!DOCTYPE html>
<html>
<head><title>CSS Grid Layout - 网格项合并</title><style>.grid-container {display: grid;grid-template-columns: repeat(3, 1fr);grid-gap: 10px;}.grid-item {font-size: 2em;text-align: center;border: 1px solid #e5e4e9;padding: 20px;}.item-1 {background-color: #ef342a;grid-row: 1 / 3; /* 合并占据 1到2 行,不包括3 */grid-column: 1 / 2; /* 合并占据 1到1 列,不包括2 */}.item-2 {background-color: #f68f26;grid-row: 1 / 2; /* 占据 1 行 */grid-column: 2 / 4; /* 合并占据 2到3 列 */}.item-3 {background-color: #4ba946;grid-row: 1 / 2; /* 占据 1 行 */grid-column: 4 / 4; /* 占据 4 列 */}.item-4 {background-color: #0376c2;grid-row: 2 / 4; /* 合并占据 2到3 行 */grid-column: 2 / 3; /* 占据 2 列*/}.item-5 {background-color: #c077af;grid-row: 2 / 4; /* 合并占据2到3行 */grid-column: 3 / 4; /* 合并占据3列 */}.item-6 {background-color: #f8d29d;grid-row: 2 / 2; /* 占据2行 */grid-column: 4 / 4; /* 占据4列 */}.item-7 {background-color: #b5a87f;grid-row: 3 / 4; /* 占据3行 */grid-column: 1 / 3; /* 合并占据1到2列 */}.item-8 {background-color: #d0e4a9;grid-row: 3 / 4; /* 占据3行 */grid-column: 3 / 4; /* 占据3列 */}.item-9 {background-color: #4dc7ec;grid-row: 3 / 4; /* 占据3行 */grid-column: 4 / 4; /* 占据4列 */}</style>
</head>
<body><div class="grid-container"><div class="grid-item item-1">1</div><div class="grid-item item-2">2</div><div class="grid-item item-3">3</div><div class="grid-item item-4">4</div><div class="grid-item item-5">5</div><div class="grid-item item-6">6</div><div class="grid-item item-7">7</div><div class="grid-item item-8">8</div><div class="grid-item item-9">9</div></div>
</body>
</html>
在这个示例中,我们为每个网格项添加了相应的类名(item-1到item-9),这些类名与CSS选择器中的类名相对应,使得网格合并生效。通过设置
grid-row和grid-column属性,我们将中间的9个网格项合并成了一个大的网格单元。
3. 网格嵌套
在网格布局中,我们可以创建更复杂的布局,比如嵌套网格和不规则网格。以下是一个复杂的网格布局示例,其中包含嵌套的网格。

HTML代码:
<!DOCTYPE html>
<html>
<head><title>CSS Grid Layout - 复杂布局</title><style>.grid-container {display: grid;grid-template-columns: repeat(2, 1fr);grid-gap: 10px;}.grid-item {font-size: 2em;text-align: center;border: 1px solid #e5e4e9;padding: 20px;}.nested-grid {display: grid;grid-template-columns: repeat(3, 1fr);grid-gap: 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 class="grid-item nested-grid"><div class="grid-item">7</div><div class="grid-item">8</div><div class="grid-item">9</div></div></div>
</body>
</html>
在这个复杂的示例中,我们首先创建了一个包含6个网格项的网格布局。然后,在第6个网格项中创建了一个嵌套的网格布局,该嵌套网格包含3个网格项。
这个示例演示了如何在网格布局中实现嵌套,通过在一个网格项中创建另一个网格容器,我们可以更灵活地组织和排列内容。
4. 总结
CSS网格布局是一种强大的CSS布局系统,它简化了页面的布局和定位,同时适应不同屏幕大小的需求。通过使用display: grid;、grid-template-columns、grid-template-rows、grid-row和grid-column等属性,我们可以轻松地实现简单到复杂的网格布局。网格合并和嵌套使得在网格中创建复杂的布局变得更加简单和灵活。
相关文章:
【CSS】网格布局(简单布局、网格合并、网格嵌套)
文章目录 CSS网格布局(Grid Layout)1. 简单布局2. 网格合并3. 网格嵌套4. 总结 CSS网格布局(Grid Layout) CSS网格布局(Grid Layout)是一种强大且灵活的CSS布局系统,允许开发者以网格形式组织和…...
06 Ubuntu22.04上的miniconda3安装、深度学习常用环境配置
下载脚本 我依然是在清华镜像当中寻找的脚本。这里找脚本真的十分方便,我十分推荐。 wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh 下载十分快速,10秒解决问题 运行miniconda3安装脚本 赋予执…...
【CSS3】CSS3 动画 ② ( 动画序列 | 使用 from 和 to 定义动画序列 | 定义多个动画节点 | 代码示例 )
文章目录 一、动画序列二、代码示例 - 使用 from 和 to 定义动画序列三、代码示例 - 定义多个动画节点 一、动画序列 定义动画时 , 需要设置动画序列 , 下面的 0% 和 100% 设置的是 动画 在 运行到某个 百分比节点时 的 标签元素样式状态 ; keyframes element-move { 0% { tr…...
最优化:建模、算法与理论
最优化:建模、算法与理论 目前在学习 最优化:建模、算法与理论这本书,来此记录一下,顺便做一些笔记,在其中我也会加一些自己的理解,尽量写的不会那么的条条框框(当然最基础的还是要有ÿ…...
拿捏--->打印菱形
文章目录 题目描述算法思路代码示例 题目描述 在屏幕上输出以下图案: 算法思路 代码示例 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() {int n;scanf("%d", &n);//上半部分菱形for (int i 0; i < n; i) //上半部分…...
【SpringBoot笔记】定时任务(cron)
定时任务就是在固定的时间执行某个程序,闹钟的作用。 1.在启动类上添加注解 EnableScheduling 2.创建定时任务类 在这个类里面使用表达式设置什么时候执行 cron 表达式(也叫七子表达式),设置执行规则 package com.Lijibai.s…...
Redis单机,主从,哨兵,集群四大模式
Redis 单机模式 Redis 单机模式是指 Redis 数据库在单个服务器上以独立的、单一的进程运行的模式。在这种模式下,Redis 不涉及数据分片或集群配置,所有的数据和操作都在一个实例中进行。以下是关于 Redis 单机模式的详细介绍: 单一实例&#…...
2023年8月份华为H12-811更新了
801、[单选题]178/832、在系统视图下键入什么命令可以切换到用户视图? A quit B souter C system-view D user-view 试题答案:A 试题解析:在系统视图下键入quit命令退出到用户视图。因此答案选A。 802、[单选题]“网络管理员在三层交换机上创建了V…...
[K8S:命令执行:权限异常:解决篇]:通过更新kubeconfig配置相关信息
文章目录 一:场景复现:1.1:关键信息:1.2:全异常日志输出: 二:解决流程:2.1:更新 kubeconfig:2.1.1:执行命令: 2.2:再次执行…...
帆软设计器报表加载不出折线图的原因
最近在用帆软设计器做可视化图表。偶有遇到因为数据集的字段类型导致加载不出折线,现记录如下。做报表的同行可以参考。 数据库使用了 Oracle 11g。数据集的 SQL 代码片是之前用在另一个单元格报表里面的。页面上有一个率是直接计算得出,我为了方便、就…...
[QCA6174]sdx12平台WiFi QCA6174在驱动加载的时候增加模块参数方法
需求描述 由于开发需要,有时候需要在驱动模块加载的时候增加一个参数,传递给到驱动使用 平台描述 Qualcomm SDX12+QCA6174平台 驱动信息 [ 112.281429] wlan: loading driver v4.0.11.213X [ 112.340262] msm_pcie_enable: PCIe: Assert the reset of endpoint of RC0. …...
Ajax-AJAX请求的不同发送方式
🥔:你一定能成为想要成为的人 发送AJAX请求不同方式 发送AJAX请求不同方式1、jQuery发送AJAX请求2、axios发送AJAX请求(重点)3、fetch发送AJAX请求 发送AJAX请求不同方式 1、jQuery发送AJAX请求 首先需要jquery的js文件…...
简易图书管理系统(面向对象思想)
目录 前言 1.整体思路 2.Book包 2.1Book类 2.2BookList类 3.user包 3.1User类 3.2NormalUser类 3.3AdminUser类 4.operation 4.1IOPeration接口 4.2ExitOperation类 4.3FindOperation类 4.4ShowOperation类 4.5AddOperation类 4.6DelOperation类 4.7BorrowOpera…...
C++ 函数模板与类模板
C最重要的特性之一就是代码重用,为了实现代码重用,代码必须具有通用性。通用代码应不受数据类型的影响,并且可以自动适应数据类型的变化。这种程序设计类型称为参数化程序设计。模板是C支持参数化程序设计的工具,通过它可以实现参…...
Tailwind CSS:简洁高效的工具,提升前端开发体验
112. Tailwind CSS:简洁高效的工具,提升前端开发体验 1. 什么是Tailwind CSS? Tailwind CSS是由Adam Wathan、Jonathan Reinink、David Hemphill和Steve Schoger等人共同创建的一种现代CSS框架。与传统的CSS框架不同,Tailwind CS…...
NR CSI(六) CSI reporting using PUCCH
之前NR CSI(二) the workflow of CSI report有对CSI report的相关流程进行介绍,而这篇主要看下CSI reporting over PUCCH的相关规定。 CSI report在PUCCH上传输的场景如上表红色字体,有三种场景,具体的对应的是Periodic 和Semi-Persistent CS…...
论文阅读---《Unsupervised Transformer-Based Anomaly Detection in ECG Signals》
题目:基于Transformer的无监督心电图(ECG)信号异常检测 摘要 异常检测是数据处理中的一个基本问题,它涉及到医疗感知数据中的不同问题。技术的进步使得收集大规模和高度变异的时间序列数据变得更加容易,然而ÿ…...
5G上行干扰规避的参数策略
LNR干扰避让 1. 干扰避让特性 D1/D2干扰避让:干扰与非干扰带宽独立测量,避免部分频带受干扰拉低整个带宽MCS,基于测量结果, 用户级自适应调度60/80/100M,躲避干扰频带。 窄带干扰避让:避免部分带宽的干扰对…...
CTF流量题解tcp1
用流量工具进行分析。发现消息长度有点异常。右键TCP跟踪。 ....mos.-mos-.-.mos-.-mos..-.mos..-mos-. 摩斯密码生成-网页工具 (adminun.com)...
Django快速入门
文章目录 一、安装1.创建虚拟环境(virtualenv和virtualenvwrapper)2. 安装django 二、改解释器三、创建一个Django项目四、项目目录项目同名文件夹/settings.py 五、测试服务器启动六、数据迁移七、创建应用八、基本视图1. 返回响应 response2. 渲染模板…...
【Android FWK】VR一体机全局菜单实战:从VirtualDisplay原理到系统级交互(上)
文章目录 一、从弹窗穿透到VR全局菜单 二、VirtualDisplay在VR中的适配原理 2.1 VR显示系统的特殊性 2.2 VR适配的核心代码 三、VR全局菜单的完整实现 3.1 系统架构设计 3.2 菜单呼出机制:手势+语音双重触发 3.3 菜单界面:适配VR的3D布局 3.4 系统交互:调节系统设置 四、VR环…...
别再只调API了!手把手教你用Python和OpenCV自定义Laplacian算子,玩转图像边缘检测
从零构建Laplacian算子:用Python和OpenCV揭开边缘检测的数学面纱 在计算机视觉领域,边缘检测是图像分析的基础操作之一。大多数开发者习惯直接调用OpenCV的cv2.Laplacian函数,却很少思考背后的数学原理。本文将带你从卷积核的底层设计出发&a…...
HiveSQL实战:巧用前后函数(lag/lead)解析用户行为序列
1. 窗口函数与用户行为分析的完美结合 做数据分析的朋友们应该都遇到过这样的场景:老板让你分析用户从浏览商品到最终下单的平均时间间隔,或者找出那些在关键页面停留时间过长的流失用户。这类问题本质上都是在分析用户行为序列,而HiveSQL中的…...
.NETCore Serilog 代码设置相关参数说明及按Sink设置不同级别(不同日志级别),使用异步方式写日志
rollingInterval设置为RollingInterval.Day与fileSizeLimitBytes配合使用: 在.NET Core Serilog中,同时设置rollingInterval RollingInterval.Day和fileSizeLimitBytes参数并不会产生配置冲突。这两个参数实际上是互补的,共同提供了更灵活的…...
自指宇宙学:存在如何通过自我描述而实在化(SRC-2024)
自指宇宙学:存在如何通过自我描述而实在化 Self-Referential Cosmology: How Existence Becomes Real Through Self-Description方见华 世毫九实验室 摘要:本文提出“自指宇宙学”(SRC),论证宇宙的实在性源于其自我描述能力。我们发现&#x…...
为什么说Applio是解决复杂语音克隆难题的终极解决方案?
为什么说Applio是解决复杂语音克隆难题的终极解决方案? 【免费下载链接】Applio Ultimate voice cloning tool, meticulously optimized for unrivaled power, modularity, and user-friendly experience. 项目地址: https://gitcode.com/gh_mirrors/ap/Applio …...
3步搞定AtlasOS系统技术故障:Xbox控制器驱动完全解决方案
3步搞定AtlasOS系统技术故障:Xbox控制器驱动完全解决方案 【免费下载链接】Atlas 🚀 An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/at…...
AI人脸生成新范式:IP-Adapter-FaceID PlusV2双重嵌入技术解析
AI人脸生成新范式:IP-Adapter-FaceID PlusV2双重嵌入技术解析 【免费下载链接】IP-Adapter-FaceID 项目地址: https://ai.gitcode.com/hf_mirrors/h94/IP-Adapter-FaceID 在AI人脸生成领域,如何在保持身份一致性的同时实现风格的灵活控制&#x…...
OpenClaw长期运行方案:nanobot镜像的稳定性优化技巧
OpenClaw长期运行方案:nanobot镜像的稳定性优化技巧 1. 为什么需要关注长期运行稳定性 去年冬天,我部署了一个基于OpenClaw的自动化新闻摘要系统。最初几周运行良好,直到某个凌晨收到服务器告警——进程已经悄悄崩溃了三天。这次教训让我意…...
ENSP实战:从零构建企业级WLAN网络
1. 企业级WLAN网络规划与ENSP环境搭建 第一次接触企业级WLAN部署时,我被各种专业术语搞得晕头转向。直到用华为ENSP模拟器实操了几次,才发现原来搭建无线网络就像搭积木一样有趣。ENSP作为华为官方推出的网络仿真平台,完美复现了真实设备的操…...
