本章較早前討論過網(wǎng)頁設(shè)計中浮動元素的包含塊。對于浮動元素,其包含塊定義為最近的塊級祖先元素。對于定位,情況則沒有這么簡單。CSS2.1定義了以下行為:
“根元素”的包含塊(也稱為初始包含塊)由用戶代理建立,在HTML中,根元素就是html元素,不過有些瀏覽器會使用body作為根元素。在大多數(shù)瀏覽器中,初始包含塊是一個視窗大小的矩形。
對于一個非根元素,如果其position值是relative或static,包含塊則由最近的塊級框、表單元格或行內(nèi)塊祖先框的內(nèi)容邊界構(gòu)成。
對于一個非根元素,如果其position值是absolute,包含塊設(shè)置為最近的position值不是static的祖先元素(可以是任何類型)。這個過程如下:
—如果這個祖先是塊級元素,網(wǎng)站建設(shè)包含塊則設(shè)置為該元素的內(nèi)邊距邊界,換句話說,就是由邊框界定的區(qū)域。
—如果這個祖先是行內(nèi)元素,包含塊則設(shè)置為該祖先元素的內(nèi)容邊界。在從左向右讀的語言中,包含塊的上邊界和左邊界是該祖先元素中第一個框內(nèi)容區(qū)的上邊界和左邊界,包含塊的下邊界和右邊界是最后一個框內(nèi)容區(qū)的下邊界和右邊界。在從右向左讀的語言中,包含塊的右邊界對應(yīng)于第一個框的右內(nèi)容邊界,包含塊的左邊界則取自最后一個框的左內(nèi)容邊界。上下邊界也是一樣。
—如果沒有祖先,元素的包含塊定義為初始包含塊。
這里有一點很重要:網(wǎng)站建設(shè)里元素可以定位到其包含塊的外面。這與浮動元素使用負(fù)外邊距浮動到其父元素內(nèi)容區(qū)外面很類似。這也說明,“包含塊”一詞實際上應(yīng)該是“定位上下文”,不過,由于規(guī)范使用的是“包含塊'所以我也沿用了這個說法(我已經(jīng)在盡力減少由此帶來的誤解,真的!)。
當(dāng)前文章標(biāo)題:網(wǎng)頁設(shè)計中的包含塊
當(dāng)前URL:http://www.gtalker.cn/news/wzzz/containing-block.html