1.inline-block + text-align + table-cell + vertical-align
<div class="parent">
<div class="child">Demo</div>
</div>
<style>
.parent {
text-align: center;
display: table-cell;
vertical-align: middle;
border: 1px solid #1B6C8E;
}
.child {
width:200px;
display: inline-block;
border: 1px solid red;
}
</style>
兼容性较好
2.absolute + transform
<style>
.parent {
position: relative;
}
.child {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
</style>
由于transform属性 兼容性较差
优点:绝对定位脱离文档流,不会对后续元素的布局造成影响
3.flex + justify-content + align-items 弹性盒子
<div class="parent">
<div class="child">Demo</div>
</div>
<style>
.parent {
display: flex;
justify-content: center;
align-items: center;
}
</style>
只需设置父节点属性,无需设置子元素
4.top+left+bottom+right+margin:auto
.parent {
position:relative;
}
.child {
position:absolute;
top:0;
left: 0;
bottom: 0;
right: 0;
margin:auto;
}
5.line-height
.parent{
line-height:300px;
text-align:center;
}
.child{
display:inline-block;
vertical-align:middle;
}
缺点:line-height:有点偏向固定高度 不属于可变的高度居中
6.
.parent{
display:flex;
}
.child{
margin:auto;
}
缺点:只能根据内容的宽度居中 当固定宽度时,便失去作用
7.display:box
.parent{
display:box;
display: -webkit-box;
border:1px solid red;
width:500px;
height:500px;
}
.child{
margin:auto;
border:1px solid yellow;
}
元素水平居中