Grid 布局:从入门到精通,一篇就够了—— 探索最强大的 CSS 布局系统

Grid 布局:从入门到精通,一篇就够了—— 探索最强大的 CSS 布局系统

前言

 📫 大家好,我是陈三心,热爱技术和分享,欢迎大家交流,一起学习进步!

 🍅 个人主页:陈三心


背景

最近在项目中遇到了这样的一个响应式布局需求:

在不同屏幕宽度下,动态调整卡片内容的列数,并且每列的宽度不能小于 300px,同时要充分利用剩余空间。

最初,我尝试使用 Flex 布局来实现这一需求,但很快发现 Flex 虽然强大,却无法完美应对这种动态列数和固定最小宽度的场景。

正当我为此头疼时,团队中的一位伙伴提到了 CSS Grid 布局。之前对 Gird 布局仅仅局限于了解程度,并没有去深入学习,因为大部分场景使用 Flex 布局就足矣完成。既然 Flex 在该需求场景下显得有些力不从心,于是,我开始研究 Grid 的相关文档,发现其功能远比我想象的要强很多,它不仅让代码更加简洁,还提供了更强大灵活的布局控制能力。最终,通过 Grid 布局完美解决了我的问题。

实现代码其实非常简单:

.wrapper {
  display: grid;
  grid-gap: 10px;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr) ) ;
}

上述代码中的repeat、minmax和fr是什么呢?别着急,看完本篇你将对 Grid 有一个全面的认识。

Grid 布局简介

想象一下,你在设计一个网页布局时,就像在画一张表格。你可以把网页分成很多行和列,形成一个网格系统。Grid 布局就是这样一个强大的工具,它允许你通过定义行和列来创建复杂的网页布局。你可以把内容(比如图片、文字)放到这些网格的任意位置,甚至可以跨越多行或多列。

简单来说,Grid 布局网格布局)就是将一个网页划分成一个一个的小格子,然后你可以自由地把内容放到这些格子里,或者让内容跨越多个格子。它就像是一个灵活的“网格画布”,让你可以轻松地控制网页的布局结构。

Grid 布局的优势

  1. 二维布局Grid 布局是真正的二维布局,可以同时控制行和列。相比于 Flex(主要是一维布局,只能控制行或列),Grid 布局更适合处理复杂的网页布局。

  2. 灵活控制:通过简单的 CSS 属性,可以精确控制每个网格项目的位置和大小。

  3. 代码简洁相比传统的布局方法,Grid 布局几行 CSS 就能实现复杂的布局效果,更加简洁和易于维护。

浏览器兼容性

目前,所有现代浏览器都支持 CSS Grid 布局,包括 Chrome、Firefox、Safari、Edge 等。

根据caniuse,97.21%的用户支持Grid,即 Grid 在现代浏览器中已经非常成熟,可以放心使用。

基本概念

1. 容器和项目

  • 容器:采用网格布局的区域,即为容器。

  • 项目:容器里采用网格定位的直系子元素就是“项目”。

2. 行和列

  • :容器中的水平区域,把容器分成几行。

  • :容器中的垂直区域,把容器分成几列。

3. 单元格和网格线

  • 单元格:行和列交叉形成的小格子,就是“单元格”。

  • 网格线:划分行和列的线就是“网格线”。

想象你在画一个九宫格:

  • 容器就是整个九宫格。

  • 行和列把九宫格分成 3 行 3 列(图中黄色区域)。

  • 单元格就是九宫格里的每一个小格子。

  • 网格线就是划分九宫格的横线和竖线(蓝色区域)。共有4根水平网格线和4根垂直网格线。

你可以把内容(项目)放到任意一个格子里,或者让内容跨越多行或多列。这就是 Grid 布局的核心思想!

在 Grid 布局中,容器属性项目属性是构建网格系统的核心。下面来详细介绍。

容器属性

容器属性是指定义在容器上的属性,用于定义网格的整体结构。

display 属性

display 属性用于将元素定义为网格容器,只需要将其设置为 grid 即可:

.container {
  display: grid;
}

默认情况下,Grid 的列是独占一行的,其宽度随父盒子大小。效果如下:

上述的容器元素是块级元素,但也可以设成行内元素。

  • inline-grid:生成行内网格容器。

.container {
  display: inline-grid;
}

grid-template-columns && grid-template

转载请说明出处内容投诉
CSS教程网 » Grid 布局:从入门到精通,一篇就够了—— 探索最强大的 CSS 布局系统

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买