CSS网格布局(Grid)教程

一、概述

CSS网格布局(Grid)是一套二维的页面布局系统,它的出现将完全颠覆页面布局的传统方式。

首先来介绍几个概念:

想象一个三行三列的布局,网格线就是构成网格所有的线条,三行三列的布局每行就会有4条网格线。 网格轨道就是相邻两条平行的网格线之间的部分。

和flex布局一样,他会有父容器和子项目,在这儿我们称为网格容器和网格项。 接下来,我们从网格容器到网格项的各个基本属性来介绍网格布局。

二、 网格容器

将属性 display 值设为 grid 或 inline-grid 就创建了一个网格容器,所有容器直接子结点自动成为网格项目。

例1:

网格项目按行排列,网格项目占用整个容器的宽度。

例2:

网格项目按行排列,网格项目宽度由自身宽度决定。

三、显示网格

属性grid-template-rows和grid-template-columns

容器指定了网格布局以后,接着就要划分行和列。grid-template-columns属性定义每一列的列宽,grid-template-rows属性定义每一行的行高。

例3:

网格项目1的行高是50px,网格项目2的行高是100px。

因为只定义了两个行高,网格项目3和4的行高取决于其本身的高度。

例4:

类似于行的定义,属性grid-template-columns用于定义列的尺寸。

因为定义中只有三列,所以项目4,5,6排在新的一行; 并因为它们位于第1,2,3列的轨道上,所以其宽度等于定义中第1,2,3列轨道的宽度。

网格项目的第1列,第2列,第3列的宽度分别是 90px, 50px 和 120px 。

四、网格项目跨越行列

网格项目默认都占用一行和一列,但可以使用前一节中定位项目的属性来指定项目跨越多行或多列。

例5:

通过grid-column-start和grid-column-end属性值的设置,使该网格项目跨越多列。

五、justify-content 属性,align-content 属性

justify-content属性是整个内容区域在容器里面的水平位置(左中右),align-content属性是整个内容区域的垂直位置(上中下)。

这两个属性的写法完全相同,都可以取下面这些值。(下面的图都以justify-content属性为例,align-content属性的图完全一样,只是将水平方向改成垂直方向。)

start - 对齐容器的起始边框。

end - 对齐容器的结束边框。

center - 容器内部居中。

stretch - 项目大小没有指定时,拉伸占据整个网格容器。

space-around - 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与容器边框的间隔大一倍。

space-between - 项目与项目的间隔相等,项目与容器边框之间没有间隔。

space-evenly - 项目与项目的间隔相等,项目与容器边框之间也是同样长度的间隔。

六、grid-auto-columns 属性,grid-auto-rows 属性

有时候,一些项目的指定位置,在现有网格的外部。比如网格只有3列,但是某一个项目指定在第5行。这时,浏览器会自动生成多余的网格,以便放置项目。

grid-auto-columns属性和grid-auto-rows属性用来设置,浏览器自动创建的多余网格的列宽和行高。它们的写法与grid-template-columns和grid-template-rows完全相同。如果不指定这两个属性,浏览器完全根据单元格内容的大小,决定新增网格的列宽和行高。


希望我的文章能够对您有所帮助

欢迎大家滴滴我:rgz987

CSS网格布局是一种二维布局系统,它可以让我们更方便地创建复杂的网页布局。下面是一个简单的例子: ```html <div class="container"> <div class="item item-1">1</div> <div class="item item-2">2</div> <div class="item item-3">3</div> <div class="item item-4">4</div> <div class="item item-5">5</div> <div class="item item-6">6</div> </div> ``` ```css .container { display: grid; grid-template-columns: 100px 100px auto; grid-template-rows: 100px 100px auto; grid-gap: 10px; } .item { background-color: #ddd; padding: 20px; font-size: 30px; text-align: center; } ``` 在这个例子中,我们创建了一个包含6个子元素的容器,并使用`display: grid`将其设置为网格布局。然后,我们使用`grid-template-columns`和`grid-template-rows`属性来定义网格的列和行。在这个例子中,我们定义了3列和3行,前两列和前两行的宽度和高度都是100像素,最后一列和最后一行的宽度和高度自适应。我们还使用`grid-gap`属性来定义网格之间的间距。 接下来,我们为每个子元素定义了一个类名,并使用`grid-column`和`grid-row`属性来指定它们在网格中的位置。在这个例子中,我们将第一个子元素放在第1列和第1行,跨越了2列;将第二个子元素放在第3列和第1行;将第三个子元素放在第1列和第3行;将第四个子元素放在第3列和第3行;将第五个子元素放在第2列和第2行,跨越了2行;将第六个子元素放在第2列和第3行。 这样,我们就创建了一个简单的网格布局。当然,CSS网格布局还有很多其他的属性和用法,可以用来创建更复杂的布局。如果您想深入了解CSS网格布局,请参考相关文档和教程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值