固定サイズの正方形のdivがあり、CSSを使用して、水平方向と垂直方向の両方の中央に配置されるように、任意のサイズの画像を内部に配置したいと考えています。水平方向は簡単です:
.container { text-align: center }
垂直方向の場合、一般的な解決策は次のとおりです。
.container {
height: 50px;
line-height: 50px;
}
img {
vertical-align: middle;
}
ただし、これは完全ではありません。フォントサイズによっては、画像が2〜4ピクセル下になりすぎます。
私の理解では、これは、垂直整列に使用される「中央」が実際には中央ではなく、中央に近いフォント上の特定の位置であるためです。(少しハッキーな)回避策は次のようになります。
container {
font-size: 0;
}
これはChromeとIE7で機能しますが、IE8では機能しません。真ん中のすべてのフォント行を同じポイントにすることを望んでいますが、ブラウザや、おそらく使用するフォントによっては、行き当たりばったりのようです。
私が考えることができる唯一の解決策は、線の高さをハックして少し短くし、画像を正しい場所に表示することですが、非常に壊れやすいようです。より良い解決策はありますか?
ここで3つのソリューションすべてのデモを参照してください:http: //jsfiddle.net/usvrj/3/
IE8をお持ちでない方は、このスクリーンショットが役立つかもしれません。