背景画像を表示する領域の中には画像が1つだけ
という条件であれば、
0. paddingで調整
0. position:absolute
0. 仮想テーブルレイアウト
などの方法が考えられます。
とりあえず以下のHTML構造に対して画像を中央に配置するサンプルを書いておきます。
HTML
1<div class="bg">
2<img src="hoge.jpg" width="100" height="100" alt="">
3</div>
###paddingで調整する場合
左右中央はtext-align:center、上下中央は上下均等のpaddingで画像を真ん中に配置します。
CSS
1.bg {
2 width: 800px; /*任意の幅*/
3 padding: 100px 0; /*上下paddingに同じ値を入れてコンテンツを上下中央配置に見せる*/
4 text-align: center; /*中身を左右中央揃えにする*/
5}
###position:absoluteの場合
position:absolute;とmargin:autoの組み合わせで上下左右中央に配置します。
CSS
1.bg {
2 position:relative;
3 width: 800px; /*任意の幅*/
4 height: 300px; /*任意の高さ*/
5}
6.bg img {
7 position: absolute;
8 left: 0;
9 right: 0;
10 top: 0;
11 bottom: 0;
12 margin: auto;
13}
###仮想テーブルの場合
.bgをtd要素相当の表示属性に変更し、その中でtext-align/vertical-alignで真ん中に配置します。
CSS
1.bg {
2 width: 800px; /*任意の幅*/
3 height: 300px; /*任意の高さ*/
4 display: table-cell;
5 text-algin: center;
6 vertical-align: middle; /*セル内で上下中央揃えにする*/
7}
※上記はいずれも原則固定サイズ前提の最も簡易な設定なので、可変レイアウトの場合には更に一工夫が必要になるものもあります。