实现方案:
text-align
实现水平居中,设置一致的高度(height
)和行高(line-height
)实现对子元素的垂直居中,垂直居中元素设置 vertical-align
以及 line-height
为 initial
实现子元素内部的基准线垂直居中margin
偏移自身宽/高的 50%。或者通过设置上下左右坐标为 0,外边距自适应 auto
实现垂直居中。两种处理手法都需要设置垂直居中元素为标准盒模型。transform + translate
将垂直居中元素自身偏移负 50%,使用标准盒模型justify-content
和 align-items
设置为 center
居中margin
为自适应 auto
即可通过设置父元素容器 text-align
实现水平居中,设置一致的高度(height
)和行高(line-height
)实现对子元素的垂直居中,垂直居中元素设置 vertical-align
以及 line-height
为 initial
实现子元素内部的基准线垂直居中
通过 margin
平移元素整体宽度的一半,使元素水平垂直居中。这里的宽度是指标准盒模型下 content + padding + border
的总和。
margin
方案:居中元素相对于父元素绝对定位于 50%,并使用负 margin
自身宽高的一半,校正过多的偏移量margin
自适应方案:居中元素相对于父元素四个方位的距离设为 0,并使用 margin: auto
自适应相对于父元素容器左边距和上边距坐标偏移 50%,通过计算垂直居中元素宽/高,利用负 margin
偏移自身宽/高的 50%。或者通过设置上下左右坐标为 0,外边距自适应 auto
实现垂直居中。两种处理手法都需要设置垂直居中元素为标准盒模型。
利用 2D 转换,在水平和垂直两个方向都反向平移宽高的一半,从而使元素水平垂直居中。
利用弹性布局,其中 justify-content
用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式;而 align-items
属性定义弹性容器子项在弹性容器的当前行的侧轴(纵轴)方向上的对齐方式。
屏幕上水平垂直居中十分常用,常规的登录及注册页面都需要用到。要保证较好的兼容性,还需要用到表布局。
.outer {display: table;position: absolute;height: 100%;width: 100%;}.middle {display: table-cell;vertical-align: middle;}.inner {margin: 0 auto;width: 400px;}