首先展示问题案例
![681287d78ea7f39829a793c70f3256a7.png](https://img-blog.csdnimg.cn/img_convert/681287d78ea7f39829a793c70f3256a7.png)
![732d3f5b4ad68021c7bb2c2654598ec4.png](https://img-blog.csdnimg.cn/img_convert/732d3f5b4ad68021c7bb2c2654598ec4.png)
我们可以看到图片的文字顶部和文字上下之间有一行空白的位置,导致我们的文字无法与图片顶部对其,哪怕我们设置padding和margin都无法解决掉。
行高的初步认识
前端CSS的line-height属性,行高是用于设定行内元素高度的属性,一般用于字体。可以想象成透明的水,这样比较容易理解。它用于定义内容的高度,而我们常用的height高度属性是用于定义元素属性,即设置P标签固定的高度。
行高展示图
![c96d3ada4ef71d929ad3dac3066edba5.png](https://img-blog.csdnimg.cn/img_convert/c96d3ada4ef71d929ad3dac3066edba5.png)
从图中我们可以看到,我们设置字体P标签元素的时候,P标签的内容不但受于height影响,同时还受到line-height行高的影响,因此,哪怕我们设置P标签的元素margin或padding为0的时候,都无法解决P标签内容置顶,因为P标签的内容还受到默认行高的影响。
行高设置与字体大小相同的时候置顶
![b958835cb68f5a432348102f7bfe2868.png](https://img-blog.csdnimg.cn/img_convert/b958835cb68f5a432348102f7bfe2868.png)
![feb9f0875506096534b03fb798cce8e8.png](https://img-blog.csdnimg.cn/img_convert/feb9f0875506096534b03fb798cce8e8.png)
我们可以看到,当行高设置与字体大小一模一样的时候就可以实现字体置顶了,但是也出现了一个问题。段落的内容不美观,每一行都没有间距了。因此一般多行的情况下设置行高要大于字体大小。
行高该如何取值
从上面两个案例中我们知道,默认行高无法实现与图片顶部对其的美观效果,而设置字体大小等于行高则会影响多行间距。
![4f219b99805096139bcd585e6842923f.png](https://img-blog.csdnimg.cn/img_convert/4f219b99805096139bcd585e6842923f.png)
当我们设置行高26px的时候,字体大小16px
![ec0091e5f6805f1d6dcc8cc689b9a1f5.png](https://img-blog.csdnimg.cn/img_convert/ec0091e5f6805f1d6dcc8cc689b9a1f5.png)
![dd27e4414351ed82d42dc8ad6212b774.png](https://img-blog.csdnimg.cn/img_convert/dd27e4414351ed82d42dc8ad6212b774.png)
接下来是计算公式:行高/2-字体大小/2。
即:26/2-16/2=5
因此我们在将图片margin-top设置为5即可实现图片与文字顶部对其了。
![1c5bf9e1d900c42aafded3df00c624ee.png](https://img-blog.csdnimg.cn/img_convert/1c5bf9e1d900c42aafded3df00c624ee.png)
![e5211de3be07d9006796779171410279.png](https://img-blog.csdnimg.cn/img_convert/e5211de3be07d9006796779171410279.png)
总结
有的同学可能有疑惑,为什么我一开始不直接设置图片margin-top的数值,解决图片与文字的顶部水平。这是因为不同设备,浏览器的字体默认行高不一定相同的。因此也许同样16px字体大小的行高有些设备或浏览器默认大小行高20px,有些22px。所以仅仅设置img的顶部外边距与字体顶部对其,但是无法保证浏览器的兼容性。因此我们要从根源头了解行高和如何设置行高,这样才能让我们写的代码兼容性更强些。