点了点前端技能,现在在网上看到好多关于em和line-height的博客,不客气的说很多博客都是错误的,或者所谓的深入浅出都是不知所云,所以写一个备忘录来提醒自己。
关于line-height
line-height:2 和line-height:200%到底有什么差别
他们基于的标准都是一样的,都是基于自身的倍数。区别在于继承性上,当父元素用数值的话,子元素继承得到的都是这个数值 ,当父元素使用百分比,父元素会基于其百分比算出有多少px,然后在继承下去。 换个更容易理解的话叫做:看有没有单位(百分比也算单位),没有单位相当于继承系数,子元素继承系数后(根据自己的字体大小)算出自己的行高。有单位的话,父元素是计算出自己的行高,把具体的数值(像素)继承给子元素。请查看以下代码自行体会。
https://jsbin.com/fusinih/edit?html,css,output
关于em
em.rem都是相对字体的大小 em是相对当前元素字体的大小 只有当当前的font-size使用em做大小单位的时候是依据 父元素字体的大小来做的的。这个解释可以参考MDN。
以下是我的说明
因为em要基于当前的字体大小,当前的fontsize没设置大小,则字体大小只可以从父元素继承,自然就是父元素大小的倍数。