ブロック要素の行の高さをゼロに設定すると、その要素内の各行ボックスは、そのコンテンツの行の高さにのみ基づいて配置されると思います。ただし、これらのインライン要素で非常に小さなフォントを使用しようとすると、行のコンテンツに必要なベースラインよりも低いベースラインに合わせているように見えます。CSS 仕様に関する私の理解は、すべてのブラウザーがレンダリングしているものとは一致しません。私は何が間違っていますか?
簡単なデモのコードは次のようになります (これもフィドルにあります)。
body {
font-size:60px;
}
div {
height:3em;
width:8em;
border:1px solid black;
line-height:0; /* minimum line height for contained elements */
}
span {
line-height:normal; /* don't inherit from containing block */
background-color: #cff; /* so we can see positioning */
}
<div><span>Big text works</span></div>
<div><span style="font-size:.5em">Half text size works fine too</span></div>
<div><span style="font-size:.2em">Very small text doesn't align with the top of the containing box. Why does this happen?</span></div>
CSS仕様によると:
コンテンツがインライン レベルの要素で構成されるブロック コンテナー要素では、'line-height' は要素内の行ボックスの最小の高さを指定します。
置換されていないインライン要素では、'line-height' は行ボックスの高さの計算に使用される高さを指定します。
単純な例として、小さなテキストの位置をハックしてそれを含むブロックの上部に配置する方法がたくさんあることは知っていますが、テキストがそのまま並んでいます。