图解 CSS Grid 布局

本文详细介绍了CSS Grid布局,从基础概念如网格容器、网格项、网格线和网格轨道,到如何设置网格的基本结构、行和列宽度,再到对齐内容、使用特殊单位和CSS函数。此外,还涵盖了网格项属性、隐式网格轨道、速记属性以及CSS Grid的调试和在线生成器,是全面掌握CSS Grid布局的实用教程。
摘要由CSDN通过智能技术生成

Grid(网格)布局是最强大的 CSS 布局方案,用于构建二维布局。Grid 布局将页面划分成一个个网格,可以任意组合不同的网格,实现各种各样的布局。下面就来看看 CSS Grid 布局是如何使用的!
CSS Grid常用属性模块图.png

1. Grid 布局概述

在解释 CSS Grid 布局之前,我们先来看看 Grid 布局中一些重要概念。

(1)网格容器

网格容器是所有网格项的父元素,网格容器会定义display:grid。下面例子中,类名为 container 的 div 元素就是网格容器:

.container {
	display: grid;
}
<div class="container">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
  <div class="item">4</div>
</div>

(2)网格项

网格项是网格容器的子元素,上面例子中类名为item的div元素就是网格项。

(3)网格线

构成网格结构的水平和垂直分隔线就是网格线,这些线位于列(列网格线)或行(行网格线)的任一侧。
下图中的网格有 9 个网格项,有 4 条行网格线和 4 条列网格线:

(4)网格轨道

两条相邻网格线之间的区域就是网格轨道。下图紫色区域就是网格轨道(红线圈起来的位置):

(5)网格单元

两条相邻的列网格线和两条相邻的行网格线组成是的网格单元。它是网格的单个单元,也是最小单元。下图紫色区域就是一个单元网格:

(6)网格区域

网格区域就是网格上的一个矩形区域,由一个或多个网格单元组成。下图中紫色的区域就是网格区域:

2. 设置基本网格

要想创建 CSS 网格布局,首先需要定义网格容器。可以使用display: grid或者display: inline-grid指定一个容器为网格布局。这样网格容器的所有直接子元素都会隐式转换为网格项。

.container {
   
  display: grid;
}

.container {
   
  display: inline-grid;
}

下面来看一个例子:

<div class="container">
  <div class="box a">1</div>
  <div class="box b">2</div>
  <div class="box c">3</div>
  <div class="box d">4</div>
</div>

在上面的代码中,我们定义了一个类名为 container 的 div 元素,其有四个子元素。下面来将其设置为网格容器:

.container {
   
  display: grid;
}

结果如下:
当元素设置了网格布局,column、float、clear、vertical-align属性都会失效。

3. 设置行和列宽度

将元素单独设置为网格容器不会立即影响子元素的显示方式,因为我们还没有指定布局的央样式。要更改网格中网格项的布局,就需要明确定义网格的行和列。这就用到了 grid-template-columns 和 grid-template-rows 属性。

(1)grid-template-columns

可以使用 grid-template-columns 属性来指定网格容器中所需的列数以及每列的宽度。
属性有:none|auto|max-content|min-content|length|initial|inherit。
该属性接受一个或多个非负 CSS 长度值,这些值的个数就是网格容器的列数,每个值表示每列(即每个网格轨道)的宽度。例如:

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

结果如下:

在这个例子中,我们使用 grid-template-columns 属性将网格容器的布局设置为三列,每列宽 400px。由于网格容器有四个子元素,而我们只给网格指定了三列,所以当网格容器中的网格项数量超过三个时,CSS 会将其他网格项放到新行中以保持容器的布局。

(2)grid-template-rows

可以使用 grid-template-rows 属性来指定网格容器中每一行的高度。与 grid-template-columns 属性不同,它并没有指定网格容器的行数,而只用来设置每行的高度。这是因为每当网格项换行时,网格容器都会隐式创建一个新行。因此,我们无法使用 grid-template-rows 属性来控制网格的行数。
属性有:none|auto|max-content|min-content|length|initial|inherit。
该属性接受一个或多个非负CSS 长度值,其中每个值表示网格容器中每一行的高度,从第一行到最后一行。例如:

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

