css3网格布局

embedded/2025/1/20 4:44:56/

一、基本概念

网格容器(Grid Container)

是应用了display: grid或display: inline - grid属性的元素。它是网格布局的最外层元素,所有的网格项目(Grid Items)都包含在这个容器内。例如:

.container {display: grid;
}

display: grid会创建一个块级网格容器,而display: inline - grid则创建一个内联级网格容器
网格项目(Grid Item)
是网格容器的子元素。这些子元素会按照网格布局的规则在容器内排列。例如,在一个包含多个

子元素的网格容器中,这些
就是网格项目。
网格线(Grid Lines)
构成网格结构的分界线。它们可以是水平的(行网格线)或垂直的(列网格线)。通过指定网格项目在网格线之间的位置来布局。例如,一个 2x2 的网格有 3 条列网格线和 3 条行网格线。
网格轨道(Grid Tracks)
是两个相邻网格线之间的空间。可以是行轨道(Row Tracks)或者列轨道(Column Tracks)。轨道的大小可以是固定的(如100px)、百分比(如50%)或者自适应(auto)等多种方式定义。

二、定义网格结构

定义列和行
grid-template-columns属性
用于定义网格的列轨道。可以使用多种单位和方式来定义列的宽度。
例如,创建一个三列的网格,每列宽度为100px:

.container {display: grid;grid-template-columns: 100px 100px 100px;
}

还可以使用fr(fractional unit)单位来创建弹性列。例如,创建一个两列的网格,第一列占 1 份空间,第二列占 2 份空间:

.container {display: grid;grid-template-columns: 1fr 2fr;
}

grid-template-rows属性
用于定义网格的行轨道。和grid-template-columns类似。
例如,创建一个两行的网格,第一行高度为50px,第二行高度自适应:

.container {display: grid;grid-template-rows: 50px auto;
}

网格间距(Gap)
grid-column-gap和grid-row-gap属性(已废弃,建议使用gap属性)
grid-column-gap用于设置列与列之间的间距,grid-row-gap用于设置行与行之间的间距。
例如,设置列间距为10px,行间距为20px:

.container {display: grid;grid-template-columns: 100px 100px;grid-template-rows: 50px 50px;grid-column-gap: 10px;grid-row-gap: 20px;
}

gap属性
是grid-column-gap和grid-row-gap的简写形式。可以接收一个或两个值。
一个值时,表示行和列的间距相同。例如,设置间距为15px:

.container {display: grid;grid-template-columns: 100px 100px;grid-template-rows: 50px 50px;gap: 15px;
}

两个值时,第一个值表示行间距,第二个值表示列间距。例如,设置行间距为10px,列间距为20px:

.container {display: grid;grid-template-columns: 100px 100px;grid-template-rows: 50px 50px;gap: 10px 20px;
}

三、定位网格项目

使用网格线编号定位
grid-row-start、grid-row-end、grid-column-start和grid-column-end属性
这些属性用于指定网格项目的起始和结束网格线位置。
例如,将一个网格项目放置在从第一行网格线开始,到第三行网格线结束,从第二列网格线开始,到第四列网格线结束的位置:

.item {grid-row-start: 1;grid-row-end: 3;grid-column-start: 2;grid-column-end: 4;
}

使用grid-area属性定位
这是一个简写属性,它可以同时设置grid-row-start、grid-row-end、grid-column-start和grid-column-end。
例如,和上面的定位效果相同的grid-area写法:

   .item {grid-area: 1 / 2 / 3 / 4;}

也可以为网格区域命名,然后通过名称来定位网格项目。首先在网格容器中定义区域名称:

.container {display: grid;grid-template-columns: 100px 100px;grid-template-rows: 50px 50px;grid-template-areas: "header header""sidebar content";
}

然后将网格项目放置到对应的区域:

.header {grid-area: header;
}
.sidebar {grid-area: sidebar;
}
.content {grid-area: content;
}

四、网格项目的对齐方式

容器内项目的对齐(justify-items和align-items)
justify-items属性
用于设置网格项目在列方向(水平方向)上的对齐方式。它可以取值为start(默认值,靠列的起始边对齐)、end(靠列的结束边对齐)、center(在列中间对齐)、stretch(拉伸以填满列宽度)。
例如,将所有网格项目在列方向上居中对齐:

.container {display: grid;justify-items: center;
}

