文字的水平居中:
text-align:center;单行文字的垂直居中:
line-height:30px;height:30px;让有宽度的div水平居中:
margin: 0 auto;width:300px;//必须要有宽度,margin:0 auto才能让它居中让绝对定位的div垂直居中:
position:absolute;top:0;bottom:0;margin:auto 0; //垂直方向的auto 发挥的作用width:300px;height:300px;同理,让绝对定位的div水平和垂直方向都居中:
position:absolute;top:0;left: 0;right:0;bottom:0;margin:auto; width:300px;height:300px;已知宽高的容器的水平垂直方向居中:
width: 300px;height:300px;position: absolute;top:50%;left:50%;margin-top: -150px; //自身高度的一半margin-left:-150px;未知宽高的容器的水平垂直方向居中:
width:300px;height:300px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);*注:transform属性,低版本浏览器不兼容,例如IE8
水平垂直居中记得要想到flexbox:
.container{ display: flex; align-items: center; justify-content: center;}.container .div{//whatever}此时.div无论是否已知宽高,都能两个方向居中。
垂直居中(表格布局法)
.container{ display: table;}.container .div{ display: table-cell; vertical-align:middle;} 为什么height=line-height就能垂直居中?拜读了mmdbwb大神的文章:
行高指的是什么?
行高指的是文本行的基线间的距离。
什么是基线?
基线不是文字的下端沿。是英文字母X的下端沿。
文字有顶线,底线,基线和中线,用以确定文字行的位置。
什么是行距?
行高与字体尺寸之间的差。
还要理解一个概念 -- 行内框
行内元素会生成一个行内框。它无法显示出来,但是又确实存在。
在没有其他因素影响的时候,行内框等于内容区域。
> 设定行高可以增加或者减少行内框的高度,即:将行距的值(行高-字体尺寸)除以2,分别加到内容区域的上下两边。这是理解的关键,也就是内容区域的上面和下面均等增加一个距离。可以在一段文字上进行调试看看,发现增加减小line-height时,文字是整体上下缩进的,而非第一行不动,后面的向上靠拢。
行内框具有垂直居中性。即行内框占据的空间按与文字内容公用水平中垂线。(mmdbwb)
关于vertical-align:middle属性,也很神奇,可以好好再拜读下大神的文章。