水平居中
- margin:0 auto
- text-align:conter
- flex布局;justify-content:conter
垂直居中
- 设置行高line-height,限于单行的行内元素
- 添加伪元素,:before,:after,限于多行的行内元素
vertical-align: middle,限于所有元素的相互垂直居中,针对行内元素
需要设置display:inline-block
所以需要设置:before一个高度为100% ,height:100%;
#div:: before{
content: '';
height: 100%;
width: 0px;
display: inline-block;
vertical-align: middle;
}
display:table-cell
然后再设置vertical-align:middle
display:flex
align-items:conter
justify-content:conter
margin-top:calc(50% + 高度的一半);
margin-left:calc(50% -宽度的一半);
需要设置position: relative;不同浏览器的transform前缀不一样。
{
position: relative;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
-ms-transform: translate(-50%,-50%);
-moz-transform: translate(-50%,-50%);
-o-transform: translate(-50%,-50%);
transform: translate(-50%, -50%);
}
父元素必须要position: relative;
子元素position: absolute;
然后上下左右都为0,margin:auto
{
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
margin: auto;
}