如何使用 CSS Grid 实现多种图片布局

CSS Grid 是一个强大的前端布局工具,它可以让你轻松地创建多种布局,包括复杂的网格系统和图片布局。这篇文章将向您展示如何使用 CSS Grid 实现多种图片布局,并提供一些示例代码。我们将探讨以下内容:

  • Grid 基础知识
  • 使用 Grid 实现基础的图片布局
  • 使用 Grid 实现流式图片布局
  • 使用 Grid 实现定位图片布局
  • 使用 Grid 实现响应式图片布局

Grid 基础知识

在开始之前,我们需要先了解一些基础知识。CSS Grid 提供了两个重要的元素:父元素(grid container)和子元素(grid item)。下面是一些有关 Grid 的定义:

  • Grid Container:一个包含 Grid Items 的父元素。
  • Grid Item:直接子元素,可以放置在一个 Grid Container 中的网格化布局。
  • Grid Line:划分 Grid Area 的线,可以是水平的或垂直的。
  • Grid Track:Grid Line 之间的空间。
  • Grid Area:由四个 Grid Line(也可以是任何数量的 Grid Line)环绕成的矩形区域。
  • Grid Template:定义 Grid 的结构和大小。

使用 Grid 实现基础的图片布局

让我们从最基础的图片布局开始。在这个例子中,我们将使用一组等大小的图片,将它们排列成一个网格。下面是我们的 HTML 和 CSS 代码:

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

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

我们先创建一个 Grid Container,并指定它应该是一个网格布局(display: grid)。我们使用 grid-template-columns 属性来定义每个列的大小。在这个例子中,我们重复 3 次 1 个单位长度的网格轨道(repeat(3, 1fr))。最后,我们指定了列与列之间的间距。

接下来我们定义 .grid-item 类,这个类代表 Grid Container 中的每个子元素。我们设置了一个背景颜色,一个边框和居中对齐的文本。

最后,我们得到了这个简单的布局,如下所示:

使用 Grid 实现流式图片布局

下一步是创建一个流式的图片布局,使我们的图片在不同分辨率下都能适应。我们将使用与上一示例相同的 HTML,但是更新 CSS,如下所示:

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

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

使用 repeat(auto-fill, minmax(200px, 1fr)),我们创建了一个可流式的 Grid Template,其中 Grid Column 的大小将自适应不同的设备屏幕宽度。我们使用 minmax(200px, 1fr) 来定义 Grid Column 的最小和最大大小。这将防止图像过度缩放,同时让我们的布局保持流式。最后,我们指定了列与列之间的间距。

现在,无论我们的屏幕分辨率如何,图像都会自适应,如下图所示:

使用 Grid 实现定位图片布局

第三步是创建一个定位的图片布局,其中每个图片都在一个不同的位置。我们将更新 HTML 和 CSS,如下所示:

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

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

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

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

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

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

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

我们使用相同的 Grid Container,但是这次我们创建了一个不同的 Grid Template。我们还为每个 Grid Item 添加了一个类。

在 CSS 中,我们对每个类应用了不同的定位。例如,.item1 跨越了两个列和两个行,并设置了一个高度,.item2 放置在第 2 列和第 2 行,item3 放置在第 3 列和第 2 行,以此类推。

最终的效果如下所示:

使用 Grid 实现响应式图片布局

最后,我们将创建一个响应式的图片布局,根据屏幕的宽度更改布局,同时让其中的图像自动缩放。下面是我们更新后的 HTML 和 CSS 代码:

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

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

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

CSS 这次非常简单。我们使用重复自适应的 auto-fit 代替 auto-fill,并对列大小使用 minmax。与以前一样,我们添加了一些样式和所需的类。

最后,我们设置图像宽度为 100%,并让高度自动缩放。这将确保图像信息比例适当地保持,同时适应不同的屏幕大小。

这是最终的效果:

结论

CSS Grid 是一个非常强大的工具,可以帮助我们快速创建各种布局。在本文中,我们演示了如何使用 Grid 实现多种图片布局。无论您想创建什么样式的图片布局,都可以使用 Grid 实现。尝试使用 Grid 来扩展您的前端技能,并创造出新的有趣的布局!

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/66fbb4c4447136260160e3e6