居中布局

108 阅读1分钟

完整源码:戳这

水平居中

前提:不定宽度 部分dom如下所示:

<div class="outDiv outterBox1">
  <div class="inDiv innerBox1">就这</div>
</div>

1.text-align + inline-block

.outterBox1 {
  text-align: center;
}
.innerBox1 {
  display: inline-block;
}

2.table + margin

.outterBox2 {
}
.innerBox2 {
  display: table;
  margin: 0 auto;
}

3.absolute + transform

.outterBox3 {
  position: relative;
}
.innerBox3 {
  position: absolute;
  left: 50%;
  /* 相对于自身 */
  transform: translateX(-50%);
}

4.flex + justify-content (推荐)

.outterBox4 {
  display: flex;
  justify-content: center;
  /* 这一句是因为flex默认垂直方向拉伸布局(align-items: stretch) */
  align-items: flex-start;
}
.innerBox4 {
}

页面效果

image.png

具体可参考,源码里的horizontalMiddle.css

垂直居中

前提:不定高度 部分dom如下所示:

<div class="outDiv outterBox1">
  <div class="inDiv innerBox1">就这</div>
</div>

1.table-cell + vertical-align

.outterBox1 {
  display: table-cell;
  vertical-align: middle;
}
.innerBox1 {
}

2.absolute + transform

.outterBox2 {
  position: relative;
}
.innerBox2 {
  position: absolute;
  top: 50%;
  /* 相对于自身 */
  transform: translateY(-50%);
}

3.flex + align-items

.outterBox3 {
  display: flex;
  /* 这一句是因为flex默认垂直方向拉伸布局(align-items: stretch) */
  align-items: center;
}
.innerBox3 {
}

页面效果

image.png

具体可参考,源码里的verticalMiddle.css

水平垂直居中布局

前提:不定宽度和高度 部分dom如下所示:

<div class="outDiv outterBox1">
  <div class="inDiv innerBox1">就这</div>
</div>

1.text-align + inline-block + table-cell + vertical-align

.outterBox1 {
  display: table-cell;
  text-align: center;
  vertical-align: middle;
}
.innerBox1 {
  display: inline-block;
}

2.absolute + transform

.outterBox2 {
  position: relative;
}
.innerBox2 {
  position: absolute;
  top: 50%;
  /* 相对于自身 */
  transform: translate(-50%, -50%);
}

3.flex + justify-content + align-items

.outterBox3 {
  display: flex;
  justify-content: center;
  /* 这一句是因为flex默认垂直方向拉伸布局(align-items: stretch) */
  align-items: center;
}
.innerBox3 {
}

页面效果

image.png

具体可参考,源码里的horizontalAndVertical.css

文中如有错误,欢迎在评论区指正