CSS之清除浮動

2021-09-08 05:39:28 字數 2247 閱讀 9833

一、清除浮動的目的。

1、當乙個父元素的高度不寫或為auto時,而且這個父元素內又有浮動的子元素,那麼這時候該父元素的高度將不會自動適應子元素的高度,也可以說高度是0px;

有如下**:

123123

此**父元素高度不設定,而且裡面又有左浮動高度為300px的子元素。實際顯示效果為:

可以看到,父div僅僅顯示為其邊框的高度,並沒有適應其子元素的高度,要正確顯示父元素的邊框的話,此時就要清除浮動。我們在原來的**的基礎上加多乙個

以用於清除浮動,實際**如下:

123123

//此行**用於清除浮動

現在再來看看現在的效果:

注意:清除浮動的元素要放在正確的位置上,必須緊貼著浮動元素。

2、布局錯位問題。

因為浮動元素脫離了標準文件流,因此其它非浮動元素可能會受此影響而錯位。

例如有如下**:

左浮動元素

右浮動元素

看看我的位置

理論上說來,最下面的div與上面的div沒有關係,因此會自動排到上面的div的下面一行。來看效果:

可以看到,效果不像預期,究其原因,還是上面的父div高度不適應子浮動元素而導致,高度僅僅為邊框的高度,從而下面的div自動頂上去了,因此到此錯位

我們來改寫上面的**如下所示:

左浮動元素

右浮動元素

看看我的位置

上面的**僅僅新增了乙個

元素用於清除浮動,來看最終效果。

看到效果已經正確了。

但是,如果清除浮動的元素的位置放置不正確會有什麼後果呢?再來改寫下面的**:

<

div

style

="border:2px solid #000; width:320px;"

>

<

div

style

="width:100px;height:100px;float:left; border:1px solid #555555"

>左浮動元素

div>

<

div

style

="width:100px;height:100px;float:right; border:1px solid #aaaaaa"

>右浮動元素

div>

div>

<

br style

="clear:both;"

/> //稍稍調整了一下清除浮動的元素的位置

<

div>看看我的位置

div>  

body

>

效果如下:

可以看到,雖然下面的div的位置正確了,但是上面的父元素還是沒有適應子浮動元素的高度。

1. float

缺點:層層往上找,沒完沒了,到了body那,算是個頭 float 和 margin:0 auto; 有衝突

2. display:inline-block;

缺點:不能設定 margin:0 auto;

3. overflow:hidden;

缺點:很多js互動特效做不了,多出去的部分隱藏了

4. 在父級內,加空div:clear:both;

缺點:父級不能加padding,否則ie6 ie7不相容

5. <

br clear

="all"

/>

缺點:每次都要加這個換行符

6. .clear:after

缺點:如果**多了點,也叫缺點的話……

此外,如果父級沒有寬,就必須為父級加上:zoom:1;用來解決ie6 ie7下的問題

CSS之清除浮動

標籤可以是div br hr 在浮動元素後使用乙個空元素如 並在css中賦予.clear屬性即可清理浮動。亦可使用 或來進行清理。優點 簡單,少,瀏覽器相容性好。缺點 需要新增大量無語義的html元素,不夠優雅,後期不容易維護。在浮動元素下加 clear,但是在ie6下,塊元素有最小高度,即當hei...

css之清除浮動

清除浮動 在非ie瀏覽器 如firefox 下,當容器的高度為auto,且容器的內容中有浮動 float為left或right 的元素,在這種情況下,容器的高度不能自動伸長以適應內容的高度,使得內容溢位到容器外面而影響 甚至破壞 布局的現象。這個現象叫浮動溢位,為了防止這個現象的出現而進行的css處...

css之清除浮動

這幾天先整理下清除浮動的方法 產生問題的原因 在乙個容器中,有多個浮動的子元素,會造成顯示結果意想不到的問題。在css規範中,浮動定位不屬於正常的文件流,而是獨立定位的。浮動元素在文件流空出的位置,由後續的 非浮動 元素填充上去 塊級元素直接填充上去,若跟浮動元素的範圍發生重疊,浮動元素覆蓋塊級元素...