<style>
body{
padding: 0;
margin: 0;
}
div{
line-height:0
}
span{
font-size: 40px;
}
</style>
</head>
<body>
<div><span>123</span></div>
<style>
body{
padding: 0;
margin: 0;
}
div{
line-height:0
}
span{
font-size: 40px;
}
</style>
</head>
<body>
<div><span>123</span></div>
测试了一堆得出以下几个结论
1、高度来自于 div 内字体大小为 16px 时 div 高度中间线与 span 高度中间线的差距
2、当 div 字体大小大于等于 span 时高度消失
3、为 span 加上非 baseline 的 vertical-align 时高度消失
基本确定是因为文字基线产生的 具体原因未知 ╮( ̄▽ ̄")╭
5 回答1.3k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
4 回答2k 阅读
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
1 回答1.5k 阅读✓ 已解决
首先看
line-height
的规范在这里,div 的
line-height:0
定义了 包裹 span 的 line box 的最小高度是 0。注意:这里是最小高度
为什么是最小高度呢,因为 line box 需要包裹住一行内最高和最低的内容,可以看这张图(来自最下方的参考文档)。
考虑下面代码:
仿照上图,我做了一张图解释,
div.demo
的高度为什么是 72px 左右。同样的道理,如果你设置
div.demo
的line-height:0
,结果就是注意,
.demo__text
和.demo__child
此时的 virtual-height 应该是 0(我加了 border 好辨认),但是他们的位置不一样。而根据规范:所以在这里,line box 的高度必须要包括
.demo__text
.demo__child
,所以他两的位置差就成了.demo
的高度。参考文档:
Deep dive CSS: font metrics, line-height and vertical-align