2012-02-17 17 views
1

コンテナdivを別のdiv内に中央揃えしたい場合、コンテナの子divも中央揃えにする必要があります。子divは可変で予測不可能な幅です。例えば幅が指定されていない場合、親div内の左揃えの子divを中心に

<div> 
    <div class="container"> 
     <div class="child"><img />Text</div> 
     <div class="child"><img />Text Widest</div> 
     <div class="child"><img />T</div> 
    </div> 
</div> 

私はFirefoxで動作するソリューションを見つけましたが、ユニバーサルソリューションが必要です。私はJavaScriptを使ってイメージ、テキスト、divを測定することも考えましたが、私はただCSSに気づかず、シンプルで洗練されたソリューションがあると確信しています。ここでは単にFirefoxでどのような作品です:

.container { 
    width: -moz-max-content; 
    margin: 0px auto 0px auto; 
    border-style: solid; 
} 

.child { 
    border-style: solid; 
    margin: 0px auto 0px auto; 
} 
+0

最も外側のdivには100%の幅を持っている必要がありますか?それらのいずれかに固定幅を設定できる場合は、 'margin:0 auto;'が機能します。 – thepriebe

+0

いいえ。最も外側のdivは幅が変わることがありますが、希望のレイアウトを得るためにコンテナdivのスタイルに固定またはパーセンテージの幅を設定する必要はありません。これを行う際の問題は、子divがその幅を超えてしまい、小さな幅を設定するときに折り返しが発生することです。もちろん、大きな固定/相対幅を設定すると、子divは単にコンテナの中央に表示されません。 –

+0

これを見て、あなたのコードに 'span'と' display:inline-block; 'を追加する必要があるかどうか確認してください。 http://stackoverflow.com/questions/450903/make-css-div-width-equal-to-contents – thepriebe

答えて

0
.container { 
    display: table; 
    margin: 0 auto; 
} 
.container > .child { 
    display: table-cell; 
} 
関連する問題