Skip to content

如何让一个元素水平垂直居中?

弹性盒子

flex

html
<div class="container">
  <div class="box">内容</div>
</div>
css
.container {
  display: flex;
  justify-content: center;
  align-items: center;
}

flex + margin

html
<div class="container">
  <div class="box">内容</div>
</div>
css
.container {
  display: flex;
}

.box {
  margin: auto;
}

网格布局

grid

html
<div class="container">
  <div class="box">内容</div>
</div>
css
.container {
  display: grid;
  align-items: center;
  justify-items: center;
  /* 简写 */
  /* place-items: center; */
}

grid + margin

html
<div class="container">
  <div class="box">内容</div>
</div>
css
.container {
  display: grid;
}

.box {
  margin: auto;
}

position + transform

html
<div class="container">
  <div class="box">内容</div>
</div>
css
.container {
  position: relative;
}

.box {
  position: absolute;
  top: 50%; /* 相对于父容器的顶部偏移50% */
  left: 50%; /* 相对于父容器的左侧偏移50% */
  transform: translate(-50%, -50%); /* 相对于自身宽高的50%偏移 */
}

inline-block

html
<div class="container">
  <span class="inline-box">内容</span>
</div>
css
.container {
  text-align: center; /* 水平居中 */
  height: 50px;
  line-height: 50px; /* 需要明确父容器高度 */
}

table

html
<div class="container">
  <div class="box">内容</div>
</div>
css
.container {
  display: table-cell; /* 将容器设置为表格单元格 */
  text-align: center; /* 水平居中 */
  vertical-align: middle; /* 垂直居中 */
}

基于 MIT 许可发布