共计 1418 个字符,预计需要花费 4 分钟才能阅读完成。
怎么让一个 div 垂直程度居中
代码片段
// HTML
<div class="parent">
<div class="child"></div>
</div>
相对定位
.parent{position:relative;}
// 第一种
.child{
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);
}
// 第二种(须要固定宽高).child{
position:absolute;
width:100px;
height:100px;
top:50%;
left:50%;
margin-left:-50px;
margin-top:-50px;
}
// 第三种(须要固定宽高).child{
position:absolute;
width:100px;
height:100px;
left:0;
top:0;
bottom:0;
right:0;
margin:auto;
}
// 第四中(固定宽高 + transform 变形).child{
position: absolute;
width: 100px;
height: 100px;
left: 50%;
top: 50%;
background: yellow;
transform: translate(-50px, -50px);
}
flex 布局
.parent {
width: 500px;
height: 500px;
background: pink;
display: flex;
align-items: center;
justify-content: center;
}
// 子元素能够固定宽高
.parent. child {
width: 100px;
height: 100px;
background: yellow;
}
// 子元素不设置宽高
.parent. child {background: yellow;}
table-cell
.parent {
width: 500px;
height: 500px;
display: table-cell;
text-align: center;
vertical-align: middle;
background: pink;
}
.parent .child {
display: inline-table;
/*
// 这种写法也能够
display: inline-block;
display: inline; */
width: 100px;
height: 100px;
background: yellow;
}
Grid
.parent {
width: 500px;
height: 500px;
display: grid;
background: pink;
}
.parent .child {
align-self: center;
justify-self: center;
width: 100px;
height: 100px;
background: yellow;
}
Demo
总结
让一个 div 垂直程度居中有两种状况,第一种是元素不固定宽高的,有三种形式
- 应用相对定位加 transform 偏移
- 应用 flex 布局,设置 align-items:center;justify-content:center;
- 应用 grid 布局,设置 align-self:center; justify-self:center;
如果元素有固定宽高,能够应用:
- 相对定位 +transform 偏移
- 相对定位 + 负 margin 值
- 相对定位 +margin:auto
- 不固定宽高的三种形式
参考
前端进阶
正文完
发表至: javascript
2021-06-08