CSS水平垂直居中的几种方法总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CSS⽔平垂直居中的⼏种⽅法总结直接进⼊主题!
⼀、脱离⽂档流元素的居中
⽅法⼀:margin:auto法
CSS代码:
div{
width: 400px;
height: 400px;
position: relative;
border: 1px solid #465468;
}
img{
position: absolute;
margin: auto;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
HTML代码:
<div>
<img src="mm.jpg">
</div>
效果图:
当⼀个元素绝对定位时,它会根据第⼀个不是static定位的祖先元素定位,因此这⾥的img根据外层div定位。

⽅法⼆:负margin法
CSS代码:
.container{
width: 500px;
height: 400px;
border: 2px solid #379;
position: relative;
}
.inner{
width: 480px;
height: 380px;
background-color: #746;
position: absolute;
top: 50%;
left: 50%;
margin-top: -190px; /*height的⼀半*/
margin-left: -240px; /*width的⼀半*/
}
HTML代码:
<div class="container">
<div class="inner"></div>
</div>
效果图:
这⾥,我们⾸先⽤top:50%和left:50%让inner的坐标原点(左上⾓)移动到container的中⼼,然后再利⽤负margin让它往左偏移⾃⾝宽的⼀半,再往上偏移⾃⾝⾼的⼀半,这样inner的中⼼点就跟container的中⼼点对齐了。

⼆、未脱离⽂档流元素的居中
⽅法⼀:table-cell法
CSS代码:
div{
width: 300px;
height: 300px;
border: 3px solid #555;
display: table-cell;
vertical-align: middle;
text-align: center;
}
img{
vertical-align: middle;
}
HTML代码:
<div>
<img src="mm.jpg">
</div>
效果图:
div上⾯的vertical-align: middle是控制垂直⽅向上的居中的,⽽text-align: center是控制⽔平⽅向的。

⼀个有趣的事实是,当我们去掉img的vertical-align: middle之后,是这样的:
还是居中啊!真的居中吗?
我们看到,图⽚往上移了⼀点,在垂直⽅向上已经不居中了。

为什么?我也不知道为什么,如果你知道,可以告诉我吗?
但是如果我们把图⽚换成⽂字:
CSS代码:
div{
border: 3px solid #555;
width: 300px;
height: 200px;
display: table-cell;
vertical-align: middle;
text-align: center;
}
span{
vertical-align: middle;
}
HTML代码:
<div>
<span>这是放在span中的⽂字,通过外层div设置display: table-cell以及vertical-align: middle实现垂直居中。

</span>
</div>
效果图:
当我们把span的vertical-align: middle去掉之后是这样的:
看到差别没?⽂字的⾏间距更⼩了。

如果你在⾃⼰电脑上运⾏代码就会发现,这⼏⾏字是向中间靠了,⽽并没有像图⽚⼀样往上移。

我也在想办法搞清楚这是怎么回事,如果你知道原因,也烦请告诉我。

⽅法⼆:弹性盒⼦法
CSS代码:
.container{
width: 300px;
height: 200px;
border: 3px solid #546461;
display: -webkit-flex;
display: flex;
-webkit-align-items: center;
align-items: center;
-webkit-justify-content: center;
justify-content: center;
}
.inner{
border: 3px solid #458761;
padding: 20px;
}
HTML代码:
<div class="container">
<div class="inner">
我在容器中⽔平垂直居中
</div>
</div>
效果图:
align-items控制垂直⽅向的居中,justify-content控制⽔平⽅向的居中。

这是CSS3的新⽅法,浏览器⽀持情况如下:
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

相关文档
最新文档