初学者的CSS网格布局指南
> CSS网格布局模块已彻底改变了网站的构建方式。它提供了工具,可以允许不棘手的黑客和过去的创造性解决方案进行高级布局。
>
钥匙要点-
CSS网格布局的简介:本文提供了对CSS网格作为CSS中强大布局系统的基本理解,并解释了如何将元素转换为行和列的网格框架,以实现结构化内容的放置。它涵盖了将元素变成网格容器及其直接子女的基础知识。
-
-
使用CSS网格的响应式设计:强调CSS网格对响应网络设计的适应性,展示了如何使用媒体查询来改变不同屏幕尺寸的网格布局。还讨论了高级技术,例如重叠的网格项目和创建响应式布局,而无需媒体查询,从而强调了CSS网格在现代网络设计中的多功能性。
> -
开始使用网格布局
网格是我们可以放置内容的列和行的框架。 (有点像桌子布局,但在类固醇上!)
启动网格就像这样做一样简单:
>>现在,包含元素的所有直接子女将是“网格项目”。首先,它们只会在单列中显示为一堆行,如下演示所示。
。
>请参见笔<span><span>.container</span> { </span> <span>display: grid; </span><span>} </span>
网格
>
在上面的示例中,我们有一个充当容器的
到目前为止,我们还没有取得太多成就,因为我们将在没有显示的情况下获得相同的结果:网格。
<span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><header</span>></span>header<span><span></header</span>></span> </span> <span><span><span><aside</span>></span>aside<span><span></aside</span>></span> </span> <span><span><span><main</span>></span>main<span><span></main</span>></span> </span> <span><span><span><footer</span>></span>footer<span><span></footer</span>></span> </span><span><span><span></div</span>></span> </span>
在上面的演示中,容器以视口为中心。阅读更多有关用网格的核心元素的更多信息。
- >在网格项目之间设置差距
- 让我们第一个空间与差距属性分开一点:
<span><span>.container</span> { </span> <span>display: grid; </span><span>} </span>
请参阅codepen上的sitepoint(@sitepoint)
gap bapen。
差距属性在不久将看到的那样,垂直和水平的元素之间插入元素之间的空间。 (如果需要的话,我们可以设置不同的水平和垂直间隙。)
进一步阅读:
>阅读有关差距属性的更多信息。
- 设置网格列
>带有网格 - 板块柱,我们指定的是,我们需要四列,每个列的宽度为1FR,或一小部分可用空间。 (我们可以使用非常方便的重复()函数来代替1FR 1FR 1FR 1FR 1FR 1FR。
现在,我们的网格项目已在一排中布置,如下所示。<span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><header</span>></span>header<span><span></header</span>></span> </span> <span><span><span><aside</span>></span>aside<span><span></aside</span>></span> </span> <span><span><span><main</span>></span>main<span><span></main</span>></span> </span> <span><span><span><footer</span>></span>footer<span><span></footer</span>></span> </span><span><span><span></div</span>></span> </span>
进一步阅读:
有关网格 - 板块柱的更多信息。
>了解有关柔性长度(FR)单元的更多信息。>
>如何使用网格的重复()函数。>
- >将网格项目组织成行和列
- > 现在,让我们将我们的网格项目组织成行和列,因为我们可能会在标准网页布局中看到它们。
- 首先,我们将用网格 - 板行属性指定三行:
- 如果我们将该行添加到上面的笔中,那么还没有发生太多事情,因为我们尚未指定我们如何希望我们的网格项目适合这些行和列。 (同样,请注意,自动自动自动可以使用重复()函数写为重复(3,auto)。)
进一步阅读:
有关网格网板行的更多信息。
>如何使用网格的重复()函数。
<span><span>.container</span> { </span> <span>display: grid; </span> <span>gap: 10px; </span><span>} </span>
将网格项目放在网格上
>我们浏览器的开发人员工具非常方便地了解CSS网格布局。如果我们到目前为止检查代码,我们可以看到定义网格的水平和垂直网格线,如下图所示。
- 了解有关网格线的更多信息。
- 网格线编号的方向受我们的布局写作模式的影响。 了解有关网格列的更多信息。
- 阅读网格规范中的跨度关键字。
- >
- >使用命名网格区域放置网格项目
- >以一种简单而直观的方式,网格布局的最有趣和最“设计师友好”的功能之一就是能够命名网格区域(即网格中的一个或多个单元格),然后使用这些名称来布置我们的网格物品。它是这样的工作:
- >我们通常希望在小屏幕上使用不同的布局,例如将我们的网格元素堆叠在单列中。一个简单的方法是通过媒体查询重新排序我们的网格区域:
- 我们现在只指定了一个列,并在该列中设置了元素的顺序。
- 在MDN上说明的订单属性,包括有关可访问性问题的部分。
- >无媒体查询的响应式网格布局
- >阅读有关自动拟合关键字的更多信息。
- >阅读有关使用min()函数使用minmax()函数的更多信息。 >
- 总结
- 本文旨在作为CSS网格布局可以做的事情的基本介绍。希望它将为进一步的学习和发现提供跳板。而且有一个
- 。 要进行更深入的网格和Flexbox比较,请查看Flexbox或CSS网格?如何做出有意义的布局决策。
-
浏览器支持网格
>当我们首次发表本文(早在2016年)时,网格对浏览器来说是相当新的,并且支持并不是普遍的。如今,所有主要浏览器都支持网格。仍然会有一些较旧的浏览器不支持它,但是在许多情况下,这些浏览器仍然可以很好地显示内容。一种不错的选择方法是从移动设备的单列布局开始,这可以作为不支持网格布局的浏览器的后备。可以通过媒体查询添加网格样式的浏览器,以支持它们的浏览器 - 将显示在较宽的屏幕上。
您可以查看Caniuse上网格的最新浏览器支持。>
学习网格的资源- CSS Master,第三版,是CSS的一个很好的介绍,并在如何使用网格和其他布局方法的深度指导下进行了深入的指导。> MDN网格参考。
- 雷切尔·安德鲁(Rachel Andrew)的示例网站。 (实际上,雷切尔·安德鲁(Rachel Andrew)有许多令人难以置信的文章,教程,视频,甚至还有一本关于网格布局的书,并且是其中最重要的专家。谷歌搜索“ Rachel Andrew Grid”将为学习网格带来大量的材料。) > Jen Simmons的LATOUT LAND YOUTUBE系列。 (Jen是另一个值得谷歌搜索的名字。)
- > 凯文·鲍威尔(Kevin Powell)在YouTube上介绍了许多值得一看的奇妙的网格教程。
- > CSS-Tricks为CSS网格提供了完整的指南,这是一个非常方便的资源。 关于CSS网格布局的常见问题
- 什么是CSS网格布局?
>
>如何在网页上启用CSS网格? 启用CSS网格,您可以使用显示:网格; CSS代码中的属性。这将使所选的容器成为网格容器。>
CSS网格的主要组件是什么?> CSS网格的主要组件是网格容器和网格项目。使用显示器来定义容器:网格;属性,这些项目是放置在容器内的元素。>
>如何在CSS网格中定义行和列?>您可以通过设置诸如网格 - 网络之类的属性来定义行和列来定义行和列 - 排,网格 - 板块柱或使用速记属性网格板。
>我可以在CSS网格中具有不同的列宽度和行高度吗?通过在网格模板定义中使用不同的值,例如固定长度,百分比或用于柔性尺寸的FR单元。
我可以在网格中嵌套网格吗?
是的,您可以将网格嵌套在网格中,通过使网格项目本身为网格容器来创建复杂的布局。
我可以使网格适应不同的屏幕尺寸吗?您可以使用媒体查询,百分比或相对单元将网格布局调整到不同的屏幕尺寸和设备中。>
>有五个垂直网格线和四个水平网格线,它们都编号了。我们可以使用这些网格线来指定我们希望如何布置网格项目。
>这告诉
<span><span>.container</span> { </span> <span>display: grid; </span><span>} </span>
>
这里唯一的区别是我们将设置为位于第3和第4行之间。
现在,让我们定位<span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><header</span>></span>header<span><span></header</span>></span> </span> <span><span><span><aside</span>></span>aside<span><span></aside</span>></span> </span> <span><span><span><main</span>></span>main<span><span></main</span>></span> </span> <span><span><span><footer</span>></span>footer<span><span></footer</span>></span> </span><span><span><span></div</span>></span> </span>
结果显示在下面的笔中。
>请参阅笔css网格基础:通过sitepoint(@sitepoint)
在codepen上放置编号行的项目。<span><span>.container</span> { </span> <span>display: grid; </span> <span>gap: 10px; </span><span>} </span>
>现在,我们有一个灵活且响应的布局,而没有黑客的浮标,溢出和过去的其他噩梦。如果我们将内容添加到网格项目中,它们将扩展以包含该内容,并且并排列将始终具有相等的高度。 (对于那些在Noughties中与CSS合作的人,实现同等高度的专栏是一场噩梦!)
>如果您再次查看上图,您会发现,沿底部,垂直线也被负数命名。每个网格线都有一个正数和负数。这有很多用途,例如当有很多网格线路时,我们不一定知道会有多少。我们可以将我们的
在上面的笔中尝试这些变化。
进一步阅读:
放置网格项目
>我们已经看到了如何使用编号的网格线在网格上组织元素。但是,我们还可以为我们的某些或全部网格线命名并引用这些线条 - 这可以更直观,并使我们免于计算网格线。>让我们更新我们的布局以包括一些命名行:
在上面的代码中,我们仅命名了三条垂直网格线。这些名称在我们的列宽度旁边的方括号中移动,代表我们的列线。
<span><span>.container</span> { </span> <span>display: grid; </span><span>} </span>
>
我们可以在下面的演示中看到此代码。
><span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><header</span>></span>header<span><span></header</span>></span> </span> <span><span><span><aside</span>></span>aside<span><span></aside</span>></span> </span> <span><span><span><main</span>></span>main<span><span></main</span>></span> </span> <span><span><span><footer</span>></span>footer<span><span></footer</span>></span> </span><span><span><span></div</span>></span> </span>
css网格基础:通过sitepoint(@sitepoint)
在codepen上放置命名行的项目
>了解有关命名网格线的更多信息。
>在网格规范中阅读有关命名线的信息。
>使用网格 - 板截面,我们绘制了一个简单的文本网格,指定了我们希望如何布置元素。现在,我们只需要将这些区域名称应用于我们的元素:
<span><span>.container</span> { </span> <span>display: grid; </span> <span>gap: 10px; </span><span>} </span>
我们可以在下面的笔中看到这一点。
<span><span>.container</span> { </span> <span>display: grid; </span> <span>gap: 10px; </span> <span>grid-template-columns: 1fr 1fr 1fr 1fr; </span><span>} </span>
css网格基础:使用sitepoint(@sitepoint)
在codepen上使用名称区域的项目。
这个代码比我们之前的代码要简单得多,无论是使用编号还是命名行。使用这样的命名网格区域几乎是令人尴尬的简单 - 例如使用Wysiwyg编辑器而不是编写真实的代码。但是请放心,这不是作弊!这只是超级酷。
使用线号并带有网格区域的命名行
>值得注意的是,我们还可以使用行号和/或命名线来定义网格区域。例如,我们可以做类似的事情,而不是使用网格 - 板截面属性:
<span><span>.container</span> { </span> <span>display: grid; </span><span>} </span>
上查看此演示。就我个人而言,我发现很难记住这种行和列的模式,但是网格的伟大是有很多方法可以做同样的事情。>
更改网格项目的布局
在过去的几天中,如果我们决定在某个时候更改页面元素的布局,则可能会导致许多代码重构。例如,如果我们想将元素扩展到布局的末尾怎么办?对于网格区域,这非常容易。我们可以做到这一点:
>我们刚刚从页脚上删除了一个网格单元,并将其分配给了一边,从而导致了我们在下面的笔中看到的。
<span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><header</span>></span>header<span><span></header</span>></span> </span> <span><span><span><aside</span>></span>aside<span><span></aside</span>></span> </span> <span><span><span><main</span>></span>main<span><span></main</span>></span> </span> <span><span><span><footer</span>></span>footer<span><span></footer</span>></span> </span><span><span><span></div</span>></span> </span>
CSS电网基础:使用sitepoint(@sitepoint)
在codepen上放置项目2
>
查看您是否可以预测此结果,然后查看此Codepen演示。进一步阅读:
<span><span>.container</span> { </span> <span>display: grid; </span> <span>gap: 10px; </span><span>} </span>
了解有关网格板序列的更多信息。>
了解有关网格区域的更多信息。
- 使用带有网格布局的媒体查询
>请参阅笔
css网格基础:在codepen上使用sitepoint(@sitepoint)使用媒体查询。
><span><span>.container</span> { </span> <span>display: grid; </span> <span>gap: 10px; </span> <span>grid-template-columns: 1fr 1fr 1fr 1fr; </span><span>} </span>
>按下底部的0.5倍按钮,以查看布局的响应方式(或在Codepen上查看笔,并扩大并缩小视口)。
更改网格项目的显示顺序
>我们现在处于一个很好的时刻,看看更改网格布局中元素的显示顺序是多么容易。在上面的示例中,我们的源顺序为
即使不使用命名元素,我们也可以重新排序网格元素。默认情况下,网格项目根据其HTML源订单放置。他们的默认顺序为0。我们可以使用此订单属性来更改元素的视觉布置。订单值越低,出现元素就越早。即使是负整数也可以使用,因此,如果我们的
>如上所示,我们可以将
>
进一步阅读:
- 订单属性的官方规范。
>我们在上面看到,我们可以使布局响应不同的屏幕尺寸。首先,通过将列宽度设置为诸如FR之类的柔性单元,布局可以根据需要生长和收缩。其次,我们可以使用媒体查询在某些断点处重新组织布局。
>网格布局具有无需使用媒体查询即可进行布局反流的工具。但是,我们无法通过以上合作的布局来实现这一目标。它仅适用于更简单的布局,其中每列共享相同的宽度。
>考虑以下html:
让我们在宽屏幕上并排坐在这些divs上,然后堆放在小屏幕上:
<span><span>.container</span> { </span> <span>display: grid; </span><span>} </span>
>您可以在下面的笔中看到结果。
<span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><header</span>></span>header<span><span></header</span>></span> </span> <span><span><span><aside</span>></span>aside<span><span></aside</span>></span> </span> <span><span><span><main</span>></span>main<span><span></main</span>></span> </span> <span><span><span><footer</span>></span>footer<span><span></footer</span>></span> </span><span><span><span></div</span>></span> </span>
请参阅codepen上的sitepoint(@sitepoint)
的响应式网格基础:codepen。
>代码更为高级,我们在如何使用CSS GRID重复()函数方面对其进行了详细说明。在此处显示它的主要目的是让网格布局的可能性。
>进一步阅读:
网格中的重叠元素
>创建网格布局后,我们不仅可以将每个网格项目分配给其自己的单独的网格区域。我们可以轻松地设置网格项目以部分或完整分享相同的网格区域。这使我们能够创建美丽,创意的布局 - 具有重叠的元素,而没有任何棘手的代码。
>让我们创建一个包含图像的简单网格和部分涵盖图像的文本。这是html:
<span><span>.container</span> { </span> <span>display: grid; </span><span>} </span>
该结果显示在以下Codepen演示中。
<span><span><span><div</span> class<span>="container"</span>></span> </span> <span><span><span><header</span>></span>header<span><span></header</span>></span> </span> <span><span><span><aside</span>></span>aside<span><span></aside</span>></span> </span> <span><span><span><main</span>></span>main<span><span></main</span>></span> </span> <span><span><span><footer</span>></span>footer<span><span></footer</span>></span> </span><span><span><span></div</span>></span> </span>
请参阅pen
css网格基础:sitepoint(@sitepoint)上的分层网格元素。
div出现在图像上方,仅仅是因为它按照源顺序遵循图像。我们可以通过应用z索引来更改另一个元素在另一个元素上出现。例如,尝试将z索引2的z索引设置为上方的图像;现在它将涵盖Div。 进一步阅读:
要了解图像在上面的演示中的定位,请查看如何使用CSS对象拟合和对象位置。
>
了解有关Z-Index属性的更多信息。- >
您可以了解网格。>
网格与Flexbox一个永恒的问题是我们是否应该使用网格或flexbox。的确,这两个布局工具可以做的事情之间存在一些重叠。通常,在有重叠的地方,值得进行一些测试以查看哪种特定情况下具有更好的工具包。>
作为一般规则,请记住这一点:>
Flexbox主要设计用于朝单个方向铺设元素(即使这些元素跨线包装)。
网格设计用于在两个方向上布置元素,以便它们水平和垂直对齐。>
- 出于这个原因,网格通常是整页布局的更好选择,而Flexbox则更好地用于布置菜单。
以上是初学者的CSS网格布局指南的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

您是否曾经在项目上需要一个倒计时计时器?对于这样的东西,可以自然访问插件,但实际上更多

格子呢是一块图案布,通常与苏格兰有关,尤其是他们时尚的苏格兰语。在Tartanify.com上,我们收集了5,000多个格子呢
