私は垂直方向の配置を使用しようとしています:レイアウトの真ん中に、時にはテキスト、時には画像を垂直方向に中央揃えしますが、それはテキストでのみ機能しています。誰に理由を教えてもらえますか?
HTML:
<div>
<img src="http://jsfiddle.net/img/logo.png"/>
</div>
<div>
<span> text </span>
</div>
CSS:
div{
width:200px;
height:200px;
background-color:red;
display:table;
margin:10px;
}
img, span{
display:table-cell;
vertical-align:middle;
}
http://jsfiddle.net/9uD8M/ 私もフィドルを作成しました
border: 1px solid black
あなたのimg, span
タグ、ブラウザdevの両方の要素を検査します。コンソール。スパンのデフォルトは親の高さの100%ですが、画像には定義された高さ(実際の画像の高さ)があります。
したがって、実際にはdivに対してこれらの要素を垂直方向に揃えるのではなく、span要素内のテキストをspanに対して垂直方向に揃えるだけです:)
垂直方向のセンタリングにテーブルを本当に使用したい場合、正しいコードは次のとおりです。 http://jsfiddle.net/WXLsY/
(vertical-align
およびdisplay:table-cell
親に移動し、それらにラッパーテーブルが必要です)
しかし、これを行う方法は他にもあります(SOにはこの質問に対する多くの答えがあります。検索を使用してください)
問題を解決する1つの方法を次に示します。
HTML:
<div>
<span><img src="http://jsfiddle.net/img/logo.png" /></span>
</div>
<div>
<span> text </span>
</div>
img
をspan
に入れてください。画像は置換された要素であり、子コンテンツを含むことはできません。したがって、vertical-alignは機能しません。
CSS:
div {
width:200px;
height:200px;
background-color:red;
display:table;
margin:10px;
}
span {
display:table-cell;
vertical-align:middle;
}
デモを参照してください: http://jsfiddle.net/audetwebdesign/Fz6Nj/
これにはいくつかの方法がありますが、display: table-cell
を親div
要素に追加しますが、別のアプローチになります。
テーブルセル内の画像を垂直方向に配置するには、画像にブロックを表示する必要があります。
display: block
margin: 0 auto
マージン:0 autoは、画像を中央に揃えます。画像を左揃えにする場合は、これを含めないでください。画像を右揃えにする場合は、次を追加できます。
float: right
ありがとう、G