article
とaside
のみでカバーされる部分の背景色を指定したいので、aside
の高さがarticle
と同じであるという印象を与えることができます(基本的に、aside
とdiv
の両方をラップするために同じ背景色を指定します) aside
およびarticle
)
<div style="background-color:#cccccc" class="clear_fix">
<p> This is where the container starts !!!</p>
<p> Why the div stops here ???!!!!</p>
<article>
<h2> Meanwhile, Let's learn about Tesla </h2>
<p>Tesla's achievements and his abilities as a showman</p>
</article>
<aside>
<h2> Brand-new and Used cars </h2>
<p> Buy your first car starting from 0.99 $.</p>
</aside>
</div>
上記のタグに関連するstyle.cssは次のとおりです。
article {
width:716px;
background-color:#87ceeb;
box-shadow: 0px 0px 4px 4px #a9a9a9;
padding-top:20px;
float:left;
margin-top: 4px;
margin-bottom: 4px;
}
aside {
width:240px;
float:left;
padding-top:20px;
background-color:#fff5dd;
margin-top:4px;
margin-left:4px;
box-shadow:0px 0px 4px 4px #a9a9a9;
}
.clear_fix {
clear:both;
}
しかし、私が得たのは、div
の背景色は最初の2つのp
タグにのみ影響するということです。
明らかに、これは私がすべてをdiv
でラップすることによって意図したことではありません。
私の場合のdiv
の背景色がarticle and the
aside`より下に拡張されない理由を知っていますか?
ありがとう。
<article>
要素と<aside>
要素をフロートさせたため、これらは親<div>
のフローから外れています。
親要素のスタイルに、次のプロパティを追加します:overflow: auto
またはoverflow: hidden
。
<div style="background-color:#cccccc; overflow: auto;" class="clear_fix">
overflow
プロパティがトリックを実行する理由は、CSSブロックフォーマットモデルがどのように機能するかに起因します。
具体的には、関連する仕様は次のとおりです。
http://www.w3.org/TR/CSS21/visuren.html#block-formatting
次のHTMLスニペットについて考えてみます。
<div class="wrap">
<p>Some text...</p>
<div class="floated">Floated text</div>
</div>
基本ケースでは、これらの要素はすべて通常のフロー(フロートなし)であり、ルート要素によって定義された「ブロックフォーマットコンテキスト」内でフォーマットされます。ページの。したがって、それらは基本的にページの幅を埋め、ブロック要素であるため、上下に積み重ねられます。
ケース1を考えてみましょう。ここでは、.floated
をフロートさせます。フロート要素は通常のフローではなくなり、親コンテナの左端に配置され、フロート要素に最も近いブロックレベル要素である段落の下部に隣接します。
親要素の境界線は、通常のフローの子要素を囲みます。これが、フロート要素が突き出ている理由です(親コンテナの高さを決定する通常のフロー要素をフォーマットするとき、フロート要素は無視されることに注意してください)。
さて、ケース2で、.wrap
をフロートさせましょう。この場合、親要素は、<p>
と.floated
の両方の子を含むコンテンツに合わせて縮小されます。これは、div.wrap
が新しいブロックフォーマットコンテキストを確立し、CSSルールで指定されているように、ボックスのすべての端を囲む必要があるためです。含まれていること(フロートを含む)。
最後に、ケース3では、通常のフロー(フロートではない)のoverflow: hidden
で.wrap
を宣言します。 overflow
をvisible
以外の値に設定すると、新しいブロックフォーマットコンテキストが開始されます。そのため、.wrap
は引き続きページの全幅を拡張し、フロートされた子要素のすべてのエッジも含まれるようになったため、境界線はフロートされた要素を囲みます。
おそらくあなたのclear_fix
クラスはその仕事をしていません。
これをチェックしてください [〜#〜] fiddle [〜#〜] これはclearfix
クラスを切り替えるだけですコンテナ要素に。 clearfix
が設定されていない場合、それはあなたが経験しているものとよく似ています。
このcssをclearfix
クラスに使用します。
.clearfix:after {
content: ".";
display: block;
clear: both;
visibility: hidden;
line-height: 0;
height: 0;
}
.clearfix {
display: inline-block;
}
html[xmlns] .clearfix {
display: block;
}
* html .clearfix {
height: 1%;
}