为什么把line-height设置为容器div的高度就能使文字垂直居中?

如题所述

line-height呢,你可以理解为每行文字所占的高度。
比如说,有一行20px大小的文字,如果设置为line-height:50px,那就是说,这行文字的高度会占50px。
显然,每个字的大小只有20px,那怎么边呢?于是呢,浏览器就把多出来的30px(50px-20px)在这行文字的上面加上了15px,下面加上了15px。
这样的话,那文字就在这50px的空间内是居中的了(这个就是浏览器规定的,它就这个分配空间)。
这样的话,如果你的DIV是50px,那么巧了,正好这行文字也就相对于DIV居中了。
所以,这样一来呢,就有了“把line-height设置为容器div的高度就能使文字垂直居中”。
不知道这么说是不是回答了你的问题。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-03
<div style="background:red;font-size:12px;line-height:50px;">首先,不固定高度line-height也可以实现文字垂直居中</div>
        <div style="background:green;font-size:12px;line-height:30px;">当高度自适应时,文字的顶端和文字的底端的距离会随line-height大小变化而变化,但实际上文字还是垂直居中的(不考虑padding)</div>
        <div style="background:blue;font-size:12px;line-height:25px;height:25px">由于可能为了布局需要,要固定高度,为了实现单行文字垂直居中,从而设置line-height的值与height值设置一致</div>

第2个回答  推荐于2016-08-19
line-height 属性设置行间的距离(行高)。
注释:不允许使用负值。
说明
该属性会影响行框的布局。在应用到一个块级元素时,它定义了该元素中基线之间的最小距离而不是最大距离。
line-height 与 font-size 的计算值之差(在 CSS 中成为“行间距”)分为两半,分别加到一个文本行内容的顶部和底部。可以包含这些内容的最小框就是行框。
原始数字值指定了一个缩放因子,后代元素会继承这个缩放因子而不是计算值。
    默认值:   normal     
    继承性:   yes     
    版本:   CSS1     
    JavaScript 语法:   object.style.lineHeight="2"     
实例
设置以百分比计的行高:
p.small {line-height:90%}
p.big {line-height:200%}

浏览器支持
所有浏览器都支持 line-height 属性。
注释:任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit"。
可能的值
值描述
normal    默认。设置合理的行间距。    
number    设置数字,此数字会与当前的字体尺寸相乘来设置行间距。    
length    设置固定的行间距。    
%    基于当前字体尺寸的百分比行间距。    
inherit    规定应该从父元素继承 line-height 属性的值。

本回答被提问者采纳
相似回答