如何在 CSS Grid 中进行对齐与分布

前言

CSS Grid 是介于传统的 float / position 和 flexbox 之间的一个新的布局方案。它可以非常方便地实现对齐和分布,本文将会从这两个方面为大家详细讲解。

对齐

对齐包括水平和垂直两个方向,CSS Grid 为我们提供了以下的属性:

  • align-items:设置交叉轴的对齐方式,类似于 flexbox 的 align-items
  • justify-items:设置主轴的对齐方式,类似于 flexbox 的 justify-items
  • align-content:设置交叉轴多个行之间的对齐方式,类似于 flexbox 的 align-content
  • justify-content:设置主轴多个列(或者说网格区域)之间的对齐方式,类似于 flexbox 的 justify-content

垂直方向对齐

在实现垂直方向的对齐之前,我们需要了解一下 CSS Grid 中行和列的概念。在 Grid 中,我们可以通过 grid-template-rowsgrid-template-columns 来定义行和列。下面的示例中,我们定义了一个包含 3 行 3 列的 Grid 布局:

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

Grid 中默认的行高和列宽是自动计算而来的,也就是说它们的值是根据 Grid 内容的大小和数量自动生成的。

在 Grid 中实现垂直方向的对齐非常简单,我们可以使用 align-itemsalign-content 属性来控制 Grid 的垂直方向对齐方式。下面的例子中,我们将交叉轴对齐方式设置为 center,就可以使 Grid 的所有子元素在垂直方向上居中对齐了:

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

水平方向对齐

在实现水平方向对齐之前,我们需要对 Grid 中子元素的定位方式有所了解。在 Grid 中,子元素可以通过 grid-row-startgrid-row-endgrid-column-startgrid-column-end 四个属性来定义自己的位置。

下面的代码中,我们定义了一个 Grid 容器和 3 个子元素,其中子元素 1 占据了第一列的第一行和第二行,因此它的 grid-row-start 属性设置为 1,grid-row-end 属性设置为 3,grid-column-start 属性设置为 1,grid-column-end 属性设置为 2。

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

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

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

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

在 Grid 中实现水平方向对齐也非常简单。我们可以使用 justify-itemsjustify-content 属性来控制 Grid 的水平方向对齐方式。下面的例子中,我们将主轴对齐方式设置为 center,就可以使 Grid 的所有子元素在水平方向上居中对齐了:

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

分布

分布也包括水平和垂直两个方向,CSS Grid 为我们提供了以下的属性:

  • grid-template-rows:设置每行的高度。
  • grid-template-columns:设置每列的宽度。
  • grid-row-gap:设置行与行之间的间隔。
  • grid-column-gap:设置列与列之间的间隔。

垂直方向分布

实现垂直方向的分布非常简单。我们可以使用 grid-template-rows 来设置每行的高度,grid-row-gap 来设置行与行之间的间隔。下面的例子中,我们将 Grid 的行高设置为 200px、100px 和 300px,行与行之间的间隔设置为 20px,就可以实现垂直方向的分布了:

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

水平方向分布

实现水平方向的分布也非常简单。我们可以使用 grid-template-columns 来设置每列的宽度,grid-column-gap 来设置列与列之间的间隔。下面的例子中,我们将 Grid 的列宽设置为 200px、100px 和 300px,列与列之间的间隔设置为 20px,就可以实现水平方向的分布了:

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

总结

本文主要是介绍了如何在 CSS Grid 中实现对齐和分布的操作,从代码和表现效果上也为大家展示了如何通过这些属性来使用 CSS Grid 布局。通过本文的介绍,相信大家已经掌握了 Grid 中的对齐和分布方法,并可以在实践中灵活运用。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/653f7c347d4982a6eb90d973


