浮動佈局(Float)
float 讓元素靠左或靠右,後續的行內內容會環繞它。這是早期多欄排版的主力;現在版面請改用 Flex / Grid,float 留給「圖片 + 正文環繞」這類印刷式排版。
float 屬性
| 值 | 意義 |
|---|---|
left / right |
向該側浮動 |
none |
不浮動(預設) |
inline-start / inline-end |
邏輯方向,隨書寫方向 |
浮動元素會離開正常流,父層如果只剩浮動子元素,高度會塌成 0。
文字環繞圖片
清除浮動
clear
| 值 | 意義 |
|---|---|
left / right |
不允許該側還有浮動 |
both |
兩側都不允許 |
BFC 與 clearfix
讓父層包住浮動子元素的常見做法:
.gallery {
display: flow-root; /* 建立 BFC,現代首選 */
}
/* 舊專案仍看得到的 clearfix */
.clearfix::after {
content: "";
display: block;
clear: both;
}
overflow: auto 也能包住浮動,但可能多出捲軸,較不建議當佈局技巧。
兩欄(僅供理解舊程式)
.layout::after {
content: "";
display: block;
clear: both;
}
.sidebar { float: left; width: 30%; }
.content { float: right; width: 70%; }
這種寫法對不齊高度、難做 RWD。同等需求請用:
為什麼現在少用
- 父層高度塌陷,要額外 clear
- 無法輕鬆垂直置中或等分剩餘空間
- 來源順序與視覺順序綁得很死
- 響應式要寫大量
float: none
總結
| 需求 | 建議 |
|---|---|
| 文繞圖 | float + display: flow-root 包住 |
| 導覽、工具列、卡片列 | Flex |
| 整頁欄位、畫廊 | Grid |
與 position 的分工見 浮動與定位比較。