奇妙なCSSの問題に出くわしました。コンテンツのあるボックスが垂直に配置されていない理由を誰かが説明できますか?
クラス.divPutTextToFixIssue
を使用してスパン内にテキストを配置すると、適切に配置されます。
#divBottomHeader {
background-color: #d5dbe0;
height: 43px;
}
.divAccountPicker {
display: inline-block;
background: blue;
width: 200px;
height: 40px;
}
.divAccountData {
display: inline-block;
background: red;
width: 400px;
height: 40px;
}
<div id="divBottomHeader">
<div class="divAccountPicker">
<span class="divPutTextToFixIssue"></span>
</div>
<div class="divAccountData">
<span>Balance: $555</span>
</div>
</div>
デフォルトの vertical-align
値はbaseline
です。
ボックスのベースラインを親ボックスのベースラインに揃えます
注:vertical-align:baseline
セレクターに.divAccountData
を追加すると、このデフォルト値の動作を確認できます。 baseline
がデフォルトであるため、配置は変更されません。
ブロックを上部に配置するには、これをtop
に変更する必要があります。次に例を示します。
.divAccountData {
display: inline-block;
background: red;
width: 400px;
height: 40px;
vertical-align: top;
}
ベースライン は次のように定義されます
ほとんどの文字が「座る」線とその下に子孫が伸びる線
whyに対処するには、テキストを追加すると問題が解決するようです。
'inline-block'のベースラインは、通常のフローの最後のラインボックスのベースラインです。ただし、インフローラインボックスがない場合、または 'overflow'プロパティに 'visible'以外の計算値がある場合を除きます。この場合、ベースラインは下マージンのエッジです。
したがって、1文字だけ追加するとベースラインが変更され、2番目のブロックが同じ垂直方向に配置されて表示されます。このonlyは、両方のブロックに同じ行数が含まれている場合に機能します。ブロックの1つに単語を追加してみると、2番目のブロックにvertical-align:top
を強制せずに、最初のブロックに存在するテキストの行数に応じて移動することがわかります。
編集:関連する質問が見つかりました なぜこのインラインブロック要素が下に押されているのですか?
vertical-align: top;
を.divAccountPicker
に追加する必要があります demo
...............................こんにちは今追加vertical-align:top
あなたの.divAccountData, .divAccountPicker
classこのように
.divAccountData, .divAccountPicker {
vertical-align: top;
}
以前はdisplay:inline-block;
いつもよりvertical-align:top