猜你喜欢

  • 如何开发无障碍 Chrome 插件?

    随着互联网的发展,无障碍设计越来越重要。在开发 Chrome 插件时,我们也要考虑到如何让插件更加符合无障碍设计的标准。那么,我们该如何来开发无障碍 Chrome 插件呢? 什么是无障碍设计? 无障碍...

    1 年前
  • 如何在 Express.js 中使用 Socket.IO 进行数据通信

    在现代的 Web 应用程序中,客户端与服务器之间实时的数据通信变得越来越常见。Socket.IO 是一种流行的 JavaScript 库,它提供了一种简单的方法来实现实时数据通信。

    1 年前
  • 在 Tailwind CSS 中如何按屏幕分辨率分别设置背景图片

    Tailwind CSS 是一款流行的 CSS 框架,它的设计理念是“低级别的工具箱”,通过预设的 CSS 类来快速开发出现代化的网页应用。在 Tailwind CSS 中,我们可以使用 CSS 类来...

    1 年前
  • Sequelize 中的查询表达式操作符详解

    Sequelize 是一个使用 Node.js 实现的关系型数据库 ORM(Object Relational Mapping) 工具,能够方便地操作 MySQL、PostgreSQL、SQLite和...

    1 年前
  • 开发者指南:使用 Jest 测试 Node.js 应用程序

    在现代 Web 开发中,测试是至关重要的一步。使用测试工具可以减少出现错误的概率并使得开发步骤更加流畅。 Jest 是一个流行的 JavaScript 测试框架,它拥有用户友好的接口和强大的 API。

    1 年前
  • 如何在 Docker 中运行 GUI 应用程序?

    随着 Docker 技术的日益成熟和普及,越来越多的应用程序开始运行在 Docker 容器中。然而,Docker 最初设计是为了运行类似于 Web 服务器这样的命令行应用程序,对于 GUI 应用程序的...

    1 年前
  • ECMAScript 2021:静态方法 replaceAll() 的使用与示例

    前言 ECMAScript 是 JavaScript 的基础,而 JavaScript 又是前端开发的重要一环。在 ECMAScript 2021 中,新增了 replaceAll() 方法,这个方法...

    1 年前
  • Koa+GraphQL 实现 API 接口

    在前端开发中,API 接口的开发和实现是非常重要的一环,它直接影响到应用的用户体验和功能实现。在过去,API 接口的实现需要借助于后端工程师的帮助,以 Node.js 为代表的前端技术的发展,让前端工...

    1 年前
  • Flexbox 实现移动端滑动卡片效果

    卡片式布局在移动端设计中越来越流行,提升用户体验的同时也让页面更加美观。本文将介绍如何利用 Flexbox 实现移动端滑动卡片效果,并提供示例代码供大家参考。 什么是 Flexbox Flexbox ...

    1 年前
  • 如何在 Next.js 中配置 TypeScript

    随着 TypeScript 在前端应用中的普及,越来越多的项目开始采用 TypeScript 来编写代码。在使用 Next.js 开发 SSR 页面时,如果能同时使用 TypeScript,会将代码的...

    1 年前
  • Web Components 和 LitElement:在实现组件时需要知道的内容

    Web Components 和 LitElement:在实现组件时需要知道的内容 Web Components 是一种组件化的 Web 开发方式,它是由 W3C 定义的一组标准。

    1 年前
  • Chai 中 assert 模块的使用示例

    简介 在前端开发中,测试是一项非常关键的工作。而 Chai 是一个非常流行的 JavaScript 测试库,它提供了多个模块来实现不同的测试方式,其中包括 assert 模块。

    1 年前
  • JavaScript 编码技巧:使用 ES10 的 flat() 与 flatMap() 操作数组

    在 JavaScript 中,数组是一种常用的数据类型,对数组的操作是前端开发中的基础之一。ES10 中新增了 flat() 与 flatMap() 方法,让数组的操作更加方便,本文将详细介绍这两个方...

    1 年前
  • 使用 GraphQL 连接处理 SQLAlchemy 连接错误

    在当前的前端领域,GraphQL 成为了一种越来越受欢迎的技术。与 REST API 不同的是,它能够将数据的查询和变异请求都发送到一个端点。另外,GraphQL 还具有它的语法与查询结构,使得前端开...

    1 年前
  • 如何在 LESS 中使用 rem?

    LESS 是一种基于 CSS 的预处理器,通过 LESS 我们可以更加方便地编写 CSS,并且使其更易于维护。在前端开发中,经常会用到 rem 单位,那么如何在 LESS 中使用 rem 呢?本文就为...

    1 年前
  • 如何使用 CSS Reset 实现响应式表格布局?

    前言 在前端开发中,表格是非常常见的一种元素,但是默认的表格样式可能并不符合我们的设计要求,同时也可能存在浏览器兼容性问题。为了解决这些问题,我们可以通过使用 CSS Reset 来重置表格默认样式,...

    1 年前
  • CSS Grid 新特性的展示

    在前端中,CSS Grid 是一个非常重要的特性,它可以方便快捷地实现布局,提供了强大的排版和定位能力。CSS Grid 这个新特性的出现,让前端开发的难度和复杂度降低了很多,也让我们的布局更加灵活和...

    1 年前
  • 无障碍设计在产品设计中的应用

    什么是无障碍设计? 无障碍设计(Accessible Design)是指为了让产品可以被尽可能多的人群所使用而进行的设计。这些人群包括了视力、听力、肢体障碍及认知障碍等,无障碍设计的目的是让所有人都可...

    1 年前
  • ES6 中的模块循环引用问题解决方案

    在 ES6 中,模块化编程是一种非常流行的编程方式。但是,在编写模块代码的过程中,我们经常会遇到模块循环引用的问题。这种问题可能会导致代码的异常行为,甚至会导致代码无法运行。

    1 年前
  • Redux 实战:从零开始搭建 React 应用

    随着前端应用日益复杂,状态管理成为前端开发中的重要问题。Redux 是 React 生态中最为流行的状态管理库之一,它可以帮助我们更好地管理应用的状态。在本文中,我们将从零开始搭建一个 React 应...

    1 年前

相关推荐

    暂无文章