实现水平垂直居中

171 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天,点击查看活动详情

前言:

成功没有捷径但成长有路径

css必备场景。专注积累,每天记录一个知识点,老概念新理解,重点记录一下

每天梳理一个场景,知识点查漏补缺,充实满足。

正文

背景

水平垂直居中,是前端开发中最常见最基础的应用场景,几乎是面试必问,一般同学都能想出几种方式,今天我们来总结下最常用的几种实现水平垂直居中的方式(居中的内容不限文字,可能是图片或者其他)。

方案

水平垂直居中基本是水平居中方式叠加了垂直居中放置,我们先来分开看下。

实现元素水平垂直居中的方式:

水平居中

  • margin:0 auto 块元素居中
  • 定位 absolute
    • +transform translate(-50%,-50%) 以自己为基准定位,加上调整位置
    • +margin:负值
    • +calc
  • table布局
  • css-table
  • flex布局
    • align-items: center
    • flex + margin:auto
  • grid布局

文本居中

  • text-align:center, height === line-height

行内元素

  • 伪类

垂直居中

  • flex布局 justify-content:center
  • height === line-height 文本居中
  • 定位同上

一种特殊实现

看需求我们可以选择不同的方式实现垂直水平居中,最常用的还是flex,

display:flex;
align-items: center;
justify-content:center;

这里代码介绍另一种最简单的,也是利用flex,不加其他属性的情况下,margin auto在水平垂直方向上自动分配。

image.png

flex + margin:auto

.parent {
  width:300px;
  height:300px;
  border:2px solid red;
  display:flex;
}
.child {
   width:100px;
   height:100px;
   border: 2px solid blue;
   margin:auto;
}

补充

上面代码都是针对块级元素,针对行内元素需要设置display:block,或者使用伪类这种方法

结语

一些比较经典的东西还是值得拿出来讲一讲的,人一直是成长的,每个时间段对同样的东西理解是不一样的,温故而知新,也帮自己理清一下思路。