質問
これらのコードスニペットに問題があります:
CSS:
#wrapper{
width: 600px;
background: gray;
}
#left{
float: left;
width: 150px;
height: 80px;
background: red;
}
#right{
float: left;
width: 450px;
height: 150px;
background: yellow;
}
HTML:
<div id="wrapper">
<div id="left"></div>
<div id="right"></div>
</div>
左の高さは80px、右の高さは150pxです。私はこのことをこのように見せたいです: http://img408.imageshack.us/img408/9978/dream.th jpg IEの上記のスクリーンショットは、IEを使用すると、これらのスニペットが完全に機能します。しかし、他のブラウザー(オペラ、FF、Safari、Chrome)を使用すると、次のようになります。 http://img408.imageshack.us/img408/869/fact.th jpg
これはクールではありません<!>#8230;親(#wrapper)要素の高さで2つの子の高さを大きくしたい。
解決
これはIEのバグです。
フロートを含むは、この動作が表示される理由を説明していますが、フロートを含める方法は、マークアップを追加するよりも優れたソリューションを提供します。
他のヒント
CSS
#wrapper:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;}
Davidさん、簡単な回答をありがとう。あなたが書いたすべてのコンテンツ(2つのリンク)を読んでいませんが、2番目のリンクで解決策を見つけました。 <!> quot; clear:both; <!> quot;を追加したdivを追加しました。コンテナに、そしてそれは働いています!ありがとう。 マットボール:ありがとう、でもこのことを動的に成長させたいです
2つのdiv(s)が固定の高さ(またはその高さが<!> lt;含まれるdiv(s)の最大高さよりも低い)のコンテナに浮かぶ場合、コンテナはピクセルの行で折りたたまれますフローティングdivがコンテナをオーバーフローします。
コンテナに2つのdivが含まれるようにするには、コンテナを閉じる前に両方のフロートをクリアする必要があります! つまり... ...
CSS
<style>
#wrapper{
width: 600px;
background: gray;
}
#left{
float: left;
width: 150px;
height: 80px;
background: red;
}
#right{
float: left;
width: 450px;
height: 150px;
background: yellow;
}
.clearer{ clear: both;}
</style>
HTML
<div id="wrapper">
<div id="left"></div>
<div id="right"></div>
<div class="clearer"></div>
</div>
親のオーバーフロースタイルを表示以外に設定するだけで、子コンテンツをラップします。
私が見つけた最良の解決策は、上記のRodrigo <!>#8217; sに似ていますが、コンテンツにスペース文字を必要としません(したがって、フォントサイズを指定する必要もありません) )。クラスにすると、ラッパーだけでなく、任意のコンテナブロックに適用できます。 (また、私はそれを<!>#8217; IDのスタイルを設定しないのが最善ですが、それは<!>#8217;別の質問です。)
.clearfix:after {
clear: both;
content: "";
display: block;
height: 0;
visibility: hidden;
}
*:first-child+html .clearfix { /* Optional fix for IE7 */
zoom: 1;
}