【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-rowgrid-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-1item-9),这些类名与CSS选择器中的类名相对应,使得网格合并生效。通过设置

grid-rowgrid-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-columnsgrid-template-rowsgrid-rowgrid-column等属性,我们可以轻松地实现简单到复杂的网格布局。网格合并嵌套使得在网格中创建复杂的布局变得更加简单和灵活。

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

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

相关文章

Spring源码解析(八):bean后置处理器CommonAnnotationBeanPostProcessor

Spring源码系列文章 Spring源码解析(一)&#xff1a;环境搭建 Spring源码解析(二)&#xff1a;bean容器的创建、默认后置处理器、扫描包路径bean Spring源码解析(三)&#xff1a;bean容器的刷新 Spring源码解析(四)&#xff1a;单例bean的创建流程 Spring源码解析(五)&…

opencv基础-34 图像平滑处理-双边滤波cv2.bilateralFilter()

双边滤波&#xff08;BilateralFiltering&#xff09;是一种图像处理滤波技术&#xff0c;用于平滑图像并同时保留边缘信息。与其他传统的线性滤波方法不同&#xff0c;双边滤波在考虑像素之间的空间距离之外&#xff0c;还考虑了像素之间的灰度值相似性。这使得双边滤波能够有…

图像分段线性变换

图像分段线性变换&#xff08;Piecewise Linear Transformation&#xff09;是一种图像处理技术&#xff0c;它通过对不同区域的像素值应用不同的线性变换来调整图像的对比度和亮度。这通常用于增强图像中特定区域的细节或调整图像的整体外观。数学上&#xff0c;分段线性变换可…

数据结构初阶--二叉树的顺序结构之堆

目录 一.堆的概念及结构 1.1.堆的概念 1.2.堆的存储结构 二.堆的功能实现 2.1.堆的定义 2.2.堆的初始化 2.3.堆的销毁 2.4.堆的打印 2.5.堆的插入 向上调整算法 堆的插入 2.6.堆的删除 向下调整算法 堆的删除 2.7.堆的取堆顶元素 2.8.堆的判空 2.9.堆的求堆的…

