float
プロパティでvertical-align
およびdiv
を使用するにはどうすればよいですか? float
を使用しない場合、vertical-align
は正常に機能します。しかし、フロートを使用すると、機能しません。最後のdivにfloat:right
を使用することが重要です。
すべてのdivからフロートを削除すると、うまくいくでしょう:
<div class="wrap">
<div class="left">First div, float left, has more text.</div>
<div class="left2">Second div, float left </div>
<div class="right">Third div, float right</div>
</div>
CSS:
.wrap{
width: 500px;
overflow:hidden;
background: pink;
}
.left {
width: 150px;
margin-right: 10px;
background: yellow;
float:left;
vertical-align: middle;
display:inline-block
}
.left2 {
width: 150px;
margin-right: 10px;
background: aqua;
float:left;
vertical-align: middle;
display:inline-block
}
.right{
width: 150px;
background: orange;
float:right;
vertical-align: middle;
display:inline-block
}
行の高さを設定する必要があります。
<div style="border: 1px solid red;">
<span style="font-size: 38px; vertical-align:middle; float:left; line-height: 38px">Hejsan</span>
<span style="font-size: 13px; vertical-align:middle; float:right; line-height: 38px">svejsan</span>
<div style="clear: both;"></div>
実際、浮動要素では垂直方向の配置は機能しません。これは、フロートが要素をドキュメントの通常のフローから持ち上げるためです。変換、表示に基づいたものなど、他の垂直方向の配置手法を使用することもできます:テーブル、絶対配置、行の高さ、js(最後の手段かもしれません)、さらにはプレーンな古いhtmlテーブル(コンテンツが実際には表形式)。この問題については激しい議論があることがわかります。
ただし、これは3つのdivを垂直方向に整列させる方法です。
.wrap{
width: 500px;
overflow:hidden;
background: pink;
}
.left {
width: 150px;
margin-right: 10px;
background: yellow;
display:inline-block;
vertical-align: middle;
}
.left2 {
width: 150px;
margin-right: 10px;
background: aqua;
display:inline-block;
vertical-align: middle;
}
.right{
width: 150px;
background: orange;
display:inline-block;
vertical-align: middle;
}
なぜ固定幅、ディスプレイ:インラインブロックとフローティングの両方が必要なのかわかりません。