「重新認識 CSS」這個系列名稱的由來就如其名,我想要重新認識它。雖然以前就有學過 CSS,但這次想從 CSS Spec 中學到最原始的定義和內容,更加了解 CSS 的原理,讓我在切版的時候可以更加確定自己在做什麼,我踩到的雷只是因為我不夠了解它才會炸開。
在這 30 天的內容中,會將 Spec 內看到的資料整理成這個系列,也希望正在學 CSS 的各位可以更加了解它。另外我也會同時將文章發至我的 Blog,如果想直接看文內的程式碼 Demo 畫面,可以到我的 Blog 來看。
「重新認識 CSS」系列文章發文於:
formatting context 是一組相關 box 所在的環境。不同的 formatting context 會根據不同的規則來佈局它們的 box。
例如:
以下是 MDN 對於在何種情境下會建立 BFC 的定義:
以下情境會建立 BFC:
- 文件中的 root 元素 (在 HTML 中是
html
元素)float
屬性不為none
的元素position
屬性為absolute
或fixed
的元素display
屬性為inline-block
、flow-root
、table-cell
或table-caption
的元素- 由
display
屬性為table
、table-row
、table-row-group
、table-header-group
、table-footer-group
或inline-block
的元素 implicitly 建立的 anonymous table celloverflow
屬性不為visible
的 block 元素contain
屬性為layout
、content
或paint
的元素- flex item (
display
屬性為flex
或inline-flex
的元素的子元素)- grid item (
display
屬性為grid
或inline-grid
的元素的子元素)- multicol container (
column-count
或column-width
屬性不為auto
的元素,包含column-count: 1
的元素)column-span: all
應該始終建立一個新的 formatting context,即使該元素沒有包含在 multicol container 中
float 的定位和 clear 規則都只會適用於同一個 BFC 中的內容:
float
屬性不會影響其他 BFC 中的內容佈局clear
屬性只能 clear 同一個 BFC 中有設定 clear
屬性的元素之前的 float 元素,不會影響到元素本身內部或其他 BFC 中的 float 元素資料來源: