Skip to content

CSS Layout - 浮動

float 是 CSS 中的一個屬性,用於將元素從正常的文檔流中移出,並使其向左或向右對齊。這個屬性在早期的網頁排版中非常普遍,但隨著 FlexboxGrid 的出現,使用頻率已逐漸減少。

文檔流 (Normal Flow)

是指瀏覽器的正常排版規則,包含 區塊元素 會往下延伸,杭內元素 會並排直到沒有空間才會往下延伸。

float

  • none: 元素不浮動,保持在正常文檔流,預設值。
  • left: 元素浮動到容器的左側,後續內容會環繞在右側。
  • right: 元素浮動到容器的右側,後續內容會環繞在左側。
  • inherit: 繼承父元素的 float 屬性值。

WARNING

浮動元素會脫離正常文檔流,導致版面錯亂。

繞圖排文

以下是一個簡單的例子,展示如何使用 float 讓圖片浮動並讓文字環繞它。

解決父元素高度遺失的問題

clear

當使用 float 時,後續的元素會受到浮動元素的影響,導致父層容器的高度塌陷。為了解決這個問題,可以使用 clear 屬性來解決這個問題,讓元素恢復到正常的流向中。

  • none: 不清除浮動,元素可以與浮動元素並排,預設值。
  • left: 清除左側的浮動,元素會移到左側浮動元素的下方。
  • right: 清除右側的浮動,元素會移到右側浮動元素的下方。
  • both: 同時清除左右兩側的浮動,元素會移到所有浮動元素的下方。
  • inherit: 繼承父元素的 clear 屬性值。

在 HTML 增加空元素

早期瀏覽器還不是很強大時,會在 HTML 文件中加入 <span> 元素,且利用此元素來進行 clear 屬性的操作。如下方所示:

TIP

clear 屬性可清除左側或右側,一般來說,會建議使用 both 來同時清除兩側。這樣一來,就不用顧慮前面的元素是設定 float: left;float: right;

使用偽元素

在複雜的版面中,到處充斥著水平排列的呈現,相對地,也就會產生出無數個空元素。這些元素只是為了讓排版正常而存在,對於使用者閱讀網頁內容並無特別的意義,無形中也會讓 HTML 文件愈來愈肥大。隨著瀏覽器的進步,我們便可以使用 偽元素 來解決空元素的問題。如果對於 偽元素 不熟悉可以複習一下。