外側のdiv
が必要です。これは、そのdiv
sをフローティングでラップするために黒です。使用したくないstyle='height: 200px
div
にouterdiv
idを付けて、コンテンツの高さ(たとえば、フローティングdiv
s)に自動的に設定するようにします。
<div id='outerdiv' style='border: 1px solid black;background-color: black;'>
<div style='width=300px;border: red 1px dashed;float: left;'>
<p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p>
</div>
<div style='width=300px;border: red 1px dashed;float: right;'>
<p>zzzzzzzzzzzzzzzzzzzzzzzzzzzzz</p>
</div>
これを達成する方法は?
outerdiv
のCSSをこれに設定できます
#outerdiv {
overflow: hidden; /* make sure this doesn't cause unexpected behaviour */
}
clear: both
で最後に要素を追加することでこれを行うこともできます。これは通常、JS(適切なソリューションではない)または:after
CSS疑似要素(古いIEでは広くサポートされていない)を使用して追加できます。
問題は、コンテナがフロートした子を含むように自然に拡大しないことです。最初の例を使用すると警告が表示されます。親要素の外側に子要素がある場合、それらは非表示になります。プロパティ値として「auto」を使用することもできますが、外部に要素が表示されるとスクロールバーが呼び出されます。
親コンテナをフローティングすることもできますが、デザインによってはこれが不可能/困難な場合があります。
まず、インラインで行うのではなく、外部CSSファイルでCSSスタイリングを行うことを強くお勧めします。保守がはるかに簡単で、クラスを使用するとより再利用可能になります。
「明確な要素を最後に追加する:両方」というアレックスの答え(&Garretのclearfix)を解決するには、次のようにします。
<div id='outerdiv' style='border: 1px solid black; background-color: black;'>
<div style='width: 300px; border: red 1px dashed; float: left;'>
<p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p>
</div>
<div style='width: 300px; border: red 1px dashed; float: right;'>
<p>zzzzzzzzzzzzzzzzzzzzzzzzzzzzz</p>
</div>
<div style='clear:both;'></div>
</div>
これは機能します(ただし、ご覧のとおり、インラインCSSはそれほどきれいではありません)。
http://www.sitepoint.com/simple-clearing-of-floats/ で詳細に説明されているように、自己閉鎖フロートを試してみてください。
だからおそらくどちらかを試してくださいoverflow: auto
(通常は機能します)、またはoverflow: hidden
、アレックスが言ったように。
一部の人が私を嫌うことは知っていますが、私はdisplay:table-cell
この場合に役立ちます。
本当にきれいです。
まず、CSSではなくタグの属性設定であるwidth=300px
を使用しないで、代わりにwidth: 300px;
を使用します。
#outerdiv
にclearfix
テクニックを適用することをお勧めします。 Clearfix は、2つのフローティングdivをクリアする一般的なソリューションであるため、親divは2つのフローティングdivに対応するように拡張されます。
<div id='outerdiv' class='clearfix' style='width:600px; background-color: black;'>
<div style='width:300px; float: left;'>
<p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p>
</div>
<div style='width:300px; float: left;'>
<p>zzzzzzzzzzzzzzzzzzzzzzzzzzzzz</p>
</div>
</div>
以下に、状況の 例 と、それを解決するためにClearfixが行うことを示します。
JQueryを使用します。
親の高さ=子のoffsetHeightを設定します。
$(document).ready(function() {
$(parent).css("height", $(child).attr("offsetHeight"));
}
つかいます clear: both;
私はこれを理解しようとして一週間以上費やしました!