CSS Grid 实战 demo

阅读时长 4 分钟读完

CSS Grid 是一种新的网格布局方式,它可以快速简便地构建复杂的网页布局。相比传统的布局方式,如 float、position 等,CSS Grid 具有更好的可读性、可维护性和灵活性。在这篇文章中,我们将介绍 CSS Grid 的基础知识和实战应用,同时带来一些实用的代码示例。

CSS Grid 的基础知识

CSS Grid 布局由两个主要的部分组成:网格容器和网格项。网格容器是包含整个布局的主要容器,而网格项是网格容器的直接子元素,它们实现了各种布局效果。下面是 CSS Grid 的一些基础术语:

  • 网格容器(Grid Container):包含整个网格布局的容器。
  • 网格线(Grid Line):垂直或水平方向上的线条,它们在网格容器中创建了网格单元格。
  • 网格轨道(Grid Track):两个相邻的网格线之间的空间被称为网格轨道。
  • 网格单元格(Grid Cell):两个相邻的水平和垂直的网格线之间的空间。
  • 网格区域(Grid Area):由四条网格线框定的矩形区域。

下面是一个简单的网格布局示意图:

实战应用

响应式布局

CSS Grid 可以帮助我们轻松地构建响应式布局,从而实现不同设备上的最佳浏览体验。下面的代码演示了如何使用 CSS Grid 创建一个具有响应性的布局:

在这个示例中,我们使用 display: grid 定义了一个网格容器,并使用 grid-template-columns 设定了网格的列数和宽度。repeat(auto-fit, minmax(200px, 1fr)) 使得网格的列数会根据容器的宽度自适应,每个网格的最小宽度为 200px,最大宽度为 1fr(等分剩余空间)。grid-gap 属性定义了网格之间的间隔大小。

自适应头部栏

下面的代码演示了如何使用 CSS Grid 创建一个自适应的头部栏:

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

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

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

在这个示例中,我们使用 display: grid 定义了一个网格容器,并使用 grid-template-columns 设定了三列。中间的列使用 minmax(200px, 1000px) 占据了最小 200px,最大 1000px 的可用空间,并使用 1fr 平分剩余的空间。align-items: center 属性将头部栏垂直居中,padding 属性设置了内边距,background-color 属性设置了背景颜色。

logonav 使用了 grid-column 属性分别占据了第二列,并使用 justify-self: center 属性将它们水平居中。

等高布局

CSS Grid 还可以实现等高布局,让不同网格项的高度相等。下面的代码演示了如何创建一个等高布局:

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

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

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

在这个示例中,我们使用 display: grid 定义了一个网格容器,并使用 grid-template-columns 设定了三列,每列平分剩余的空间。grid-gap 属性定义了网格之间的间隔大小。

网格项使用 display: flexflex-direction: column 将内容垂直排列,并使用 flex: 1 实现等高布局。

总结

CSS Grid 是一种强大的网格布局方式,可以轻松地构建复杂、响应式、等高的网页布局。通过本文的介绍和示例,相信读者们已经领略了其优美的设计与高效的实现方式。希望读者们能够深入学习并应用 CSS Grid 在前端开发中。

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

纠错
反馈