包含塊(Containing Block)
某個元素的尺寸和位置的計算往往是由該元素所在的包含塊決定的,包含塊不會特指某個元素區(qū)域,而是一塊視覺假想出來的一塊區(qū)域,理解了他就可以方便的為元素進行定位。
那怎么知道一個元素的包含塊在哪呢?
-
初始包含塊
用戶代理(比如瀏覽器)選擇根元素作為 containing block(稱之為初始 containing block)。當html的子元素沒有其他跟親近的包含塊時,會依靠初始包含塊進行定位、
初始包含塊的大???即視口大小,,高度不會隨著html的增大而增大。 -
非絕對定位的元素,其包含塊為最近的塊級祖先元素盒子的內容邊界組成。
浮動元素也是如此,從內容邊界開始。 -
絕對元素的包含塊由最近的 position 不是 static 的祖先建立
其實這個比較復雜,需要考慮該絕對元素的包含塊是內聯還是塊級元素創(chuàng)建的。內聯的情況兼容性比較差,所以一般都避免讓內聯元素里面去包含塊級元素,所以大部分還都是由塊級元素創(chuàng)建包含塊。
其containing block 由祖先的border內邊界形成。 - 如果元素有屬性 'position:fixed',containing block 由視口建立