一、水平居中
1.元素:行内;宽度:不定
.outer{
text-align: center;
}
<div class="outer">
<div class="inner">Hello world</div>
</div>
2.元素:块级;宽度:确定
.inner{
margin: 0 auto;
}
<div class="outer">
<div class="inner">Hello world</div>
</div>
3.元素:块级;宽度:不定
.inner{
display:inline;
text-align: center;
}
<div class="outer">
<div class="inner">Hello world</div>
</div>
4.元素:块级;宽度:不定
.outer{
float: left;
position: relative;
left: 50%;
clear: both;
}
.inner{
position: relative;
left: -50%;
/* 或者right: 50% */
}
<div class="outer">
<div class="inner">Hello world</div>
</div>
5.元素:块级;宽度:不定
.outer{
position: relative;
}
.inner{
left: 50%;
transform: translateX(-50%);
/* 定宽可用:margin-left: (width/2); */
}
<div class="outer">
<div class="inner">Hello world</div>
</div>
6.元素:块级;宽度:确定/不定
.outer{
display: flex;
justify-content: center;
}
<div class="outer">
<div class="inner">Hello world</div>
</div>
二、垂直居中
1.元素:行内;宽度:定高
.inner{
line-height: 200px;
/* 行高设为父元素高度*/
}
<div class="outer" style="height:200px">
<div class="inner">Hello world</div>
</div>
2.元素:不限;宽度:定高
.outer{
position: relative;
}
.inner{
line-height: 100px;
position: absolute;
top: 50%;
margin-top: -50%
}
<div class="outer" style="height:200px">
<div class="inner">Hello world</div>
</div>
3.元素:不限;高度:不限
.outer{
display: flex;
align-items: center;
}
<div class="outer">
<div class="inner">Hello world</div>
</div>
三、水平垂直居中
1.通用
.outer{
display: flex;
align-items: center;
justify-content: center;
}
<div class="outer">
<div class="inner">Hello world</div>
</div>
2.绝对定位居中
.outer{
position: relative;
}
inner{
left: 50%;
top: 50%;
transform: transate(-50%,-50%)
}
<div class="outer">
<div class="inner">Hello world</div>
</div>