如何用 CSS Grid 实现水平和垂直居中的布局

在前端开发中,对于页面布局的设计,常常需要实现元素的垂直或者水平居中。而传统的实现方式通常需要使用绝对定位或者 JavaScript 来处理,这些方法虽然能够实现相应的效果,但是代码量较多,也不够优雅。

随着 CSS Grid 技术的普及,我们可以使用它轻松实现水平和垂直居中的布局,让我们的代码更简洁优美。

知识储备

在开始学习如何使用 CSS Grid 实现水平和垂直居中之前,我们需要了解以下概念:

  • display: grid:设置一个容器为网格布局模式。
  • grid-template-columnsgrid-template-rows:定义容器的列和行。
  • justify-itemsalign-items:调整单元格在网格中的对齐方式。

同时,为了更好的理解该布局方式的实现原理,建议掌握以下内容:

  • 父元素与子元素的居中方式。
  • 对于元素宽度和高度计算的方法。

实现垂直居中布局

基本方式

单个元素垂直居中通常需要在父元素上设置display: grid,并使该元素垂直对齐于容器。

示例代码:

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

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

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

代码解释:

  • .container 容器采用网格布局模式,并设置了高度为 100vh。
  • margin: auto 改变单元格的尺寸,实现文本的垂直居中

效果演示:

演示垂直居中布局

多元素垂直居中

当需要为多个元素进行垂直居中时,可以把它们包装在一个容器内,再将容器利用 CSS Grid 的特性垂直居中即可。

示例代码:

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

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

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

代码解释:

  • .container 容器采用网格布局模式,并设置了高度为 100vh。
  • align-items: center 垂直居中所有子元素。

效果演示:

演示多元素垂直居中布局

实现水平居中布局

基本方式

单个元素的水平居中需要在父元素上设置display: grid, 并把该元素放置到容器的中心,这样就实现了元素的水平居中。

示例代码:

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

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

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

代码解释:

  • .container 容器采用网格布局模式,并设置了高度为 100vh。
  • justify-self: center 让单元格内部的元素水平居中。

效果演示:

演示单元素水平居中布局

多元素水平居中

当需要为多个元素进行水平居中时,可以把它们包装在一个容器内,再将容器利用 CSS Grid 的特性水平居中即可。

示例代码:

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

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

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

代码解释:

  • .container 容器采用网格布局模式,并设置了高度为 100vh。
  • justify-content: center 水平居中所有子元素。

效果演示:

演示多元素水平居中布局

总结

使用 CSS Grid 实现水平和垂直居中的布局,简洁而优雅。我们只需要掌握一些基础的 CSS 知识,就能够轻松实现这个常用的布局方式。希望本文对您在前端开发中的实际工作有所帮助。

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


