當前位置:編程學習大全網 - 編程語言 - CSS——知識點補充(四)元素的浮動屬性

CSS——知識點補充(四)元素的浮動屬性

通過浮動可以使壹個元素向其父元素的左側或右側移動,我們使用float屬性來設置於元素的浮動

註意,元素設置浮動以後,水平布局的等式便不需要強制成立 。元素設置浮動以後,會完全從文檔流中脫離,不再占用文檔流的位置,所以元素下邊的還在文檔流中的元素會自動向上移動

(2)設置浮動以後元素會向父元素的左側或右側移動,

(3)浮動元素默認不會從父元素中移出

(4)浮動元素向左或向右移動時,不會超過它前邊的其他浮動元素

(5)如果浮動元素的上邊是壹個沒有浮動的塊元素,則浮動元素無法上移

(6)浮動元素不會超過它上邊的浮動的兄弟元素,最多最多就是和它壹樣高

實際上,浮動屬性壹開始創建出來的原因就是為了實現文字環繞的效果的,只是後來大家發現利用浮動可以很好地處理頁面布局的問題,所以現在更多時候是利用它來做布局的功能。。。

我們知道,塊元素和行內元素在文檔流中都有著各自的布局特點,比如塊元素獨占壹行等。那麽如果脫離了文檔流,塊元素和行內元素分別會有什麽樣的影響呢?

1、塊元素不在獨占頁面的壹行

2、脫離文檔流以後,塊元素的寬度和高度默認都被內容撐開

1、行內元素脫高文檔流以後會變成塊元素,特點和塊元素壹樣

也就是說,壹旦脫離文檔流以後,我們就不需要再區分塊和行內了。

我們可以看壹下下面的案例,在沒有使用 clear 屬性前,對於兩個兄弟元素,如果前者設置為浮動,那麽由於其脫離了文檔流,那麽後者就會移動到前者原先的位置上。如果我們不想元素受到其他元素的浮動影響,那麽就可以通過設置 clear 屬性來解決這個問題。

clear底層實現的原理是:設置清除浮動以後,瀏覽器會自動為元素添加壹個margin,以使其位置不受其他元素的影響

我們可以看下面這個案例,父 div 元素中包含著壹個設置為浮動的 div 子元素,由於子元素設置為浮動,脫離了文檔流,且父元素中沒有指定高度,所以此時壹旦子元素脫離了文檔流後,就缺少了支撐起父元素高度的元素。相比於這樣的效果,我們更希望即使子元素設置為浮動,但父元素依然可以包裹住子元素(或者說是有著子元素的高度,不至於塌陷)。

BFC(Block Formatting Context)塊級格式化環境

BFC是壹個css中的壹個隱含的屬性, 當元素開啟BFC後,該元素會變成壹個獨立的布局區域 。可以理解為,此時元素內的後代元素不會再把其他樣式傳遞到外面了。

元素開啟BFC後的特點;

1.開啟BFC的元素不會被浮動元素所覆蓋

2.開啟BFC的元素子元素和父元素外邊距不會重疊

3.開啟BFC的元素可以包含浮動的子元素

可以通過壹些特殊方式來開啟元素的BFC

1、設置元素的浮動(不推薦)

2、將元素設置為行內塊元素(不推薦)

需要註意的是,雖然開啟元素的BFC環境可以解決高度塌陷的問題,但是這還不是最完美的解決方案,在某些特殊的環境下還是會有問題。

我們回顧壹下,高度塌陷產生的原因是什麽?主要是因為父元素沒有設置高度,所以父元素的高度由子元素的高度決定,壹旦子元素設置為浮動後脫離了文檔流,那麽此時父元素就會由於沒有子元素的支撐而塌陷。

那麽如果我們能夠實現,手動在浮動的子元素後面放入壹個無內容的塊元素,且清除其受到的 float 影響,那麽此時這個塊元素就會落在浮動的元素下方,又由於(自身沒有設置高度的)父元素的高度由子元素的高度決定,所以此時父元素因為要包裹新增的無內容塊元素,也就自然可以包裹浮動的元素了。

所謂的clearfix樣式,其實核心就是在第二種解決方式的基礎上,對樣式做壹個進壹步的封裝,使其既可以解決高度塌陷的問題,還可以解決父子元素外邊距重疊的問題。

  • 上一篇:perl和python各自擅長什麽領域?
  • 下一篇:用MTALAB編程實現四階龍格庫塔解二元二階微分方程組
  • copyright 2024編程學習大全網