CSS页面居中

发布时间:2023-05-24

一、水平居中

在实际开发中,我们经常会需要将一个元素水平居中,有如下三种方法可以实现。

1、text-align:center

.parent {
  text-align: center;
}
.child {
  display: inline-block;
}

在父元素中设置text-align:center,在子元素中设置display:inline-block,即可使子元素水平居中。

2、margin:auto

.parent {
  position: relative;
}
.child {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
}

这种方法需要将子元素设置为绝对定位,然后通过将左边距设置为50%,再通过transform属性向左移动自身宽度一半的距离,使子元素水平居中。

3、flex布局

.parent {
  display: flex;
  justify-content: center;
}
.child {
  /* 可以省略 */
}

使用flex布局,将父元素设为flex容器,设置justify-content属性为center即可使子元素水平居中。

二、垂直居中

同样地,我们也需要将一个元素垂直居中,有如下三种方法可以实现。

1、line-height

.parent {
  height: 200px;
  line-height: 200px;
}
.child {
  display: inline-block;
  vertical-align: middle;
}

在父元素中设置heightline-height为相同的值,再将子元素设置为inline-block,然后通过vertical-align属性设置为middle,即可使子元素垂直居中。

2、position+transform

.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

同样也需要将子元素设置为绝对定位,将上边距设置为50%,再通过transform属性向上移动自身高度一半的距离,使子元素垂直居中。

3、flex布局

.parent {
  display: flex;
  justify-content: center;
  align-items: center;
}
.child {
  /* 可以省略 */
}

使用flex布局,将父元素设为flex容器,设置align-items属性为center即可使子元素垂直居中。

三、水平垂直居中

如果想要将一个元素水平垂直居中,可以结合以上方法进行实现。

1、position+transform

.parent {
  position: relative;
}
.child {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

将子元素设置为绝对定位,将左边距和上边距分别设置为50%,再通过transform属性向上和向左移动自身宽高的一半距离,即可使子元素水平垂直居中。

2、flex布局

.parent {
  display: flex;
  justify-content: center;
  align-items: center;
}
.child {
  /* 可以省略 */
}

设置父元素为flex容器,同时将justify-contentalign-items属性都设置为center,即可实现水平垂直居中。