css3网格布局

news2025/1/17 22:37:42

一、基本概念

网格容器(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.coloradmin.cn/o/2278185.html

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

相关文章

Linux命令行工具-使用方法

参考资料 Linux网络命令:网络工具socat详解-CSDN博客 arm-linux-gnueabihf、aarch64-linux-gnu等ARM交叉编译GCC的区别_aarch64-elf-gcc aarch64-linux-gnu-CSDN博客 解决Linux内核问题实用技巧之-dev/mem的新玩法-腾讯云开发者社区-腾讯云 热爱学习地派大星-CS…

【Flink系列】9. Flink容错机制

9. 容错机制 在Flink中,有一套完整的容错机制来保证故障后的恢复,其中最重要的就是检查点。 9.1 检查点(Checkpoint) 9.1.1 检查点的保存 1)周期性的触发保存 “随时存档”确实恢复起来方便,可是需要我…

【深度学习】关键技术-激活函数(Activation Functions)

激活函数(Activation Functions) 激活函数是神经网络的重要组成部分,它的作用是将神经元的输入信号映射到输出信号,同时引入非线性特性,使神经网络能够处理复杂问题。以下是常见激活函数的种类、公式、图形特点及其应…

20.<Spring图书管理系统①(登录+添加图书)>

PS:关于接口定义 接口定义,通常由服务器提供方来定义。 1.路径:自己定义 2.参数:根据需求考虑,我们这个接口功能完成需要哪些信息。 3.返回结果:考虑我们能为对方提供什么。站在对方角度考虑。 我们使用到的…

【Sql递归查询】Mysql、Oracle、SQL Server、PostgreSQL 实现递归查询的区别与案例(详解)