[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序

1.今天开发了一套服务程序&#xff0c;使用的是Odbc连接MySql数据库&#xff0c; 在我本机用VS打开程序时&#xff0c;访问一切正常&#xff0c;当发布出来装在电脑上&#xff0c;连接数据库时提示&#xff1a; [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定…

VoxWeekly|The Sandbox 生态周报|20230731

欢迎来到由 The Sandbox 发布的《VoxWeekly》。我们会在每周发布&#xff0c;对上一周 The Sandbox 生态系统所发生的事情进行总结。 如果你喜欢我们内容&#xff0c;欢迎与朋友和家人分享。请订阅我们的 Medium 、关注我们的 Twitter&#xff0c;并加入 Discord 社区&#xf…

Docker学习之构建Base Image

构建Base Image 目标是构建一个类似官方Hello world的镜像&#xff0c;需要配置好Docker运行环境。 创建目录&#xff0c;编写代码 创建并进入docker目录。 mkdir docker cd dockertouch hello.cvim hello.chello.c文件的内容如下&#xff1a; #include <stdio.h>in…

springboot(3)

URL和URI URI&#xff1a;Uniform Resource Identifier&#xff0c;统一资源标识符 URL&#xff1a;Uniform Resource Locator&#xff0c;统一资源定位符 URN&#xff1a;Uniform Resource Name&#xff0c;统一资源名称 但URN只是对资源的描述&#xff0c;而通过URL可以直…

Zebec Protocol 将进军尼泊尔市场,通过 Zebec Card 推动该地区金融平等

流支付正在成为一种全新的支付形态&#xff0c;Zebec Protocol 作为流支付的主要推崇者&#xff0c;正在积极的推动该支付方案向更广泛的应用场景拓展。目前&#xff0c;Zebec Protocol 成功的将流支付应用在薪酬支付领域&#xff0c;并通过收购 WageLink 将其纳入旗下&#xf…

C#实现SqlServer数据库同步

实现效果&#xff1a; 设计思路&#xff1a; 1. 开启数据库及表的cdc&#xff0c;定时查询cdc表数据&#xff0c;封装sql语句(通过执行类型&#xff0c;主键;修改类型的cdc数据只取最后更新的记录)&#xff0c;添加到离线数据表&#xff1b; 2. 线程定时查询离线数据表&#xf…

有哪些常用的设计素材网站?

素材网站可以是设计师和创意人员的灵感来源。这些网站收集了各种类型的平面设计图片&#xff0c;包括标志、海报、网站设计、包装设计、插图等。在本文中&#xff0c;我将推荐15个平面设计图素材网站&#xff0c;以帮助您找到新的想法和灵感。 1.即时设计资源社区 即时设计资…

SpringBoot 热部署

文章目录 前言一、spring-boot-devtools添加热部署框架支持settings 开启项目自动编译开启运行中热部署使用Debug启动 二、IDEA 自带 HowSwap 功能设置 Spring Boot 启动类等待项目启动完成点击热加载按钮存在的问题 三、JRebel 插件【推荐】安装插件使用插件 前言 在日常开发…

分布式协议与算法——CAP理论、ACID理论、BASE理论

CAP理论 CAP理论&#xff0c;对分布式系统的特性做了高度抽象&#xff0c;比如抽象成了一致性、可用性和分区容错性&#xff0c;并对特性间的冲突&#xff08;也就是CAP不可能三角&#xff09;做了总结。 CAP三指标 CAP理论对分布式系统的特性做了高度抽象&#xff0c;形成了…

BL302嵌入式ARM控制器进行SQLite3数据库操作的实例演示

本文主要讲述了在钡铼技术BL302嵌入式arm控制器上运行 SQLite3 数据库的命令示例。SQLite3 是一个轻型的嵌入式数据库&#xff0c;不需要安装数据库服务器进程&#xff0c;占用资源低且处理速度快。 首先&#xff0c;需要将对应版本的 SQLite3 文件复制到设备的 /usr/ 目录下&…

c++开发模式,享元模式

享元模式&#xff0c;个人理解&#xff0c;就是应用共享技术来减少类的对象创建&#xff0c;节省计算机资源消耗&#xff0c;而且能够减少维护成本 #include <iostream> #include <string> #include <vector>using namespace std;class Flyweight { public:…

python之prettytable库的使用

文章目录 一 什么是prettytable二 prettytable的简单使用1. 添加表头2. 添加行3. 添加列4. 设置对齐方式4. 设置输出表格样式5. 自定义边框样式6. 其它功能 三 prettytable在实际中的使用 一 什么是prettytable prettytable是Python的一个第三方工具库&#xff0c;用于创建漂亮…

【微信小程序】申请蓝牙、位置和数据库等相关权限

在小程序的app.json文件中配置requiredPermissions字段&#xff0c;并在其中添加相应的权限。 以下是一个示例app.json文件的配置&#xff0c;包括了蓝牙、位置和数据库等权限的申请&#xff1a; {"pages": ["pages/index/index"],"requiredPermiss…

后端开发4.Elasticsearch的搭建

使用docker安装 安装elasticsearch 拉取镜像 docker pull elasticsearch:7.17.0容器间建立通信,创建 elastic的网关 docker network create elastic 创建es容器【自启动】【虚拟机处理器数量至少两个】 docker run --restart=always -p 9200:9200 -p 9300:9300 -e "…

CI/CD持续集成持续发布(jenkins)

1.背景 在实际开发中&#xff0c;我们经常要一边开发一边测试&#xff0c;当然这里说的测试并不是程序员对自己代码的单元测试&#xff0c;而是同组程序员将代码提交后&#xff0c;由测试人员测试&#xff1b; 或者前后端分离后&#xff0c;经常会修改接口&#xff0c;然后重新…

【LeetCode 热题 100】图论 专题(bfs,拓扑排序,Trie树 字典树)

from&#xff1a; https://leetcode.cn/studyplan/top-100-liked/ bfs 具有 边权为1 的最短路性质 拓扑排序&#xff0c;入度 Trie树&#xff0c; 高效存储 字符串【见鬼&#xff0c;不知道为什么写错&#xff0c;需要掌握熟练度】 文章目录 200. 岛屿数量【dfs / bfs】994. 腐…