高さ(B)の崩壊の問題を解決

我々は非常に折りたたまれた問題を理解した後、どのようにして崩壊の高さを問題を解決するには

問題の解決の高さ:

原理は、問題の解決:W3C標準素子によればBFC、ブロックレベルフォーマットと呼ばれる隠し属性(ブロック書式コンテキスト)を有し、このプロパティは、開または閉に設定することができる開いた後BFCは、以下の要素を有することになる場合特徴:

外の親要素と子要素から1垂直が重複しません。

2. BFC要素は浮動要素で覆われていません。

3. [BFC素子は、フローティングサブエレメントを含むことができます。

オプション1:直接は、親要素の高さも200pxのに設定され、子要素が200pxのであると仮定すると、親要素の高さを指定します。問題の崩壊を避けるために。

短所:親要素の高さは固定値として指定されたら。親要素の高さが自動的にサブ要素の高さに適応していないので、このソリューションはお勧めしません。

 BFC有効にする BFCのオープンのない直接的な方法が、動作中に間接的要素オープンフロートによって提供することができます

1.浮動要素を設定します。

フロート位置は、また、親要素ボックスフロート位置に提供することがときにサブエレメントBOX1が提供される場合。これは、親要素の高さが軟化するがことが判明したが、あなたが幅を設定しない場合BOX2ボックスがまだ上に移動しながら、元のデフォルトの幅は、1行が(キルトの幅が伸延要素の要素となります)無効になり占めます。お勧めできません

 

2.要素絶対位置を設定します。

絶対位置に親要素を設定した後、元のデフォルト幅障害(キルト幅が伸延要素となる)、BOX2ボックスは依然として上方に移動しました。お勧めできません

3.インラインブロック要素

子要素BOX1フロートを保持:位置決めをフロート状態のまま、親要素がボックス表示に配置:列にブロック要素内のインラインブロック、BOX2ボックスもはや移動が、元のデフォルトの幅の故障(キルトの幅は、伸延要素となります)推奨されていません

 

前記非可視の値に設定要素過流(過剰)

プロパティが表示されている過流値メモリ(デフォルト値)、隠れ、スクロール、自動。非可視の値は、スクロール、自動に隠されています

まず、親要素がオーバーフローに設定されているボックスにしてみてください:スクロール;幅が保持され、高さのキルト要素の気晴らし、BOX2ボックスは上に移動する機会を利用していない、ページのレイアウトが最適です。しかし、スクロール属性値を持つスクロールバーは非常に見苦しいです。試してみる価値が他のプロパティを試してみてください。

;完璧な結果オート:親要素の属性のオーバーフローを設定します。

親要素のオーバーフロー:隠されました;

 

 推奨される方法:オーバーフローがオーバーフローする最も簡単な方法を解決する最も簡単な方法は、オーバーフローを設定することで開く隠されたBFCに設定されています:隠されたが、

ブラウザの互換性:この設定では、Chromeブラウザのサポート、Firefoxブラウザのサポート、IE IE6ブラウザのバージョンとブラウザがこの設定をサポートしていません。したがって、この方法は、以下のIE6とのバージョンと互換性がありません。

別の隠し財産hasLayoutがありませんIE6 BFCであるが、しかし、あなたはhasLayoutをオンにしたい場合は、直接要素1にズームすることができます。(ズーム:背後にある複数の値の増幅に続いて、拡大を示す;ズーム:1には増幅手段)のみIEブラウザでサポートされているズームが、他のブラウザがサポートしません。

あなたは、次のブラウザのすべてのバージョンは、次の2つの方法で書かれているとの互換性がある場合は、両方がオーバーフローズームを持っています。


 

二つの方法の高度終了崩壊を解決

この方法を理解するには、最初の(親要素の影響を取り除くことができない、唯一の兄弟の影響をクリアする)明確なプロパティを簡単に見てみましょう

明確には、プロパティの値をクリアします:

none:不清除浮动;

left:左侧不允许出现浮动,清除左侧浮动元素对当前元素产生的影响;

right:右侧不允许出现浮动,清除右侧浮动元素对当前元素产生的影响;

both:清除对元素影响最大的浮动。

清楚了clear属性清除的用法之后,就可以运用到解决高度塌陷。

当为父元素中的子元素设置了向浮动时。为box1设置向左浮动。就会发现子元素的位置没变,但是父元素box发生了高度坍塌

 

 

为box1盒子的兄弟元素box2 设置clear属性

 

解决高度塌陷方案二

优点

可以直接在高度塌陷的父元素最后添加一个空白的div,由于这个div并没有设置浮动,所以他可以撑开父元素的高度的。

再对其进行清除浮动(clear),通过这样可以通过这个空白的div来撑开父元素的高度。

相比于上面的使用overflow属性清除浮动,更加建议使用此方案,副作用相对而言更少(基本没有),而且可以兼容所有的浏览器。

缺点

因为div属于HTML元素,HTML属于结构部分,所以使用这种方式虽然可以解决问题,但是会在页面中添加多余的结构。

假如既不想添加结构,又希望可以解决高度塌陷问题

解决办法通过after伪类,选中box父元素的后边

可以通过after伪类向元素的最后添加一个空白的块元素,然后对其清除浮动。这样做和添加div原理一样,可以达到一个相同的效果。

而且不会在页面添加多余的div(结构),最推荐使用的方式,几乎没有副作用。

 

 


 

使用clearfix属性,清除修复。

给box添加一个clearfix的属性

 设置clearfix属性值,其中最为关键的三点是

这是最推荐使用的一种方式。但是在IE6中不支持 :after伪类。如果想在IE6中显示开启hasLayout,设置zoom:1。

おすすめ

転載: www.cnblogs.com/nyw1983/p/11374405.html