内部にフロートがありながらdivを高さに成長させる方法


121

内部にフロートがある場合、divの高さを上げるにはどうすればよいですか?幅の値を定義し、オーバーフローを非表示に設定することは知っています。問題は、オーバーフローが見えるdivが必要なことです。何か案は?

回答:


278

overflow:auto;含まれているdivでは、その内部(フロートされたアイテムも含む)がすべて表示され、外側のdivがそれらを完全にラップします。この例を見てください:

.wrap {
  padding: 1em;
  overflow: auto;
  background: silver;
 }
 
.float {
  float: left;
  width: 40%;
  background: white;
  margin: 0 1%;
}
<div class="wrap">
  <div class="float">Cras mattis iudicium purus sit amet fermentum. At nos hinc posthac, sitientis piros Afros. Qui ipsorum lingua Celtae, nostra Galli appellantur. Petierunt uti sibi concilium totius Galliae in diem certam indicere. Ambitioni dedisse scripsisse iudicaretur.</div>
  <div class="float">Mercedem aut nummos unde unde extricat, amaras. A communi observantia non est recedendum. Quisque ut dolor gravida, placerat libero vel, euismod. Paullum deliquit, ponderibus modulisque suis ratio utitur.</div>
  </div>


7
ええ、それはちょっとうまくいきますが、スクロールバーを生成する危険があります。
ペドロザット2011年

1
いいえ、@ pedroを知っているわけではありません。外側のdivは、内側のdivをラップするために拡張し続ける必要があります。フィドルで試して、内側のdivのサイズを増やして、何が起こるかを確認してください。
JakeParis

2
私がこれを試したところ、ブラウザウィンドウの右側に、高さが約2emの小さなスクロールバーが表示されました。
Nigel Alderton、2013年

1
@NigelAldertonこれは私がコンテナ(overflow追加された場所)の高さを強制していたため、私に起こりました。overflow: auto;クラスとheightセレクターを削除することで修正しました
eggy

16

フロートをクリアする方法は複数あります。ここでいくつか確認できます:http :
//work.arounds.org/issue/3/clearing-floats/

たとえば、clear:bothあなたのために働くかもしれません

#element:after {
    content:"";
    clear:both;
    display:block;
}

#element { zoom:1; }

1
このアプローチの利点はoverflow: auto;、要素の外にオーバーフローするコンテンツ(フォーカスの装飾など)をクリップすることですが、これはしません。
Dan

overflow:autoは水平スクロールバーを作成してくれたので、使用できませんでした。これは完全に機能しました。
Edwin Stoteler 2017年

まさに私が探していたもの。このCSSを親に適用しました。親の<div>の高さを拡張して、フロート要素がその中に残るようにします。「親の底がフロートをクリアする必要がある」と明記されているため、エレガントです。
IAM_AL_X 2018年

12

多くの場合、これoverflow: auto;で十分ですが、補完とブラウザ間のサポートのために、すべてのブラウザで機能するClearfixを確認してください

次のマークアップについて考えてみましょう。

<div class="clearfix">
   <div class="content">Content 1</div>
   <div class="content">Content 2</div>
</div>

以下のスタイルと一緒に..

.content { float:left; }

.clearfix { ..from link.. }

クリアフィックスがないと、フローティングチャイルドであるため、親にdiv高さがありません。clearfixは、親に浮動子を考慮させます。


2
Clearfixは追加のマークアップです。単に親divにマークアップを与えるoverflow: auto;
JakeParis '05年

7

私はそれを行うための素晴らしい方法display: tableがdivに設定することだと考えました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.