元素居中在开发、面试中都会碰到,本文从以下两个层面来汇总元素居中的办法
- 居中元素 固定宽高
- 居中元素 不定宽高
一、固定宽高
ps: 元素 child
固定宽高尺寸如下
css
child: {width: 200px; height: 200px;}
1.1、absolute + 负 margin
css
.parent{
position: relative;
}
.child{
position: absolute;
top: 50%;
left: 50%;
margin-top: -100px;
margin-left: -100px;
}
1.2、absolute + margin auto
css
.parent{
position: relative;
}
.child{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
}
1.3、absolute + calc
css
.parent{
position: relative;
}
.child{
position: absolute;
top: calc(100% - 50px);
left: calc(100% - 50px);
}
二、不固定宽高
2.1、absolute + transform
css
.parent{
position: relative;
}
.child{
border: 1px solid green;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
2.2、lineheight
css
.parent{
line-height: 300px;
text-align: center;
font-size: 0;
}
.child{
display: inline-block;
vertical-align: center;
line-height: initial;
text-align: left; /* 修复文字 */
}
2.3、table 标签
html
<table>
<tbody>
<tr>
<td class="parent">
<div class="child">text</div>
</td>
</tr>
</tbody>
</table>
<style>
.parent{
text-align: center;
}
.child{
display: inline-block;
}
</style>
2.4、css-table
css
.parent{
display: table-cell;
text-align: center;
vertical-align: middle;
}
.child{
display: inline-block;
}
2.5、flex
css
.parent{
display: flex;
align-items: center;
justify-content: center;
}
2.6、grid
css
.parent{
display: grid;
}
.child{
align-self: center;
justify-self: center;
/* 或
* margin: auto;
*/
}
三、总结推荐
- 无兼容性要求,推荐使用
flex
实现居中