一,定位子绝父相,然后子元素定位的上下左右为0,外边距margin居中显示
<style>
.big_box{
width:500px;
height:500px;
border:3px solid #f00;
position:relative;
}
.small_box{
width:100px;
height:100px;
position:absolute;
top:0;
right:0;
bottom:0;
left:0;
margin:auto;
}
</style>
<div class="big_box">
<div class="small_box"></div>
</div>
二,定位子绝父相,然后子元素定位的上,左设置50%,然后外边距设置向左,向上往回走子元素的50%
<style>
.big_box{
width:500px;
height:500px;
border:3px solid #f00;
position:relative;
}
.small_box{
width:100px;
height:100px;
position:absolute;
top:50%;
left:50%;
margin-top:-50px;
margin-left:-50px
}
</style>
<div class="big_box">
<div class="small_box"></div>
</div>
三.定位子绝父相,然后子元素定位的上,左设置50%,然后子元素使用transform属性平移自己宽高的50%
<style>
.big_box{
width:500px;
height:500px;
border:3px solid #f00;
position:relative;
}
.small_box{
width:100px;
height:100px;
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%)
}
</style>
<div class="big_box">
<div class="small_box"></div>
</div>
四.将小div转出行内块元素
- 给小div后面,新增一个span标签,给小盒子设置vertical-align:middle;
- 给打盒子设置line-height为大盒子高度(垂直居中),text-align:center;(文本水平居中)
<style>
.big_box{
width: 500px;
height: 500px;
border: 1px solid #f00;
text-align: center;
line-height: 500px;
}
.small_box{
width: 100px;
height: 100px;
background-color: #00f;
display: inline-block;
vertical-align: middle;
}
</style>
<div class="big_box">
<div class="small_box"></div>
</div>
五,弹性盒(适用于手机端口,pc端设置的话,有可能出现bug)
<style>
.big_box{
display:flex;
justify-content:center;
align-items:center;
}
</style>
<div class="big_box">
<div class="small_box"></div>
</div>
六,使用网络布局
<style>
.big_box{
width:300px;
height:300px;
border:1px solid #000;
display:grid;
grid-template-rows:100px 100px 100px;
grid-template-colums:100px 100px 100px;
grid-template-areas:". . .",". a .",". . ."
}
.small_box{
width:100px;
height:100px;
background-color:#f00;
grid-area:a;
}
</style>
<div class="big_box">
<div class="small_box"></div>
</div>