在上面的代码中,我们指定了网格容器的第一行高度为 100px,第二行高度为 200px。
结果如下:

上面我们仅设置了网格容器中前两行的高度。如果向网格容器中添加更多的网格项,那么那些隐式创建的行的高度将不是由 grid-template-rows 属性决定,而由其内容的大小决定。

(3)grid-template-areas

可以使用grid-template-areas属性来定义网格区域。该属性有以下三个属性值:

  • grid-area-name:使用grid-area属性设置的网格区域的名称
  • . :空网格单元
  • none:没有定义网格区域

下面来看一个例子:

.item1 {
    grid-area: header; }
.item2 {
    grid-area: menu; }
.item3 {
    grid-area: main; }
.item4 {
    grid-area: right; }
.item5 {
    grid-area: footer; }
.container{
   
  display: grid;
  grid-template-areas:
  'header header header header header header'
  'menu main main . right right'
  'menu . footer footer footer footer';
}

这个网格布局包含六列三行,结果如下:
image.png

(4)grid-auto-columns

grid-auto-columns 属性设置网格容器中列的尺寸。该属性有以下七个属性值:

auto 默认值。由容器尺寸决定列的尺寸。
fit-content()
max-content 根据列中最大的项目设置每列的尺寸。
min-content 根据列中最小的项目设置每列的尺寸。
minmax(min.max) 设置大于或等于 min 且小于或等于 max 的尺寸范围。
length 设置列的尺寸,通过使用合法的长度值。参阅 长度单位
% 设置列的尺寸,通过使用百分比值。

下面来看一个例子:

.item1 {
    grid-area: 1 / 1 / 2 / 2; }
.item2 {
    grid-area: 1 / 2 / 2 / 3; }
.item3 {
    grid-area: 1 / 3 / 2 / 4; }
.item4 {
    grid-area: 2 / 1 / 3 / 2; }
.item5 {
    grid-area: 2 / 2 / 3 / 3; }
.item6 {
    grid-area: 2 / 3 / 3 / 4; }
.grid-container {
   
  display: grid;
  grid-auto-columns: 214px;
}

结果如下:

