倘若 .parent 的 height 不写,你只必须 padding: 10px 0; 就能将 .child 垂直居中;
倘若 .parent 的 height 写死了,就很难把 .child 居中,以下是垂直居中的办法。
敬告:能不写 height 就千万别写 height。
以下的办法都围绕着该HTML展开
HTML代码
<div class="parent">
<div class="child">
垂直居中
</div>
</div>
1、table自带功能
css
.parent{
border: 1px solid red;
height: 600px;
}
.child{
border: 1px solid green;
}
2、absolute + 负margin
.parent{
height: 600px;
border: 1px solid red;
position: relative;
}
.child{
border: 1px solid green;
width: 300px;
position: absolute;
top: 50%;
left: 50%;
margin-left: -150px;
margin-top: -50px;
}
3、absolute + translate(-50%,-50%)
.parent{
height: 600px;
border: 1px solid red;
position: relative;
}
.child{
border: 1px solid green;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
4、absolute; + margin: auto;
.parent{
height: 600px;
border: 1px solid red;
position: relative;
}
.child{
border: 1px solid green;
position: absolute;
width: 300px;
height: 200px;
margin: auto;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
5、display: flex;
.parent{
height: 600px;
border: 3px solid red;
display: flex;
justify-content: center;
align-items: center;
}
.child{
border: 3px solid green;
width: 300px;
}
6、inline-block+vertical-aligin
必定要设置行高,否则不生效
.parent{
height: 600px;
border: 3px solid red;
text-align:center;
line-height:600px;
}
.child{
border: 3px solid green;
width: 300px;
line-height:100px;
display:inline-block;
vertical-align:middle;
}
7、table-cell
vertical-align 属性设置一个元素的垂直对齐方式。
该属性定义行内元素的基线相针对该元素所在行的基线的垂直对齐。
准许指定负长度值和百分比值。这会使元素降低而不是上升。
在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。
.parent{
border: 1px solid red;
height: 600px;
width:300px;
display: table-cell;
vertical-align: middle;//垂直
text-align:center;//水平
}
.child{
height: 200px;
width:100px;
border: 1px solid black;
display:inline-block;
}
8、grid网格布局
参考grid
.parent{
border: 1px solid red;
height: 600px;
width:30
|