文章目录 Mysql 5.7 递归查询Mysql 8 实现递归查询Oracle递归示例SQL Server 递归查询示例PostgreSQL 递归查询示例 更多相关内容可查看 Mysql 5.7 递归查询 MySQL 5.7 本身不直接支持标准 SQL 中的递归查询语法(如 WITH RECURSIVE 这种常见的递归查询方式&#xf…

vue2修改表单只提交被修改的数据的字段传给后端接口

效果: 步骤一、 vue2修改表单提交的时候,只将修改的数据的字段传给后端接口,没有修改得数据不传参给接口。 在 data 对象中添加一个新的属性,用于存储初始表单数据的副本,与当前表单数据进行比较,找出哪些…

「刘一哥GIS」系列专栏《GRASS GIS零基础入门实验教程(配套案例数据)》专栏上线了

「刘一哥GIS」系列专栏《GRASS GIS零基础入门实验教程》全新上线了,欢迎广大GISer朋友关注,一起探索GIS奥秘,分享GIS价值! 本专栏以实战案例的形式,深入浅出地介绍了GRASS GIS的基本使用方法,用一个个实例讲…

纯命令 git使用

首先我们到一个新的公司 要添加一个新的git仓库的权限 我们应该现拉去代码 配置git的仓库信息 第一 先添加权限 第二 如果不是自己电脑 需要配置信息 配置基础信息 查看本地git账号git config --global user.name git config --global user.email修改本地账号git co…

Linux系统编程:深入理解计算机软硬件体系和架构

一、硬件体系 首先我们要知道,我们最常见的计算机(笔记本)以及我们不常见的计算机(服务器)其实本质上都是一堆硬件的结合:cpu、网卡、显卡、内存、磁盘、显示器、键盘…… 但他们并不是毫无章法地放在一起…

微信小程序-Docker+Nginx环境配置业务域名验证文件

在实际开发或运维工作中,我们时常需要在 Nginx 部署的服务器上提供一个特定的静态文件,用于域名验证或第三方平台验证。若此时使用 Docker 容器部署了 Nginx,就需要将该验证文件正确地映射(挂载)到容器中,并…

HarmonyOS NEXT应用开发边学边玩系列:从零实现一影视APP (五、电影详情页的设计实现)

在上一篇文章中,完成了电影列表页的开发。接下来,将进入电影详情页的设计实现阶段。这个页面将展示电影的详细信息,包括电影海报、评分、简介以及相关影人等。将使用 HarmonyOS 提供的常用组件,并结合第三方库 nutpi/axios 来实现…

在 macOS 上,用命令行连接 MySQL(/usr/local/mysql/bin/mysql -u root -p)

根据你提供的文件内容,MySQL 的安装路径是 /usr/local/mysql。要直接使用 mysql 命令,你需要找到 mysql 可执行文件的路径。 在 macOS 上,mysql 客户端通常位于 MySQL 安装目录的 bin 子目录中。因此,完整的路径应该是&#xff1…

使用docker-compose安装ELK(elasticsearch,logstash,kibana)并简单使用

首先服务器上需要安装docker已经docker-compose,如果没有,可以参考我之前写的文章进行安装。 https://blog.csdn.net/a_lllk/article/details/143382884?spm1001.2014.3001.5502 1.下载并启动elk容器 先创建一个网关,让所有的容器共用此网…

解决“无法定位程序输入点 av_buffer_create 于动态链接库 XXX\Obsidian.exe 上”问题

解决“无法定位程序输入点 av_buffer_create 于动态链接库 XXX\Obsidian.exe 上”问题 问题描述 本人在使用zotero中的zotero one(青柠学术插件)的时候,使用插件跳转obsidian中的对应笔记,出现上图情况。(错误中提到的…

《小迪安全》学习笔记05

目录 读取: 写入: (其中的读取和写入时我认为比较重要的,所以单独做成了目录,这里的读取和写入是指在进行sql注入的时候与本地文件进行的交互) 好久没发博客了。。。从这篇开始的小迪安全学习笔记就开始…

Jupyter notebook中运行dos指令运行方法

Jupyter notebook中运行dos指令运行方法 目录 Jupyter notebook中运行dos指令运行方法一、DOS(磁盘操作系统)指令介绍1.1 DOS介绍1.2 DOS指令1.2.1 DIR - 显示当前目录下的文件和子目录列表。1.2.2 CD 或 CHDIR - 改变当前目录1.2.3 使用 CD .. 可以返回上一级目录1…

excel 判断某个单元格的日期,如果超过3天,则在另一个单元格显示超过三天的公式

excel 判断某个单元格的日期&#xff0c;如果超过3天&#xff0c;则在另一个单元格显示超过三天的公式&#xff0c;公式如下&#xff1a; IF(DATEDIF(C627,TODAY(),"d")<4,"3天以内","超过三天") IF(D627"超过3天","文件赶紧…

内存与缓存:保姆级图文详解

文章目录 前言1、计算机存储设备1.1、硬盘、内存、缓存1.2、金字塔结构1.3、数据流通过程 2、数据结构内存效率3、数据结构缓存效率 前言 亲爱的家人们&#xff0c;创作很不容易&#xff0c;若对您有帮助的话&#xff0c;请点赞收藏加关注哦&#xff0c;您的关注是我持续创作的…

eBay账号安全攻略:巧妙应对风险

在跨境电商的浪潮中&#xff0c;eBay宛如一座璀璨的灯塔&#xff0c;照亮了无数买卖双方的交易之路。但别忘了&#xff0c;网络安全的阴霾也在悄然蔓延&#xff0c;让eBay账号时刻处于黑客攻击、数据泄露、钓鱼诈骗等风险的阴影之下。别担心&#xff0c;今天就来为你支支招&…

宝塔php7.4安装报错,无法安装,php8以上可以安装,以下的不行,gd库什么的都正常

宝塔的依赖问题导致的问题&#xff0c;最后手动挂载后才解决。。。废了三天三夜终于搞好了。。。。无语&#xff5e; 建议&#xff1a;不要一直升级宝塔版本&#xff0c;升级前备份或者开服务商的实例镜像&#xff0c;方便恢复&#xff0c;不然&#xff0c;可就GG了&#xff5…