(私の意見では)最善の解決策は、50の要素の左上に配置するために絶対位置を使用することです%/ 50%にしてから、要素を負のマージンを使って中央に押し戻します。唯一の欠点は、要素の幅と高さを指定する必要があることです。ここでは例です:あなたが本当に持っている中心のコンテンツが必要な場合http://jsfiddle.net/UGm2V/
:
HTML:
<div id="centerme">
Hello, world!
</div>
CSS:
#centerme
{
position: absolute;
left: 50%;
top: 50%;
/* You must set a size manually */
width: 100px;
height: 50px;
/* Set negative margins equal to half the size */
margin-left: -50px;
margin-top: -25px;
background-color: cornflowerblue;
}
はここjsfiddleのデモです動的な高さ、より高度なソリューションがあります。古いIEブラウザではうまく動作しません。 HTMLは次のようになります。
<div id="outter-container">
<div id="inner-container">
<div id="centred">
<p>I have a dynamic height!</p>
<p>Sup!</p>
</div>
</div>
</div>
アウトターコンテナは、ページの幅と高さをカバーする必要があります。これは、絶対配置のブロック要素です。
内部の容器は実際にはテーブルです!それはdisplay: table
cssプロパティによって決まります。ここでの勝利は、あなたが実際にテーブルHTMLを必要としないということです。
#centred divは最後に必要な要素です。それでもページの幅と高さの100%をカバーしますが、内側に配置されているものはすべて縦と横の中央に配置されます。これは説明して、必要なCSSです:
/*
An outter container is needed because the table
won't cover the page width and height on it's own
*/
#outter-container
{
position: absolute;
top: 0px;
right: 0px;
bottom: 0px;
left: 0px;
}
/*
The inner container is a table which is set to
cover the width and height of the page.
*/
#inner-container
{
display: table;
width: 100%;
height: 100%;
}
/*
This table cell will cover 100% of the page width
and height, but everything placed inside it will
be placed in the absolute centre.
*/
#centred
{
display: table-cell;
vertical-align: middle;
text-align: center;
}
そしてもちろん、ここではそれに行くためにjsfiddleデモンストレーションです:http://jsfiddle.net/N7ZAr/3/
これは役に立ちますか? http://stackoverflow.com/questions/9656362/div-horizontally-center-and-vertically-middle –
可能な複製http://stackoverflow.com/questions/49350/practical-solution-to-center-vertically-and -html-horizont-in-h-f-works-in-fですが、ここでは答えはありません。 –
あなたが中心に置こうとしている要素の高さを知っている場合、JavaScriptを使わずに垂直方向に配置することは可能です。 1行のテキストしかない場合は、その行を中央に置くこともできますが、もう一度 'line-height'を使って高さを知ることができます。 – Sparky