我发现了CSSdisplay: flex
的一个奇怪之处,它似乎将内部元素的填充应用了两次.
我从我的项目中提取了这段代码.每个段落都应该有21px高,而它们的内部跨度有一些填充,使它们的总高度达到20.94px,正好适合里面.如果没有填充,跨度的高度将是17px,所以这个填充增加了3.94px.
然而,最后一段被设置为display: flex
.最终跨度的高度为24.94px,=21px+3.94px.所以它不会精确地应用两次填充,因为这将是20.94+3.94.相反,它将填充应用于父段落的高度?这真的没有任何意义!或者,也许line-height
是从一个不同的值计算出来的?
你知道这里到底发生了什么吗,我能做些什么来让最后一段回到合适的高度?
如果这是一个浏览器的怪癖,而不是一个css怪癖,我在Chrome116上进行了测试.
p {
font-family: Georgia;
font-size: 15px;
line-height: 1.4;
margin: 0;
}
p span {
padding: 0.132em 0;
}
p:last-child {
display: flex;
}
<div>
<p><span>Paragraph 1</span></p>
<p><span>Paragraph 2</span></p>
<p><span>Paragraph 3</span></p>
</div>