2012-08-28 10 views
11

をクリアします。CSSの子は、私は2列のレイアウト、左側のサイドバー、右側のコンテンツを持つ親フロート

だから私は左のサイドバーをフロート、右側のコンテンツに余裕を与えます。すべてはそれがサイドバーの下にジャンプし、コンテンツの子要素がそれに適用される明確なを持っている、まで...

結構ですし、うまく。

それは親コンテナの中に子要素のみが浮くようにする方法とクリアはありますか?

絵は千個の言葉の価値があるように、ここでJSFiddleです:これについて

http://jsfiddle.net/qRYYm/1/

+0

http://jsfiddle.net/qRYYm/2/ – Peter

+0

@PeterSzymkowski内で明確な - あなたをしました最初にjsfiddleの 'Update'を押すことを意味しますか? – ahren

+0

もちろん、申し訳ありません – Peter

答えて

26

あなたが表示されるはずです.contentoverflow:auto;を追加した場合その通り。

+0

パーフェクト。これがなぜ機能するのか、もう少し説明してください。 – ahren

+3

問題は、浮動要素が含まれている場合、DIVを含むことが最も高い要素の高さに伸びないことです。オーバーフローを追加すると、auto(またはhiddenまたはscroll)が展開されます。 More info here:http://www.quirksmode.org/css/clearing.html –

+0

DIVの 'overflow'のデフォルト値は何ですか? – Justin

0

何:

aside{ 
    position: absolute; 
    height: 300px; 
    width: 100px; 
} 

http://jsfiddle.net/qRYYm/2/

+0

それは私が後になっている効果ですが、絶対的な位置付けを使わなければ可能ですか? – ahren

0

あなたは明確な使用を避けるべきです。離れた左側の列から、コンテンツをプッシュするために100pxに:あなたは余裕左を使用してはならない、また、本体容器に隠された

<div class="content"> 
    <div class="one">One</div> 
    <div class="two">Two</div>  
</div> 

.content { float: left; overflow: hidden; width: 900px; } 
aside { float: left; width: 100px; } 

:あなたはオーバーフローを使用することができます。両方のフロート。私は、列がメインラッパーになるのが好きだと分かります。それはそんなにコザイです。

+0

左両方の浮動小数点は、第2列が残りの幅を占めることを許さない。柔軟です。 – ahren

0

あなたは、この方法でも、それを行うことができます。任意のdiv要素(複数可)にフロートを適用する場合

.left{float:left;} 
.right {float:right;} 
.clear{clear:both;} 

<div> 
    <div class="left">SideBar</div> 
    <div class="right"> 
      <div> 
       <div class="left">content 1</div> 
       <div class="left">content 2</div> 
       <div class="clear"></div> 
      </div> 
    </div> 
    <div class="clear"></div> 
</div> 

、親divの中にそれらを入れて、同じ親のdiv

+0

これは '.right'が残りの幅を占めるように展開することを許可しません... – ahren

関連する問題