CSS深入理解之line-height

本文详细探讨了CSS中的line-height属性,从定义、行内框盒子模型、高度机理到实际应用,揭示了line-height如何影响内联元素高度及文本垂直居中。此外,还讨论了line-height与图片、空白幽灵节点的关系,以及消除图片底部间隙的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下文字整理自慕课网——张鑫旭的《CSS深入理解之line-height》。

看到不时有人点赞收藏这篇文章,我想应该也有很多人是对line-height 和vertical-align 困惑吧,你们可以去看下这篇文章,上面有我学习vertical-align踩得坑 css中重难点整理

一、line-height的定义

line-height,又称行高,指的是两行文字基线之间的距离,又可以称为这行文字所占的高度。

定义三问:
  1. 什么是基线?
  2. 为何是基线?
  3. 需要两行?

如图红色线即为基线
在这里插入图片描述

基线(baseline),指的是一行字横排时下沿的基础线,基线并不是汉字的下端沿,而是英文字母x的下端沿。基线乃*线定义之根本! (*线指任意线)

第3个问题,一行文字难道就没有行高吗?非也,一行文字也是有行高的,两行的定义已经决定了一行的表现!
所以,行高表现为,如下图:(如果试想行高为0,那么两行文字将重合)
在这里插入图片描述
问题:为何line-height可以让单行文本垂直居中?

分析:真的垂直居中了吗?实际上并没有,只是我们肉眼看上去垂直居中而已!见下图:
在这里插入图片描述

二、 line-height与行内框盒子模型

line-height与行内框盒子模型

<p>这是一行普通的文字,这里有个<em>em</em>标签。</p>

这普通的一行包含了4种盒子,下面详解。

1、内容区域(content area),是一种围绕文字看不见的盒子。内容区域的大小与font-size大小相关。图示如下:

在这里插入图片描述
2、内联盒子(inline boxes),内联盒子不会让内容成块显示,而是排成一行。如果(文字)外部包含inline水平的标签(span、a、em、strong等),则属于内联盒子。如果是个光秃秃的文字,则属于匿名内联盒子。图示会更清楚:
在这里插入图片描述
3、行框盒子(line boxes),每一行就是一个行框盒子,每个行框盒子又是由一个一个内联盒子组成。在这里插入图片描述
4、p标签所在的包含盒子(containing box),此盒子由一行一行的行框盒子组成。
在这里插入图片描述

三、line-height的高度机理——深入理解内联元素的高度表现

我们来考虑文本占据的高度,见下例:

在这里插入图片描述
p标签的高度从何而来,是由里面的文字撑开的吗?答案:不是的,实际上这个高度是由line-height决定的!再看下例:

在这里插入图片描述
通过此例说明,内联元素的高度是由行高决定的!

我们需要知道:

1、行高由于其继承性,影响无处不在,即使单行文本也不例外。

2、行高只是幕后黑手,高度的表现不是行高,而是内容区域行间距

只不过,内容区域高度(content area)+行间距(vertical spacing)=行高(line-height)

注意:
1、内容区域高度只与字号以及字体有关,与line-height没有任何关系。

2、在simsun字体(即宋体)下,内容区域高度等于文字大小值。所以,在simsun字体下,font-size+行间距=line-height。

行间距上下拆分,就有了半行间距

测试:font-size=240px,line-height=360px,分别计算行半间距。如图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值