css三大常規佈局

常規流

盒模型:規定單個盒子的規則

視覺格式化模型(佈局規則):頁面中的多個盒子排列規則

視覺格式化模型,大體上將頁面中盒子的排列分爲三種方式:

  1. 常規流
  2. 浮動
  3. 定位

常規流佈局

常規流、文檔流、普通文檔流、常規文檔流

所有元素,默認情況下,都屬於常規流佈局

總體規則:塊盒獨佔一行,行盒水平依次排列

包含塊(containing block):每個盒子都有它的包含塊,包含塊決定了盒子的排列區域。

絕大部分情況下:盒子的包含塊,爲其父元素的內容盒

塊盒

1.每個塊盒的總寬度,必須剛好等於包含塊的寬度

寬度的默認值是auto

margin的取值也可以是auto,默認值0

auto:將剩餘空間吸收掉

width吸收能力強於margin

若寬度、邊框、內邊距、外邊距計算後,仍然有剩餘空間,該剩餘空間被margin-right全部吸收

在常規流中,塊盒在其包含快中居中,可以定寬、然後左右margin設置爲auto。(position:relative)

2.每個塊盒垂直方向上的auto值

height:auto, 適應內容的高度

margin:auto, 表示0
3. 百分比取值

padding、寬、margin可以取值爲百分比

以上的所有百分比相對於包含塊的寬度。

高度的百分比:

1). 包含塊的高度是否取決於子元素的高度,設置百分比無效
2). 包含塊的高度不取決於子元素的高度,百分比相對於父元素高度
4. 上下外邊距的合併

兩個常規流塊盒,上下外邊距相鄰,會進行合併。

兩個外邊距取最大值。

浮動

視覺格式化模型,大體上將頁面中盒子的排列分爲三種方式:

  1. 常規流
  2. 浮動
  3. 定位

應用場景

  1. 文字環繞
  2. 橫向排列

浮動的基本特點

修改float屬性值爲:

  • left:左浮動,元素靠上靠左
  • right:右浮動,元素靠上靠右

默認值爲none

  1. 當一個元素浮動後,元素必定爲塊盒(更改display屬性爲block)
  2. 浮動元素的包含塊,和常規流一樣,爲父元素的內容盒

盒子尺寸

  1. 寬度爲auto時,適應內容寬度
  2. 高度爲auto時,與常規流一致,適應內容的高度
  3. margin爲auto,爲0.
  4. 邊框、內邊距、百分比設置與常規流一樣

盒子排列

  1. 左浮動的盒子靠上靠左排列
  2. 右浮動的盒子考上靠右排列
  3. 浮動盒子在包含塊中排列時,會避開常規流塊盒
  4. 常規流塊盒在排列時,無視浮動盒子
  5. 行盒在排列時,會避開浮動盒子
  6. 外邊距合並不會發生

如果文字沒有在行盒中,瀏覽器會自動生成一個行盒包裹文字,該行盒叫做匿名行盒。

高度坍塌

高度坍塌的根源:常規流盒子的自動高度,在計算時,不會考慮浮動盒子

清除浮動,涉及css屬性:clear

  • 默認值:none
  • left:清除左浮動,該元素必須出現在前面所有左浮動盒子的下方
  • right:清除右浮動,該元素必須出現在前面所有右浮動盒子的下方
  • both:清除左右浮動,該元素必須出現在前面所有浮動盒子的下方

補充

  • 左浮動的盒子向上向左排列
  • 右浮動的盒子向上向右排列
  • 浮動盒子的頂邊不得高於上一個盒子的頂邊
  • 若剩餘空間無法放下浮動的盒子,則該盒子向下移動,直到具備足夠的空間能容納盒子,然後再向左或向右移動

定位

視覺格式化模型,大體上將頁面中盒子的排列分爲三種方式:

  1. 常規流
  2. 浮動:float
  3. 定位:position

浮動和定位元素寬度呈包裹性

定位:手動控制元素在包含塊中的精準位置

涉及的CSS屬性:position

position屬性

  • 默認值:static,靜態定位(不定位)
  • relative:相對定位
  • absolute:絕對定位
  • fixed:固定定位

一個元素,只要position的取值不是static,認爲該元素是一個定位元素。

定位元素會脫離文檔流(相對定位除外)

一個脫離了文檔流的元素:

  1. 文檔流中的元素擺放時,會忽略脫離了文檔流的元素
  2. 文檔流中元素計算自動高度時,會忽略脫離了文檔流的元素

相對定位

不會導致元素脫離文檔流,只是讓元素在原來位置上進行偏移。

可以通過四個CSS屬性對設置其位置:

  • left
  • right
  • top
  • bottom

盒子的偏移不會對其他盒子造成任何影響。

絕對定位

  1. 寬高爲auto,適應內容
  2. 包含塊變化:找祖先中第一個定位元素,該元素的填充盒爲其包含塊。若找不到,則它的包含塊爲整個網頁(初始化包含塊)

固定定位

其他情況和絕對定位完全一樣。

包含塊不同:固定爲視口(瀏覽器的可視窗口)

固定定位和絕對定位一開始left 和 right都有值,而且優先級最低。視口總寬度 = margin + padding + width + left

定位下的居中

某個方向居中:

  1. 定寬(高)
  2. 將左右(上下)距離設置爲0
  3. 將左右(上下)margin設置爲auto

絕對定位和固定定位中,margin爲auto時,會自動吸收剩餘空間

多個定位元素重疊時

堆疊上下文

設置z-index,通常情況下,該值越大,越靠近用戶

只有定位元素設置z-index有效

z-index可以是負數,如果是負數,則遇到常規流、浮動元素,則會被其覆蓋

補充

  • 絕對定位、固定定位元素一定是塊盒
  • 絕對定位、固定定位元素一定不是浮動
  • 沒有外邊距合併
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章