それにはいくつかの方法があります - 純粋な CSS または JS ベースの方法です。
更新された回答
更新: CSS 変換サポートの出現により、純粋な CSS を使用して要素を配置するかなり洗練されたソリューションがここにあります。指定されたマークアップで:
<div class="container">
<img src="..." alt="..." title="..." />
</div>
CSS の場合:
.container {
/* The container has to have a predefined dimension though */
position: relative;
}
.container img {
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
更新された JSFiddle
古い答え
CSS の場合、要素のコンテナー内にゴースト要素を構築できます<img>
。Chris Coyier は、この手法について優れた記事を書いています。HTML コードが次のようになっているとします。
<div class="container">
<img src="..." alt="..." title="..." />
</div>
次に、CSS は次のようになります。
.container {
font-size: 0;
text-align: center;
}
.container:before {
content: "";
display: inline-block;
height: 100%;
vertical-align: middle;
}
.container > img {
display: inline-block;
vertical-align: middle;
}
機能的な CSS の修正は、このフィドル ( http://jsfiddle.net/teddyrised/yawTb/8/ ) で機能していることがわかります。
または、JS ベースの方法を使用できます。
$(document).ready(function() {
$(window).resize(function() {
$(".container > img").each(function() {
var cHeight = $(this).parent(".container").height(),
cWidth = $(this).parent(".container").width(),
iHeight = $(this).height(),
iWidth = $(this).width();
$(this).css({
top: 0.5*(cHeight - iHeight),
left: 0.5*(cWidth - iWidth)
});
});
}).resize(); // Fires resize event when document is first loaded
});
ただし、次の CSS を使用する必要があります。
.container {
position: relative;
}
.container img {
position: absolute;
z-index: 100;
}
[編集]: 画像要素を絶対的に配置する JS ベースの方法の場合、要素のサイズを明示的に指定する.container
か、要素に何らかのコンテンツを含める必要があります (ただし、画像が上にあるため、目的に反します)コンテンツ)。これは、イメージ要素がドキュメント フローから取り出されたため、そのサイズが親コンテナーのサイズに影響を与えないためです。
JS バージョンの実例はこちら - http://jsfiddle.net/teddyrised/yawTb/7/