2010-12-11 13 views
14

私は水平と垂直を中心にしたいdivを持っています。divを垂直に中央に配置するにはどうすればよいですか?

水平の問題ではすべてが素晴らしいですが、垂直方向の配置に問題があります。

#parent { 
    display: table; 
} 

#child { 
    display: table-row; 
    vertical-align: middle; 
} 

が、これは動作しません:

は、私はこれを試してみました。

+0

私はgoogle ...あなたの助けをありがとう – trrrrrrm

+0

それがあなたのために働くかどうかを見るために私の答えをチェックしてください.. @ra_htial ....はい古い質問は古くなりますが、依然として明確にすべき難しい1つです – juanm55

+0

[ブラウザ?](http://stackoverflow.com/questions/396145/how-to-vertically-center-a-div-for-all-browsers) – Carpetsmoker

答えて

27

transform(またはそのベンダーのプレフィックスバージョン)をサポートするブラウザのみをサポートする必要がある場合は、この1つの古いトリックを使用して要素を垂直に整列させます。あなたは古いブラウザをサポートする必要がある場合

#child { 
    position: relative; 
    top: 50%; 
    transform: translateY(-50%); 
} 

、あなたはこれらの組み合わせを使用することができますが、彼らはtableblockのレンダリングの違いに起因する痛みをすることができます。

#parent { 
    display: table; 
} 

#child { 
    display: table-cell; 
    vertical-align: middle; 
} 

あなたの高さが固定されており、あなたがそれらの本当に古い、厄介なブラウザをサポートする必要がある場合は...

#parent { 
    position: relative; 
} 

#child { 
    height: 100px; 
    position: absolute; 
    top: 50%; 
    margin-top: -50px; 
} 

あなたの高さが固定されていない場合は、workaroundあります。

See it on jsFiddle

+0

おかげで多くの私の友人が、私は何がわかっている場合にのみ動作します#child height ...しかし、必ずしも同じではない、親指UP!あなたの役に立つ答えをありがとう! – trrrrrrm

+0

http://jsfiddle.net/RQznA/この例を確認してください。 – trrrrrrm

+0

@ From.ME.to.YOU [回避策](http://www.jakpsatweb.cz/css/css-vertical-center-solution)を参照してください。 html)。残念ながら、IE6 + 7では余分なコンテナが必要になります。 – alex

0

最初に、非テーブルマークアップをテーブルとして扱う(ディスプレイ:テーブルとフレンド)は、クロスブラウザではありません。私はあなたがサポートする必要があるブラウザを知っているが、確かにIE6はこれをしません。しかし、あなたの目標としているブラウザを行う場合すべてのサポートディスプレイ:テーブル私はあなたにいくつかのヒントを与えることができます。

(テーブルレイアウトを使用して)探している垂直センタリングのアプローチは、TDを垂直方向に配置することに依存します。中間、次に1つのブロック要素が垂直方向に中央に配置されます。

#parent { display:table-cell; vertical-align:middle; } 
#child { /* nothing necessary, assuming it's a DIV it's already display:block */ } 

それは周囲のテーブル行とテーブルとテーブルセルを使用しても大丈夫ですが、ブラウザはあなたのために必要なテーブルラッピング要素を推測:だから私は何がしたいことはあると思います。ここ

0

あなたは、内側のdivのサイズまたは何を知っていないとき、あなたは「センタリング」を修正するためにここにある%を使用することができます別の方法です....

アイデアは、あなたの一番上の値であるということです

<div id="parent"> 
    <div id="child"> 
      hello 
    </div> 
</div> 

とスタイリングのために:

#parent { 
    position: relative; 
    height: 300px; 
    width:200px; 
    background-color:green; 
} 

#child { 
    height: 50%; 
    width: 50%; 
    position:relative; 
    top:25%; 
    left:25%; 
    background-color:red; 
} 
中心と錯覚

を作成するようにあなたの子供要素の半分の高さは、ここではコードです

ここでは、display: table-cellとしてdisplay:table、など親プロパティと子の特性を有する http://jsfiddle.net/Wabxv/

+0

これは、残っている空き領域にdivを配置することに注意してください(親divにテキストがある場合、この方法は絶対的な配置を使用するために、親アイテムのサイズではなく残りのスペースに集中します) – juanm55

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参照のためのリンクを提供する方が良いでしょう。リンクされたページが変更された場合、リンクのみの回答は無効になります。 – NathanOliver

+0

修正済み@NathanOliverがヘッドアップに感謝! – juanm55

3

アクションでそれを見ることができるとvertical-align: middleは私のために働きました。

関連する問題