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