CSS Grid 如何实现弹性盒子布局?

阅读时长 4 分钟读完

最近几年,Web 前端开发中出现了大量的前端框架,如 Bootstrap、Foundation、Semantic UI 等等。框架为我们提供了众多强大的 CSS 布局工具,但有些时候,这些框架中的工具往往不能完全满足我们的需求。那么我们该如何在不依赖于框架的情况下,自由地进行布局呢?

今天,我们将介绍一种让我们自由地进行布局的 CSS 布局模块——CSS Grid,并且,我们将会探讨如何使用 CSS Grid 来实现弹性盒子布局。

CSS Grid 是什么?

CSS Grid Layout 是一种强大的二维布局系统,可以让我们自由地布置 HTML 元素。通过定义行、列,以及它们的尺寸和间距,我们可以以完全可控的方式创建网格布局。

弹性盒子布局

弹性盒子布局(Flexbox)是另一种流行的 CSS 布局模块,它肩负着在一维上创建弹性元素布局的任务,如垂直或水平方向的布局。由于缺乏二维布局的能力,弹性盒子布局在某些情况下无法满足我们的需求,这时候就应该该考虑使用 CSS Grid 了。

如何使用 CSS Grid 实现弹性盒子布局?

1. 定义网格容器

要使用 CSS Grid 创建一个网格布局,首先需要定义一个网格容器,可以通过 display: grid 来实现。

上面这段代码定义一个包含三列的网格容器,每一列的宽度被设置为 1fr,它们之间的间距是 10px。

2. 在网格容器中放置元素

在我们定义了网格容器之后,我们需要将元素放置在这个容器中。我们可以通过 grid-columngrid-row 来指定元素在网格中所占的位置。

-- -------------------- ---- -------
----- -
  ----------------- -------
  ------ -----
  ---------- -----
  ----------- -------
  -------- -----
-

------ -
  ------------ - - ---- --
-

------ -
  ------------ --
  --------- - - ---- --
-

------ -
  ------------ --
  --------- --
-

------ -
  --------- --
  ------------ --
-

------ -
  ------------ --
  --------- --
-

------ -
  ------------ --
  --------- --
-

上面这段代码定义了一个包含 6 个元素的网格布局,并指定了每个元素在网格中所占的位置。具体来说:

  • item1 占据从第一列开始的 2 列
  • item2 占据第三列,以及从第一行开始的 2 行
  • item3 占据第一列,第二行
  • item4 占据第三行,第一列
  • item5 占据第三行,第二列
  • item6 占据第三行,第三列

生成的布局如下图所示:

容器和元素的其他设置

我们还可以进行许多其他的设置来自定义我们的网格布局。例如,我们可以使用 grid-template-rows 属性自定义行的大小,使用 justify-itemsalign-items 属性为元素设置水平和垂直对齐方式,使用 justify-contentalign-content 属性为整个网格容器设置水平和垂直对齐方式等等。

除此之外,我们还可以使用 Media Query 和 Grid 布局的响应式设计能力,通过修改行和列的定义来适应不同的屏幕尺寸。

总结

CSS Grid Layout 是一种可控的二维布局系统,可以让我们更加灵活自由地布置网页元素。通过定义网格容器,以及每一个元素所占据的位置,我们可以创建各种不同的网格布局,包括弹性盒子布局。掌握了这项技术,我们可以不依赖于框架,自由地进行前端布局设计和开发。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/647ecc5548841e9894e79f65

纠错
反馈