猜你喜欢

  • Babel 7 - 好强大

    在现代前端开发中,Babel 的重要性仅次于 JavaScript 语言本身。它是一个 JavaScript 编译器,可以将高版本的 JavaScript 代码转换为低版本的代码,从而实现在不同浏览器...

    1 年前
  • 如何在 Tailwind CSS 中使用 Sass?

    Tailwind CSS 是一个功能丰富、高度可配置的 CSS 框架,它具有高度的可扩展性,开发者能够使用简单的 HTML 类来快速构建出样式,进而快速构建样式风格统一的前端应用程序。

    1 年前
  • 通过 Custom Elements 实现无限滚动组件

    随着移动设备的快速普及和网页应用的日益重要,无限滚动成为了一种非常流行的互联网设计模式,可以减少分页和点击次数,提高用户体验。本文将介绍如何通过 Custom Elements 实现一个无限滚动组件,...

    1 年前
  • 为何在响应式设计中使用尺寸单位像素是重要的

    随着移动设备的普及和屏幕尺寸的多样化,响应式设计已成为无处不在的设计趋势。响应式设计的目标是使网站在不同的浏览器和设备中都能以最佳的方式呈现,提供最佳的用户体验。然而,在设计期间,我们需要考虑到不同设...

    1 年前
  • Hapi 框架实现 WebSocket 客户端实践

    WebSocket 技术可以实现基于浏览器的实时双向通信,这使得前端开发可以更加高效灵活的与后端服务器进行通信。 Hapi 框架是一个流行的 Node.js 框架,它提供了很好的 WebSocket ...

    1 年前
  • ESLint 报错:expecting an assignment or function call and instead saw an expression,应该怎么办?

    在前端开发中,我们经常使用 ESLint 工具来规范代码风格和检查代码质量。在使用 ESLint 进行代码检查的过程中,有时会遇到如下错误信息: --------- -- ---------- -- ...

    1 年前
  • ES10 中新增 Array 的方法实战:Array.flat()、Array.flatMap()、Array.at()

    ES10 中新增 Array 的方法实战:Array.flat()、Array.flatMap()、Array.at() ES10 是 ECMAScript 的最新标准版本,也是 JavaScript...

    1 年前
  • ES6 中的模块化语法详解

    随着前端开发越来越复杂和规模化,模块化成为了不可避免的趋势。在 ES6 中,引入了模块化语法,它使得前端代码的组织更加清晰、可维护性更高。本文将会详细介绍 ES6 中的模块化语法,包括模块的导入和导出...

    1 年前
  • 使用 Serveless 框架构建负载均衡 Web 应用程序

    引言 随着 Web 应用程序越来越复杂,负载均衡成为了一个必要的部分来保证应用程序的可伸缩性和高可用性。而 Serveless 框架则是最近比较火爆的一种技术,其能够帮助开发者轻松构建高效、自适应的负...

    1 年前
  • Docker 容器内部访问宿主机端口教程

    Docker 容器虚拟化技术在前端开发中得到广泛使用。在开发中,往往需要容器内部访问宿主机的端口,比如将本地的代码通过容器内的 Web 服务展示出来。但是,Docker 的网络结构比较复杂,要实现容器...

    1 年前
  • 如何使用 Docker 部署 RESTful API

    Docker 是一种容器化技术,它能够将应用程序和运行环境打包成一个独立的容器,从而方便地进行部署和维护。在前端开发中,我们常常需要部署 RESTful API 服务,那么如何使用 Docker 来实...

    1 年前
  • CSS Reset: 消除浏览器默认样式

    什么是 CSS Reset? 在浏览器中,所有的 HTML 元素都有默认的样式。这些样式不仅仅是不同浏览器之间存在差异,甚至在同一浏览器的不同版本中也会存在差异。 CSS Reset 是一种解决这些差...

    1 年前
  • Promise 如何处理 JSONP 请求

    在前端开发过程中,我们常常需要通过跨域请求数据。其中一种常用的跨域请求方式就是 JSONP(JSON with Padding)。JSONP 是一种跨域请求数据的方法,通过动态创建 script 标签...

    1 年前
  • # Headless CMS 在微信小程序开发中的应用

    Headless CMS 在微信小程序开发中的应用 随着移动互联网的发展,微信小程序逐渐成为人们生活中不可或缺的一部分,而在微信小程序开发中,数据的管理一直是一个非常重要的问题。

    1 年前
  • 如何使用 Chai.js 进行浮点数计算测试

    前言 在前端开发中,我们经常需要进行计算。而浮点数计算是其中一种非常常见的计算方式。然而,由于浮点数计算的精度问题,我们经常会出现意料之外的结果。为了避免这种情况的发生,我们需要使用一些工具来测试浮点...

    1 年前
  • 解决 Web Components 中 CSS 重载的问题

    在 Web Components 中,人们经常会遇到 CSS 重载的问题,这给 Web 组件的开发带来了不小的挑战。本文将深入探讨 CSS 重载问题,并提供一些解决方案和示例代码。

    1 年前
  • ES6 中使用模块化管理 JavaScript 代码

    在前端开发中,我们常常需要对代码进行管理和组织,以便维护和扩展。ES6 中引入了模块化的概念,可以让我们更方便地进行代码管理。 什么是模块化? 模块化是将代码按照功能或者逻辑进行分离,分离出的每个模块...

    1 年前
  • Socket.io 连接中如何解决跨域问题

    Socket.io 连接中如何解决跨域问题 在 Web 开发中,跨域问题一直是一个比较麻烦的问题。在 Socket.io 连接中,也会遇到跨域问题,导致连接失败或者消息发送失败。

    1 年前
  • 实际项目中的 RxJS 使用总结

    RxJS 是一个强大的 JavaScript 库,可以用于函数式反应式编程。在前端开发中,RxJS 可以用于数据处理、异步操作、事件管理等,使得代码变得更加清晰、简洁、可读性强。

    1 年前
  • 使用 ES7 中的 TypedArray 操作二进制数据

    在计算机领域,二进制数据是非常常见的数据类型,如何操作二进制数据一直是一项技术上的挑战。在 JavaScript 中,通过 ES7 中的 TypedArray,我们可以更加方便地进行二进制数据的操作。

    1 年前

相关推荐

    暂无文章