深入理解CSS行高line-height与文本垂直居中的原理

2020-05-11 18:05:24易采站长站整理

    如果是%,%之前的数据一定是整数 :150% ,200%

em
    效果跟%是一样一样的。
    注意:一行em的大小相当于是当前标签中的font-size的大小。
    如果是em,em之前的数据一定是:1.2em ,1.5em ,2em

不带单位
    如果不涉及到继承,那么带不带单位(em)都是一样的效果,但是如果涉及到继承的话,那么就有很大的区别了:

       1、如果单位是em,那么将来在继承的时候,我们的浏览器会先将行高对应的具体的数值计算出来以后再继承。
       2、如果没有单位,那么将来在继承的时候,我们的浏览器会先将line-height这个属性继承给子元素,再在子元素的font-size来计算。line-height: 1.5。

5.行高可以被继承
我们知道,CSS的三大特性是继承、层叠、优先级。line-height也是可以被继承的,如下面的示例:

复制代码
<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”UTF-8″>
<title>Document</title>
<style>
.father {
/*line-height: 20px;*/
}
</style>
</head>
<body>
<div class=”father”>
<div class=”children”>丰趣海淘</div>
</div>
</body>
</html>

在不给.father设置行高的情况下,.children的文字行高默认为18

接着我们给div设置一个行高等于20px

复制代码
.father {
line-height: 20px;
}
 

我们再来看看.children标签的的变化,.children标签的文字行高变成20px了

而且,不管我们给行高设置什么单位(px、%、em、不带单位)都可以被继承。

6. 行高计算的基数
如果行高的单位不是px,那么将来行高要进行计算:这个计算需要一个基数,这个基数是当前标签的字体大小,而不是浏览器默认字体大小。以上面的例子为例,我们并没有设置任何字体大小,此时我们把line-height设置为150%,那么文字的行高将变为24px(16px*1.5=24)。

复制代码
div {
line-height: 150%;
}

效果如下

此时我们在给div设置一个font-size等于20px:

复制代码
div {
line-height: 150%;
font-size:20px;
}
 

那么文字行高将会变成30px,20px*1.5=30px;