问题
当p、div、a这些作为父元素容器且包含img子元素标签时,父元素的总体高度会比img
图片的高度多出一些px
<div class="content">
<img src="https://www.baidu.com/images/asfwqdr1fgh44.png">
<div>
F12排查了父元素是否存在margin或者
padding
,但是没有找到对应的间距设置,又排查了html文本,看看是否是空格或者换行符导致的。仍不行,排除html空格的问题
原因
根据查询的资料了解到,在html5中,img标签
是一种类似text文本
的标签元素,在结束的时候,会在末尾加上一个空白符(匿名文本),这个文本外有一个匿名行级盒子,它默认的vertical-align
是baseline
的,而且往往因为上文(父容器那继承到的样式)line-height
的影响,使它有个line-height
,从而使其有了高度,因为baseline
对齐的原因,这个匿名盒子就会下沉,往下撑开一些距离,所以把父元素撑高了一些px
解决
- 消除掉匿名盒子的高度,给父元素设置
line-height: 0;
或者font-size: 0
;- 给两者
vertical-align:top(实际上,只需要设置父元素,因为子元素默认继承父元素该样式)
,让其top对齐,而不是baseline
对齐- 给img以
display:block
,让它和匿名行级盒子不在一个布局上下文中,也就不存在行级盒的对齐问题【推荐】