元のCSSと高さを設定するjsの組み合わせであるため、4つ、おそらく5つのソリューションが下部に追加されています。
- 表のセルを使用して、コンテンツを垂直方向に中央揃えにします
display: table-cell; vertical-align: middle;
div の css として使用する
- javascript で div の高さが変わるたびに margin-top を更新する
- css3 flexbox を使用します (一部の古いブラウザーでは機能しないため、ベンダー固有の拡張機能を使用する必要があります)
古いスタイルの flexbox を使用した簡単な例 - クロム バージョン - ラッパー div を追加し、スタイルを次のように設定します。
#wrapper { display: -webkit-box; -webkit-box-align: center; }
#wrapper > div { margin: auto; }
このhttp://jsfiddle.net/gK7YU/のフィドル
新しいスタイルのフレックスボックス - これもクロム バージョンです。他のベンダー プレフィックスと、最終製品でプレフィックスのないバージョンを追加する必要があります。
#wrapper { display: -webkit-flex; }
#wrapper > div { margin: auto; }
これをフィドル:http://jsfiddle.net/LeHRD/
フィドルにはさらにいくつかの css プロパティが含まれているため、何が起こっているかを簡単に確認できます。
ああ、申し訳ありませんが、ラッパー div は必要ありません。フレックスボックスを使用してコンテンツを垂直方向に中央揃えすることができますdisplay: table-cell;
。
高さを指定して絶対配置を使用することもできます jsfiddle.net/N28AU/1
#wrapper { possition:relative }
#wrapper > div { position:absolute;top:0;right:0;bottom:0;left:0;margin: auto;}
含まれている要素から高さを計算し、負のマージンを避けたい場合は js を介して更新できます。