CSS 浮動和高度塌陷

2021-10-23 06:25:09 字數 2018 閱讀 4800

/* 溢位文字為省略號 */

p/* 溢位文字兩行之後為省略號 */

p/* 文字+數字的字串兩行之後為省略號 */

p

(1)相鄰塊元素垂直外邊距的合併當上下相鄰的兩個塊元素相遇時,如果上面的元素有下外邊距margin-bottom,下面的元素有上外邊距margin-top,則他們之間的垂直距離不是margin-bottom與margin-top之和,而是取兩者中的較大者。這種現象被稱為相鄰塊元素垂直外邊距的合併(也稱為外邊距塌陷

(2)巢狀塊元素垂直外邊距的合併

對於兩個巢狀關係的塊元素,如果父元素沒有上內邊距及上邊框,則父元素的上外邊距會與子元素的上外邊距合併,合併後的外邊距為兩者中的較大者。即使父元素的上外邊距為0,也會發生合併

解決方案:

在父標籤設定上邊框border:1px solid black或設定上內邊距padding-top:1px或為父標籤設定overflow: hidden;

帶動畫和滑鼠覆蓋顯示盒子陰影:

效果展示:

(1)元素浮動之後會盡量向頁面的左邊或右邊漂浮,直到遇到父元素的邊框或者其他浮動元素

(2)如果浮動元素的上邊是乙個沒有浮動的塊元素,則浮動元素不會超過塊元素

(3)浮動的元素不會超過他上邊的兄弟元素,最多和他排一行

(4)浮動的元素不會遮蓋文字,文字會自動環繞在浮動元素周圍,所以我們可以用浮動來設定文字環繞效果

(5)當元素設定了浮動以後,就會完全脫離文件流,塊級元素脫離了文件流之後,高度和寬度都需要靠內容撐開    

(6)開啟span浮動,內聯元素脫離文件流以後可以設定寬高

在文件流中,父元素的高度預設是靠子元素撐開的,也就是子元素有多高,父元素就有多高,當子元素設定浮動以後,子元素就會完全脫離文件流,此時就會導致子元素無法撐開父元素高度,就導致了父元素的高度塌陷,由於父元素的高度塌陷了,則父元素下邊的元素就會向上移動,導致頁面布局混亂。

根據w3c的標準,在頁面中的元素都有乙個隱含的屬性block formatting context 簡稱bfc,該屬性可以設定開啟或關閉,開啟了bfc的元素可以包含浮動的子元素(ie6不支援bfc屬性)。

解決父元素高度塌陷方法(也可以作為清除浮動的方法    面試題!!!):

1、 開啟bfc(塊級格式化上下文)

(1)設定元素浮動==> 不推薦,使用這種方式開啟,雖然可以撐開父元素,但是會導致父元素的寬度丟失,而且使用這種方式也會導致下邊的元素上移,導致頁面混亂

(2)設定元素為inline-block==> 父元素會丟失寬度

(3)將元素的overflow設定為乙個非visible的值==> 最推薦設定overflow: hidden

2、清除浮動:

(1)給浮動元素的後面新增空div,設定clear:both,例如:

優點:簡單且相容性好

缺點:容易造成結構混亂,不利於後期維護 

(2)通過after偽元素清除浮動,設定clear:both

CSS 浮動,高度塌陷和BFC,清除浮動

通過浮動,可以使乙個元素向其父元素的左側或右側移動,使用 float 屬性來設定元素的浮動 可選值 注意 未設定浮動 設定浮動 浮動的特點 浮動元素會完全脫離文件流,不再佔據文件流中的位置 設定浮動以後元素會向父元素的左側或右側移動 浮動元素預設不會從父元素中移出 浮動元素向左或向右移動時,不會超過...

CSS 浮動高度塌陷問題及清浮動

出現原因 1.子元素浮動 2.父元素無浮動 3.父元素高度為自動 也就是沒有設定高度 lang en charset utf 8 name viewport content width device width,initial scale 1.0 indextitle html,body,ul,li...

css高度塌陷問題

首先什麼是高度塌陷?當我們需要給頁面設定自適應寬高的時候,在文件流中,父元素的高度預設的情況下是被子元素的高度撐開的,子元素的高度就是父元素的高度,當我們給子元素設定了浮動厚,子元素就會脫離文件流 當你第一次給父元素設定自適應的時候,又給子元素設定浮動元素的時候,你就會發現,父元素的高度沒有了,這就...