> CSS网格布局模块已彻底改变了网站的构建方式。它提供了工具,可以允许不棘手的黑客和过去的创造性解决方案进行高级布局。
>
钥匙要点网格结构和项目位置:探索CSS网格的基本特征,包括使用网格结构使用网格结构,使用网格 - 板块柱,网格 - 板板行和网格 - 板置区域。本教程展示了带有间隙属性的间距项目,并将其整理成特定的行和列以精确的布局。
使用CSS网格的响应式设计:强调CSS网格对响应网络设计的适应性,展示了如何使用媒体查询来改变不同屏幕尺寸的网格布局。还讨论了高级技术,例如重叠的网格项目和创建响应式布局,而无需媒体查询,从而强调了CSS网格在现代网络设计中的多功能性。
>开始使用网格布局
>现在,包含元素的所有直接子女将是“网格项目”。首先,它们只会在单列中显示为一堆行,如下演示所示。
。
>请参见笔<span><span>.container</span> { </span> <span>display: grid; </span><span>} </span>css网格基础:显示:sitepoint(@sitepoint)
网格
>
在上面的示例中,我们有一个充当容器的
到目前为止,我们还没有取得太多成就,因为我们将在没有显示的情况下获得相同的结果:网格。
<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>请参阅codepen上的codepen。
进一步阅读:
有关网格 - 板块柱的更多信息。
>了解有关柔性长度(FR)单元的更多信息。>
>如何使用网格的重复()函数。>
有关网格网板行的更多信息。
>如何使用网格的重复()函数。
<span><span>.container</span> { </span> <span>display: grid; </span> <span>gap: 10px; </span><span>} </span>>
将网格项目放在网格上
>我们浏览器的开发人员工具非常方便地了解CSS网格布局。如果我们到目前为止检查代码,我们可以看到定义网格的水平和垂直网格线,如下图所示。
>有五个垂直网格线和四个水平网格线,它们都编号了。我们可以使用这些网格线来指定我们希望如何布置网格项目。
>这告诉
<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>模式是row-start / column-start / row-end / column-end。您可以在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>>请参阅笔
CSS电网基础:使用sitepoint(@sitepoint)
在codepen上放置项目2
>
查看您是否可以预测此结果,然后查看此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>
>按下底部的0.5倍按钮,以查看布局的响应方式(或在Codepen上查看笔,并扩大并缩小视口)。
>我们现在处于一个很好的时刻,看看更改网格布局中元素的显示顺序是多么容易。在上面的示例中,我们的源顺序为
即使不使用命名元素,我们也可以重新排序网格元素。默认情况下,网格项目根据其HTML源订单放置。他们的默认顺序为0。我们可以使用此订单属性来更改元素的视觉布置。订单值越低,出现元素就越早。即使是负整数也可以使用,因此,如果我们的
>如上所示,我们可以将
>
进一步阅读:
网格布局具有无需使用媒体查询即可进行布局反流的工具。但是,我们无法通过以上合作的布局来实现这一目标。它仅适用于更简单的布局,其中每列共享相同的宽度。
>考虑以下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主要设计用于朝单个方向铺设元素(即使这些元素跨线包装)。
网格设计用于在两个方向上布置元素,以便它们水平和垂直对齐。>
>当我们首次发表本文(早在2016年)时,网格对浏览器来说是相当新的,并且支持并不是普遍的。如今,所有主要浏览器都支持网格。仍然会有一些较旧的浏览器不支持它,但是在许多情况下,这些浏览器仍然可以很好地显示内容。一种不错的选择方法是从移动设备的单列布局开始,这可以作为不支持网格布局的浏览器的后备。可以通过媒体查询添加网格样式的浏览器,以支持它们的浏览器 - 将显示在较宽的屏幕上。
您可以查看Caniuse上网格的最新浏览器支持。>
学习网格的资源Tiffany Brown的第三版
>您可以通过设置诸如网格 - 网络之类的属性来定义行和列来定义行和列 - 排,网格 - 板块柱或使用速记属性网格板。
是的,您可以将网格嵌套在网格中,通过使网格项目本身为网格容器来创建复杂的布局。
>
以上是初学者的CSS网格布局指南的详细内容。更多信息请关注PHP中文网其他相关文章!