总结一下:
1、父高未知,子高未知
(1)margin:auto;
// 定位会失高
.parent{
position:relative;
}
.child{
position:absolute;
margin:auto;
top:0;
left:0;
right:0;
bottom:0;
}
// 或者 这种不失高
.parent{
display:flex;
}
.child{
margin:auto;
}
(2)利用display:table-cell
.parent{
display:table-cell;
vertical-align:middle;
text-align:center;
}
.child{
display:inline-block;
}
(3)利用display:flex;设置垂直水平都居中;
.parent{
display:flex;
justify-content:center;
align-items:center;
}
(4)利用transform
.parent{
position:relative;
}
.child{
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);
}
2、父高未知,子高已知(条件1的所有都可用)
1、定位
.parent{
position:relative;
}
.child{
position:absolute;
top:50%;
left:50%;
margin-top:-50px;
margin-left:-50px;
}
3、父高已知,子高已知(条件1和2的所有都可用)
(1)计算父盒子与子盒子的空间距离(这跟方法一是一个道理);
//计算方法:父盒子高度或者宽度的一半减去子盒子高度或者宽的的一半(200px)。
.child{
margin-top:200px;
margin-left:200px;
}
(2)利用calc计算
.parent{
position:relative;
}
.child{
position:absolute;
top:calc(200px);//(父元素高-子元素高)÷ 2=200px
let:calc(200px);//(父元素宽-子元素宽)÷ 2=200px
}
暂时记录这么多,下次继续更新
注:方法是死的,人是活的;对于不同问题有不同的解决方式