一切皆為框
div、h1 或 p 元素常常被稱為塊級元素。這意味着這些元素顯示為一塊内容,即“塊框”。與之相反,span 和 strong 等元素稱為“行内元素”,這是因為它們的内容顯示在行中,即“行内框”。
您可以使用 display 屬性改變生成的框的類型。這意味着,通過将 display 屬性設定為 block,可以讓行内元素(比如 元素)表現得像塊級元素一樣。還可以通過把 display 設定為 none,讓生成的元素根本沒有框。這樣的話,該框及其所有内容就不再顯示,不占用文檔中的空間。
CSS定位機制
CSS 有三種基本的定位機制:普通流、浮動和絕對定位。
除非專門指定,否則所有框都在普通流中定位。也就是說,普通流中的元素的位置由元素在 (X)HTML 中的位置決定。
塊級框從上到下一個接一個地排列,框之間的垂直距離是由框的垂直外邊距計算出來。
行内框在一行中水準布置。可以使用水準内邊距、邊框和外邊距調整它們的間距。但是,垂直内邊距、邊框和外邊距不影響行内框的高度。由一行形成的水準框稱為行框(Line Box),行框的高度總是足以容納它包含的所有行内框。不過,設定行高可以增加這個框的高度。
CSS position 屬性
通過使用 position 屬性,我們可以選擇 4 種不同類型的定位,這會影響元素框生成的方式。
position 屬性值的含義:
-
static
元素框正常生成。塊級元素生成一個矩形框,作為文檔流的一部分,行内元素則會建立一個或多個行框,置于其父元素中。
-
relative
元素框偏移某個距離。元素仍保持其未定位前的形狀,它原本所占的空間仍保留。
-
absolute
元素框從文檔流完全删除,并相對于其包含塊定位。包含塊可能是文檔中的另一個元素或者是初始包含塊。元素原先在正常文檔流中所占的空間會關閉,就好像元素原來不存在一樣。元素定位後生成一個塊級框,而不論原來它在正常流中生成何種類型的框。
-
fixed
元素框的表現類似于将 position 設定為 absolute,不過其包含塊是視窗本身。
提示:相對定位實際上被看作普通流定位模型的一部分,因為元素的位置相對于它在普通流中的位置。