私は CSS を初めて使用し、最近仕様を読んで、vertical-align プロパティを理解するのにいくつかの問題を抱えています。
<div style="border: 1px solid black;">
<span style="border: 1px solid red; padding-left: 1px; line-height: 30px;"></span>
<span style="border: 1px solid red; padding-left: 1px;"></span>
<span style="border: 1px solid red; padding-left: 1px; line-height: 40px;"></span>
</div>
<div style="border: 1px solid black;">
<span style="border: 1px solid red; padding-left: 1px; line-height: 30px;"></span>
<span style="border: 1px solid red; padding-left: 1px;"></span>
<span style="border: 1px solid red; padding-left: 1px; line-height: 40px; vertical-align: top"></span>
</div>
<div style="border: 1px solid black;">
<span style="border: 1px solid red; padding-left: 1px; line-height: 30px; vertical-align: bottom"></span>
<span style="border: 1px solid red; padding-left: 1px;"></span>
<span style="border: 1px solid red; padding-left: 1px; line-height: 40px; vertical-align: top"></span>
</div>
上記のコードは 3 つの div を作成し、それぞれに 3 つの空のインライン ボックス (スパン) が含まれます。
- 最初の div では、すべて問題ないようです。3 つのスパンはすべて、ライン ボックスのベースラインに揃えられます。
- 2 番目の div で、3 番目のスパンの
vertical-align
プロパティをに設定した後top
、最初の 2 つのスパンが上に移動します。そして、ここから迷子になり、なぜそれらが上に移動するのか、どのルールに従っているのかわかりません。 - 3 番目の div は、私にとってさらに重要です。
vertical-align
1 番目のスパンのプロパティをに設定すると、2 番目のスパンが 3 番目のスパンよりもわずかに低くbottom
移動します (これは十分に拡大するとわかります)。
仕様で見つけることができるものは以下のとおりですが、正確には何multiple solutions
ですか? 誰かがこれについてもっと光を当てることができますか?
In case they are aligned 'top' or 'bottom', they must be aligned so as to minimize the line box height. If such boxes are tall enough, there are multiple solutions and CSS 2.1 does not define the position of the line box's baseline.
fiddleも作成しました。興味がある場合は、Firefox または Chrome で実行してください。