コンテナーの高さが固定されている場合、line-height を高さと同じに設定すると、垂直方向に中央揃えになります。次に、 text-align を追加して水平方向の中央に配置します。
例を次に示します: http://jsfiddle.net/Cthulhu/QHEnL/1/
編集
コードは次のようになります。
.img_thumb {
float: left;
height: 120px;
margin-bottom: 5px;
margin-left: 9px;
position: relative;
width: 147px;
background-color: rgba(0, 0, 0, 0.5);
border-radius: 3px;
line-height:120px;
text-align:center;
}
.img_thumb img {
vertical-align: middle;
}
画像は、サイズに関係なく、常に水平方向と垂直方向の中央に配置されます。異なるサイズの画像を使用したさらに 2 つの例を次に示します。
http://jsfiddle.net/Cthulhu/QHEnL/6/
http://jsfiddle.net/Cthulhu/QHEnL/7/
アップデート
現在は 2016 年 (未来!) で、いくつかの変更が行われているようです (ついに!!)。
2014 年にMicrosoft は、すべてのバージョンの Windows で IE8 のサポートを停止し、すべてのユーザーに IE11 または Edge への更新を推奨すると発表しました。さて、これは来週の火曜日 (1 月 12 日) に行われる予定です。
なぜこれが重要なのですか?IE8 の廃止が発表されたことで、ついにCSS3マジックを使い始めることができます。
そうは言っても、水平方向と垂直方向の両方で要素を整列させる更新された方法は次のとおりです。
.container {
position: relative;
}
.container .element {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
このtransform: translate();
方法を使用すると、コンテナーに高さを固定する必要さえありません。完全に動的です。要素の高さまたは幅が固定されていますか? あなたのコンテナも?いいえ?すべてのセンタリング プロパティが子に固定され、親から独立しているため、常にセンタリングされます。CSS3ありがとう。
1 つの次元のみを中央揃えする必要がある場合は、translateY
またはを使用できますtranslateX
。しばらく試してみると、どのように機能するかがわかります。また、 の値を変更してみてくださいtranslate
。さまざまな状況で役立つことがわかります。
ここに、新しいフィドルがあります: https://jsfiddle.net/Cthulhu/1xjbhsr4/
の詳細についてはtransform
、こちらのリソースを参照してください。
ハッピーコーディング。