2011-01-06 18 views
3

コンテナ内に2つの列を使用するWebサイトで作業しています。コンテナの背景は白いので、最も高い列の下に伸びるので、そのためにholy grailメソッドを使用しています。コンテナdivが水平方向にオーバーフローしていても垂直方向にオーバーフローしていません

ただし、どちらの列も白い背景を超えるように配置する必要があります(this exampleは固定高さを使用します)。私が知る限り、これはオーバーフローを可視に設定することによってのみ行うことができますが、これは列の等しい高さを壊します。

できるだけ少ない要素でこれを修正するにはどうすればよいですか?

答えて

5

この場合の最も簡単な修正は、#containerの終了タグの前に<br style="clear:both" />を追加しているようです。

希望する場合は<br class="clearfix" />.clearfix{clear:both}に変更できます。

+0

うわー、それは簡単でしたか?私は空のclearfix要素(より洗練された解決策がある時間の99%)を避けるために常に最善を尽くしてきましたが、明らかにその規則の例外です。本当にありがとう! –

1

ソリューションinline-block要素を使用することです。..

のCss

.container{ 
    width:300px; 
    background-color:#ccc; 
    margin:0 auto; 
    border:1px solid red; 
} 
.container > div{ 
    width:150px; 
    display:inline-block; 
    vertical-align:top; 
} 
.inner{ 
    background-color:#666; 
    margin-top:10px; 
    width:130px; 
} 
.left .inner{ 
    margin-left:-10px; 
} 
.right .inner{ 
    margin-right:-10px; 
    margin-left:auto; 
} 

HTML

<div class="container"> 
    <div class="left"> 
     <div class="inner">left 1st inner panel</div> 
     <div class="inner">left 2nd inner panel</div> 
    </div><div class="right"> 
     <div class="inner">right 1st inner panel</div> 
     <div class="inner">right 2nd inner panel with arbitrary text to show the increase in parent elements</div> 
    </div> 
</div> 

view demo

+0

他の答えは既に働いていますが、良い解決策は+1です。残念ながら、私はまだインラインブロックを本当にうまく処理できないIE7(no 6 thank god)をサポートする必要があります。 –

+1

@Stephan、IE6のために神に感謝しています。IE7と 'inline-block'に関しては、http://www.brunildo.org/test/InlineBlockLayout.htmlを見てください。 ) –

関連する問題