通过 CSS Grid 实现自适应类似 Pinterest 的布局

阅读时长 4 分钟读完

Pinterest 是一个非常流行的图片分享社交网络,在它的主页上,我们可以看到许多图片以瀑布流的方式展现。这种布局效果非常美观,而且能够自适应不同屏幕大小。本文将介绍如何使用 CSS Grid 实现类似 Pinterest 的自适应布局。

瀑布流布局的前置知识

在开始介绍如何使用 CSS Grid 实现瀑布流布局之前,我们需要了解一些前置知识。

首先,我们需要了解什么是瀑布流布局。瀑布流布局是一种图片或者短文本等等多种不同类型的群集,以一种交错的方式显示出来(即有一些物品位于一行中,其他物品位于另一行中)。瀑布流布局通常出现在社交网络站点或者图片分享网站的主页上,通常通过滚动或者分页来展示更多的物品。

其次,我们需要掌握 CSS Grid 布局。CSS Grid 是一种二维网格布局系统,它可以让我们快速而直观地创建复杂的布局。与传统的基于浮动的布局相比,CSS Grid 布局更加先进、灵活且易于使用。

最后,我们需要掌握 JavaScript 的 DOM 操作能力,因为我们需要使用 JavaScript 动态地插入图片和元素。

使用 CSS Grid 实现瀑布流布局

使用 CSS Grid 实现瀑布流布局的方法非常简单。我们可以把瀑布流布局看成是一个两列的网格布局,其中一列的宽度是固定的,另一列的宽度是根据屏幕大小自适应的。

首先,我们可以利用 CSS Grid 的网格功能来创建两列。在我们的示例中,第一列用来放置固定宽度的元素,第二列用来放置自适应宽度的元素。以下是创建两列的 CSS 代码:

接下来,我们需要让第二列自适应。可以利用 CSS Grid 的 auto-fit 和 minmax() 属性来实现。例如,我们可以设置第二列的最小宽度为 300px,最大宽度为整个网格项的最大宽度,然后使用 auto-fit 属性来让它自适应:

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

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

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

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

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

在代码中,我们将 .item 的第一列宽度设置为 1 格,将图片设置为 100% 的宽度。我们通过:nth-child(2n) 选择器将第二列中的元素向右移动一格。在 media 查询中,我们将第二列的宽度设置为 minmax(300px, 1fr),以使它自适应并且最小为 300px。

最后,让我们使用 JavaScript 动态地插入图片和元素:

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

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

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

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

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

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

总结

通过本文的介绍,我们了解了如何使用 CSS Grid 实现类似 Pinterest 的自适应布局。这种布局在社交网络站点或者图片分享网站的主页上非常常见,而且非常美观。除此之外,CSS Grid 这种二维网格布局系统也是一种非常先进、灵活且易于使用的布局方式,它可以让我们快速创建复杂的布局。

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

纠错
反馈