最低0.47元/天 解锁文章
CSSgrid网格布局(秒懂如何实现网格布局)-菜鸟教程
百赢出品,必属精品
04-12 2766
网格是一组相交的水平线和垂直线,它定义了网格的列和行。CSS 提供了一个基于网格的布局系统,带有行和列,可以让我们更轻松地设计网页,而无需使用浮动和定位。网格布局由一个父元素及一个或多个子元素组成。 运行结果:当一个 HTML 元素将 display 属性设置为 grid 或 inline-grid 后,它就变成了一个网格容器,这个元素的所有直系子元素将成为网格元素。 3.网格轨道 我们通过 grid-template-columns 和 grid-template-rows 属性来定义网格中的列
CSS样式之grid 布局
li17835756262的博客
09-18 319
Grid布局即网格布局,是一种新的CSS布局模型,比较擅长将一个页面划分为几个主要区域,以及定义这些区域的大小、位置、层次等关系。一、概念1、网格容器(Grid Container):设置了的父元素,成为一个网格容器,它包含了网格的所有单元格。2、网格项目(Grid Item):直接放置在网格容器内的元素称为网格项目,它们被放置在网格的单元格中。3、网格行(Grid Row):网格容器被划分为水平的行,可以通过属性来设定行的数量和高度。
css grid网格布局(栅格布局图解+代码详细讲解【收藏】
天天打码-16年老码农
07-18 2647
Grid 布局是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以看作是二维布局,也是唯一的二维布局方案,利用grid布局可以很轻松的实现很多的网页布局gird布局很强大,采用网格布局的区域,称为"容器"(container)。容器内部子元素,称为"项目"(item),即container -> item注意:Grid 布局只对项目生效,项目只能是容器的一级子元素,不包含项目的子元素。
前端页面布局之【Grid布局】详解
最新发布
cnzzs的博客
08-16 1516
目录????前言????浏览器支持????Gird简介和基本概念????属性介绍???? 父元素上的属性???? 设置grid布局????设置网格的列数与行数????通过网格单元的名字来布局 grid-template-areas????设置网格轨道的大小????justify-items????align-items????justify-content????align-content????grid...
CSS—— grid布局
mantou_riji的博客
05-14 2956
grid 是一个 CSS 简写属性,可以用来设置以下属性: 显式网格属性 grid-template-rows、grid-template-columns 和 grid-template-areas, 隐式网格属性 grid-auto-rows、grid-auto-columns 和 grid-auto-flow, 间距属性 grid-column-gap 和 grid-row-gap。none:表示不明确的网格,所有的行和其大小都将由grid-auto-rows 属性隐式的指定。
CSS Grid网格布局
m0_65029152的博客
06-26 1050
记录一下前端grid布局,一个很有趣的布局方法;
CSS-grid布局
qq_41587763的博客
08-10 1588
上面写了9个元素,分别给了不同的颜色,根据 grid-template-columns和grid-template-rows或者grid-template-columns来设置他们的大小,这里的特殊就是,如果不给里面各个单元格大小,那么设置的列宽和行高就会去设置成每个单元格的大小,如果给了大小,那么设置的就是每个单元格之前的间距了。这里指的无限大也就是没有父级设置大小。grid布局就是将容器划分为行和列,产生单元格,然后在指定的单元格,可以看作是二维布局,我们一直经常用的flex布局也就可以看作一维布局
CSSgrid布局
一只努力搬砖的打工妹纸
06-30 1530
grid布局
CSS grid 布局
学习笔记
03-25 673
CSS grid 布局 display: grid; grid-template-columns: 20% 60% 20%; grid-template-rows: 20% 20% 20% 20% 20%; grid-gap: 10px 10px;
图解CSS3核心技术与案例实战pdf
05-16
图解CSS3核心技术与案例实战》是一本深入解析CSS3技术的专业书籍,旨在帮助读者理解和掌握CSS3的精髓,并能将其应用到实际项目中。这本书以清晰的图解方式,将复杂的概念和技巧生动地呈现出来,适合初学者和有一定...
图解Css3核心技术和案例源代码
01-31
图解Css3核心技术和案例源代码》是学习CSS3技术的重要参考资料,它包含了书中的所有实例源代码,旨在帮助读者深入理解CSS3的核心概念,并通过实际操作来提升技能。CSS(层叠样式表)是网页设计的重要组成部分,...
图解CSS3核心技术与案例实战
04-02
同时,书中也详细讲解了如何使用Flexbox和Grid布局系统创建复杂的页面结构,这两种布局模型大大简化了网页的布局工作。 颜色和背景是CSS3中的重要部分,书中展示了新的颜色模式、渐变、阴影和背景图像的用法,使...
CSS Grid网格布局知识总结和图解
qq_45001147的博客
06-03 420
一、概念介绍 Grid是一个基于网格的二维布局系统,目的是用来优化用户界面设计。 了解基本概念 1、容器container 2、项目 二、容器的属性 1、grid-template-* 表示需要规划的行和列数: grid-template-columns: repeat(auto-fill,100px); /*****auto-fill,单元格大小固定100px,但容器大小不确定,这个属性就自动会填充 grid-template-columns:1fr minmax(150px,1fr); /*****
Css-Grid布局(强大)
qq_57404736的博客
12-10 2358
Css强大的Grid布局详细讲解使用
CSS 详解grid布局(网格布局)与应用
zzylj的博客
03-21 4011
CSS 详解grid布局(网格布局)与应用
csscss中的 Grid 布局
呆呆狗
12-02 1308
css中的 Grid 布局
CSScss grid 布局
Riptide
05-14 593
css grid布局出来很久了,可以翻译成栅栏布局,或者网格布局,看到了一个很好的应用,所以写下此篇基础教程。比如我们要达到下面这样一个效果要怎么做?图中有16个元素,我们要其自适应宽度,按照我们以前的想法肯定是直接通过media,媒体查询来完成这个,但是代码肯定不会简洁,但是我们通过grid 布局只需要几行代码!  代码长这样:CSS:#container { display: grid; ...
Css布局 Grid布局
qq_54855933的博客
08-01 1112
grid-template-areas 的属性值是一个或多个由空格分隔的字符串,每个字符串代表网格布局中的一行。函数 :minmax(最小值,最大值) 函数允许你同时设置列(或行)的最小值和最大值。会创建两列,第一列长度为1fr,第二列的宽度至少为 100px,且不超过1fr。Grid布局,即网格布局,通过将容器划分为"行"和"列"来创建网格,然后将内容放置在网格的单元格中,咱们可以简单理解为二维布局。定义了网格线与网格项之间的间隙(grid-row-gap 和 grid-column-gap 的简写)。
使用CSS绝对定位制作网页布局详解
"CSS 制作网页 详细步骤 图解" 在网页设计中,CSS(Cascading Style Sheets)是至关重要的技术,它用于控制网页的布局和样式。本教程将详细解析如何使用CSS来制作网页,以下是具体步骤: 1. **理解设计图** 在...
写文章

热门文章

  • element中el-table表头通过header-row-style设置样式 9346
  • 推荐6个开源可视化表单生成器 8595
  • element中el-input限制只输入正整数或保留两位小数 8362
  • mac电脑使用谷歌浏览器,el-upload上传文件点击没反应 5781
  • Git删除某次提交 5555

分类专栏

  • HTML 4篇
  • CSS 13篇
  • CSS常用技巧专题 1篇
  • JavaScript 55篇
  • JavaScript常用技巧专题 8篇
  • ES 3篇
  • canvas 2篇
  • npm 13篇
  • 缓存 3篇
  • JS框架 1篇
  • vue 35篇
  • vue3 7篇
  • uniapp 5篇
  • react 3篇
  • UI框架 3篇
  • element 17篇
  • avue 3篇
  • ant-design-vue 1篇
  • 跨端 2篇
  • 小程序 10篇
  • 工程化 8篇
  • 打包 1篇
  • docker 1篇
  • node 2篇
  • Git 10篇
  • 规范 2篇
  • 设计模式 2篇
  • 业务 4篇
  • 埋点监控 2篇
  • 爬虫 1篇
  • 浏览器 3篇
  • 云存储 2篇
  • 工具 5篇
  • CSDN 3篇

最新评论

  • element中el-form-item设置label-width=‘auto‘报错

    小马甲丫: 文章里有写表情包

  • element中el-form-item设置label-width=‘auto‘报错

    wenkunvip: 楼主如何解决的 ,分享一下。表情包

  • element中el-form-item设置label-width=‘auto‘报错

    小马甲丫: 用js控制呀表情包

  • element中el-form-item设置label-width=‘auto‘报错

    wenkunvip: onMounted(() => { state.isShow = true; nextTick(() => { setTimeout(() => { state.isShow = false; }, 0); }); }); 我也不知道对不对,反正不警告了。

  • windows本地推送代码到Github报错Logon failed, use ctrl+c to cancel basic credential prompt.

    不储备点技术不改名: 有用+1 3Q

最新文章

  • bizcharts中LineChart时间戳使用moment转化出现Invalid Date
  • 我的创作纪念日
  • 使用rrweb悄悄录制用户操作过程
2024年37篇
2023年122篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小马甲丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

天下网标王许昌关键词网站优化排名商丘网站自然优化价格多少消防员网站优化网站标签搜索优化网站优化加盟公司百度网站制作优化工具肇东网站关键字优化网站优化课程海报设计西安专业网站关键词优化推广广州网站seo优化放心的网站优化推广好的网站推广优化一个网站栏目页单一能优化嘛外包网站优化百度权重提升分类网站优化工作网站产品优化用到什么技术鹤壁外贸网站优化哪家不错网站标题怎么做优化网站做优化就找x火9星好棒网站优化今日价格南昌网站优化好做吗网站优化推广外包案例实力强的网站优化推广专业公司吉首网站优化推广山西网站优化课程网站的优化只选j火17星热情规模大的网站优化与推广费用岳麓区优化网站奎屯seo网站优化佛山首页网站关键词优化方法香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化