align-items属性
用于设置网格项目在行方向(垂直方向)上的对齐方式。取值和justify-items类似,有start、end、center、stretch。
例如,将所有网格项目在行方向上底部对齐:

.container {display: grid;align-items: end;
}

整个容器的对齐(justify-content和align-content)
justify-content属性

当网格容器的宽度大于所有列轨道宽度之和时,用于设置整个网格在容器的水平方向上的对齐方式。取值有start(默认值,靠容器的起始边对齐)、end(靠容器的结束边对齐)、center(在容器中间对齐)、space - between(在列轨道之间均匀分布,两端对齐)、space - around(在列轨道周围均匀分布)。
例如,将整个网格在容器水平方向上均匀分布,两端对齐:

.container {display: grid;justify-content: space - between;
}

align-content属性
当网格容器的高度大于所有行轨道高度之和时,用于设置整个网格在容器的垂直方向上的对齐方式。取值和justify-content类似。
例如,将整个网格在容器垂直方向上居中对齐:

.container {display: grid;align-content: center;
}

五、响应式网格布局

CSS 网格布局在响应式设计中非常强大。可以通过媒体查询来改变网格的结构和布局。
例如,在小屏幕设备上,将一个三列的网格变成一列:

@media (max - width: 600px) {.container {grid-template-columns: 1fr;}
}

这样,当屏幕宽度小于600px时,网格容器就会变成只有一列的布局,从而适应不同设备的屏幕尺寸。


http://www.ppmy.cn/embedded/155383.html

相关文章

「港科技」联手「地平线」打造GPT风格的自动驾驶世界模型:DrivingWorld

摘要 最近在自回归(AR)生成模型方面的成功,例如自然语言处理中的GPT系列,激发了在视觉任务中复制这一成功的努力。一些研究尝试将这种方法扩展到自动驾驶中,通过构建基于视频的世界模型来生成逼真的未来视频序列和预测…

网络安全防护指南:筑牢网络安全防线(510)

一、网络安全的基本概念 (一)网络的定义 网络是指由计算机或者其他信息终端及相关设备组成的按照一定的规则和程序对信息收集、存储、传输、交换、处理的系统。在当今数字化时代,网络已经成为人们生活和工作中不可或缺的一部分。它连接了世…

【正点原子STM32精英V2开发板体验】体验LVGL的SD NAND文件系统

目的 验证基于SD NAND卡在正点原子STM32精英V2开发板上的兼容效果 实验材料 正点原子STM32精英V2开发板 TF 卡一片 SD NAND卡一片 实验步骤 1、打开例程【正点原子】精英STM32F103开发板 V2-资料盘(A盘)\4,程序源码\3,扩展例程\4,LVGL…

基于OpenCV和Python的人脸识别系统_django

开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 公告信息管理 操作日志管理 用户登录界面 用户…

20250116如何查看联想笔记本电脑的型号

20250116如何查看联想笔记本电脑的型号 2025/1/16 14:43 rootrootrootroot-ThinkBook-16-G5-IRH:~$ msinfo32 操作系统名称 Microsoft Windows 10 家庭中文版 版本 10.0.19045 内部版本 19045 其他操作系统描述 没有资料 操作系统制造商 Microsoft Corporation …

sort(函数模板)和priority_queue(类模板)的比较器重载

一、sort的比较器重载 sort是一个函数模板&#xff0c;定义如下 它的比较器重载的两种方法&#xff1a; 1. 传函数指针 #include <iostream> #include <algorithm>using namespace std;class Node { public:int value;Node() { value 0; };explicit Node(int v…

ES6的高阶语法特性

一、模板字符串的高级用法 1.1.模板字符串的嵌套 模板字符串的嵌套允许在一个模板字符串内部再嵌入一个或多个模板字符串。这种嵌套结构在处理复杂数据结构或生成具有层级关系的文本时非常有用。 1. 嵌套示例 假设我们有一个包含多个对象的数组&#xff0c;每个对象都有名称、…

linux 安装Redis

下载Redis http://download.redis.io/releases将下载的安装包上传到服务器解压安装包&#xff1a;程序一般放在opt下 &#xff0c;我们可以使用命令将文件移动到对应目录 mv redis-7.0.5.tar.gz /opt使用命令对Redis文件进行解压&#xff1a; tar zxvf redis-7.0.5.tar.gz进…