一、position 子元素已知宽度
- 父元素设置为:position: relative;
- 子元素设置为:position: absolute;
要点:子元素距上50%,距左50%,外边距设置为自身宽高的一半
<div class="parent">
<div class="child"></div>
</div>
.parent {
background: #f00;
width: 400px;
height: 400px;
position: relative;
}
.child {
background: #00f;
width: 200px;
height: 100px;
position: absolute;
left: 50%;
top: 50%;
margin: -50px 0 0 -100px;
}
二、position+transform 子元素已知宽度
- 父元素设置为:position: relative;
- 子元素设置为:position: absolute;
要点:子元素添加 transform: translate(-50%,-50%);
<div class="parent">
<div class="child"></div>
</div>
.parent {
background: #f00;
width: 400px;
height: 400px;
position: relative;
}
.child {
background: #00f;
width: 200px;
height: 100px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}
三、flex布局
- 父元素可不设置宽高
- 子元素必须设置宽高
要点:父元素添加 display: flex; justify-content: center; align-items: center;
<div class="parent">
<div class="child"></div>
</div>
.parent {
background: #f00;
width: 400px;
height: 400px;
display: flex;
justify-content: center;
align-items: center;
}
.child {
background: #00f;
width: 200px;
height: 100px;
}
四、table-cell布局
- 外层元素设置为 display: table;
- 中间元素设置为 display: table-cell;
- 内层元素设置为 display: inline-block;
要点:
- 三层元素嵌套
- 中间元素的table-cell相当于表格的td,td为行内元素,所以需要再嵌套一层
- 内嵌元素必须设置 display: inline-block;
- 中间元素table-cell的背景色会覆盖父元素的背景色
<div class="box">
<div class="content">
<div class="inner"></div>
</div>
</div>
.box {
background: #f00;
width: 400px;
height: 400px;
display: table;
}
.content {
background: #00f;
display: table-cell;
vertical-align: middle;
text-align: center;
}
.inner {
background: #000;
display: inline-block;
width: 200px;
height: 100px;
}
网友评论