CSS Grid 布局:如何使用 justify-items 和 align-items 属性?

阅读时长 8 分钟读完

前言

在 CSS Grid 布局中,我们可以使用 grid-template-rowsgrid-template-columns 属性来定义网格列和行。同时我们也可以使用 grid-template-areas 来定义网格的布局。然而,这些属性和方法仅仅是定义了网格结构,但我们需要进一步将网格内的内容进行布局。在这篇文章中,我们将会介绍如何使用 CSS Grid 布局中的 justify-itemsalign-items 属性来控制网格内部的内容布局。

justify-items 属性

justify-items 属性用于控制网格内的子元素在水平方向上的位置。默认情况下,每个子元素都是水平居中显示的。该属性可以取以下几个值:

  • start:子元素紧贴着父容器的左边缘
  • end:子元素紧贴着父容器的右边缘
  • center:子元素水平居中于父容器内
  • stretch(默认值):子元素被拉伸以占据整个网格列

以下是一个简单的示例:

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

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

在这个例子中,父容器 .container 是一个 3 x 3 的网格,每个单元格都是 100 像素宽高。我们使用 justify-items: center 属性将所有单元格水平居中。结果如下图所示:

如果我们将 justify-items 属性改为 start,则子元素将紧贴着父容器的左边缘:

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

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

同理,当我们将 justify-items 属性设置为 end 时,子元素将紧贴着父容器的右边缘:

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

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

当我们将 justify-items 属性设置为 stretch 时,子元素将被拉伸以占据整个网格列:

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

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

align-items 属性

align-items 属性用于控制网格内的子元素在垂直方向上的位置。默认情况下,每个子元素都是垂直居中显示的。该属性可以取以下几个值:

  • start:子元素紧贴着父容器的顶部
  • end:子元素紧贴着父容器的底部
  • center:子元素垂直居中于父容器内
  • stretch(默认值):子元素被拉伸以占据整个网格行

以下是一个简单的示例:

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

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

在这个例子中,我们使用 align-items: center 属性将所有单元格垂直居中。结果如下图所示:

如果我们将 align-items 属性改为 start,则子元素将紧贴着父容器的顶部:

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

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

同理,当我们将 align-items 属性设置为 end 时,子元素将紧贴着父容器的底部:

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

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

当我们将 align-items 属性设置为 stretch 时,子元素将被拉伸以占据整个网格行:

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

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

总结

本文介绍了 CSS Grid 布局中的 justify-itemsalign-items 属性,这两个属性可以用来控制网格内子元素的水平和垂直位置。这两个属性是轻松实现网格布局的内部对齐的关键之一,同时也是开发者必须掌握的重要知识点。希望这篇文章能够帮助读者更好地理解和掌握 CSS Grid 布局。

完整代码请参考以下链接:https://codepen.io/akira-cn/pen/xxdQmJy

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

纠错
反馈