定位和布局。

2022-09-08 01:57:16 字數 3016 閱讀 7995

一、基本概念

視覺格式化模型:css的一種機制,它規定了頁面中的多個盒子如何布局

•       視覺格式化模型是一套非常複雜的機制,包含錯綜複雜的css規範

•       本章的課程從實用的角度出發,僅學習在劃分頁面區域的時候需要的核心知識

•       由於劃分頁面區域時幾乎都使用的是塊盒,因此,本章仍然只涉及塊盒

視口:一種視覺化的視窗,大小和內容無關

包含塊(containing block):每個元素都有乙個包含塊,它是指元素在頁面中擺放的區域

通常情況下,元素的包含塊是它父元素的內容盒(content-box)

html沒有父元素,是初始化包含塊

二、定位體系概述

元素在包含塊中的尺寸和位置,主要受到兩個因素的影響:元素的盒模型和定位體系

定位體系一共有三種:

常規流(normal flow)

浮動(float)

絕對定位(absolute positioned)

不同的定位體系中,元素在包含塊中的尺寸和位置會有一些差異。

定位體系判定:

如果某個元素,分別為它宣告了下面的樣式:

position:absolute; 定位體系是:絕對定位

float:left; 定位體系是:浮動

position:absolute; float:left; 定位體系是:絕對定位

position:static; float:left; 定位體系是:浮動

/* 未宣告樣式 */定位體系是:常規流體系

三、盒模型和定位體系

盒模型就是盒子的尺寸,定位體系等於盒子位置

盒模型中的尺寸:

margin:px、em、%、auto

border:px、em

padding:px、em、%

width:px、em、%、auto

height:px、em、%、auto

margin、padding、width的百分比:是包含塊寬度的百分比

盒模型中的尺寸 — auto

尺寸受到定位體系的影響,不同的定位體系,auto的計算規則不一樣

常規流,浮動,絕對定位:對auto值的影響,對盒子在包含塊中位置的影響

四、常規流

常規流,又叫做普通流、文件流、普通文件流,是最常見的定位體系,所有元素預設都是常規流。

水平方向:如果不行,則強行將margin-right設定為auto

常規流盒子水平方向上的尺寸,必須等於包含塊的寬度。

垂直方向:margin為auto:0px

height為auto:適應內容的高度

盒子位置:依次擺放:按照html元素的書寫順序從上到下擺放

盒子在包含塊中佔據的尺寸是整個盒子的尺寸

垂直方向上,若兩個外邊距相鄰,則進行合併(摺疊)

垂直方向:水平方向上的外邊距不會合併

外邊距相鄰:兩個外邊距之間沒有border、padding和content

合併:均為正數取最大,均為負數取最小,一正一負則相加

浮動:當元素為left和right時為浮動

盒子位置:

左浮動的盒子向上向左排列

右浮動的盒子向上向右排列

浮動盒子的頂邊不得高於上乙個盒子的頂邊

若剩餘空間無法放下浮動的盒子,則該盒子向下移動,直到具備足夠的空間能容納盒子,然後再向左或向右移動

五、當常規流遇上浮動

常規流盒子和浮動盒子混合擺放

清除浮動

常規流盒子和浮動盒子混合擺放

浮動盒子在擺放時,要避開常規流盒子

常規流盒子在擺放時,無視浮動盒子

常規流盒子的自動高度計算時,無視浮動盒子

高度坍塌:常規流盒子的高度無視浮動盒子

清除浮動:clear

none:不清除浮動

left:清除左浮動,元素在左浮動的盒子下方擺放

right:清除右浮動,元素在右浮動的盒子下方擺放

both:清除左右浮動,元素在浮動的盒子下方擺放

對最後乙個子元素使用clear:both,可防止父元素高度坍塌

六、盒子的相對位置

是指相對於盒子在原本定位體系下的位置,position屬性設定為relative,以啟用相對位置

取值:static:靜態位置,盒子在原本定位體系下的位置

relative:相對位置,盒子相對於原本的位置進行偏移

absolute:絕對位置

fixed:固定位置

盒子偏移後,不會對其他盒子造成任何影響。left,right,top,botton只能出現兩個

絕對定位:如果元素被設定為絕對定位,float屬性會被強制設定為none

絕對定位元素不會對其他任何元素造成任何影響

絕對定位可以通過left,right,botton,top來設定

七、堆疊級別

堆疊級別(stack level):它決定了元素誰顯示在前誰顯示在後

通常情況下,堆疊級別越高,顯示越靠前

通過z-index屬性可設定元素的堆疊級別

使用z-index屬性時需要注意的:不要用於靜態位置的元素,盡量不要使用z-index

八、塊級格式化上下文

全稱block formatting context,簡稱bfc

它是一塊獨立的渲染區域,它規定了在該區域中,常規流塊盒的布局:常規流塊盒在水平方向上,必須撐滿包含塊

常規流塊盒在包含塊的垂直方向上依次擺放

常規流塊盒若外邊距無縫相鄰,則進行外邊距合併

常規流塊盒的自動高度和擺放位置,無視浮動元素

建立bfc的元素,隔絕了它內部和外部的聯絡,內部的渲染不會影響到外部

具體規則:

建立bfc的元素,它的自動高度需要計算浮動元素

建立bfc的元素,它的邊框盒不會與浮動元素重疊

建立bfc的元素,不會和它的子元素進行外邊距合併

布局和定位

網頁的三種布局 流動模型 flow flow 預設的網頁布局模型。浮動模型 flow 可以讓塊級元素顯示在一行,用到float left right 層模型 layer 層模型有三種形式 a position absolute 這種形式將元素從文件流中拖出,然後用left,right,top,bot...

定位和布局

定位和布局 1 1 視覺格式化模型 1 2 視口 1 2 包含塊 2 1 定位體系概述 常規流 normal flow 浮動 float 絕對定位 absolute positioned 2 2 定位體系判定 position 絕對定位為預設值static float 浮動預設值為 none 預設情...

css 布局和定位

首先,我們說一下flow,實際上就是從html在上面開始,從上到下沿著元素流逐個顯示。對於塊元素,從上到下布局。對於塊元素中的內聯元素,從左上方流向右下方。對於內聯元素我們需要注意間距問題 1.對於併排放置的兩個內聯元素,中間外邊距不會重疊。所以最終兩個元素中間相差兩個外邊距之和。2.對於上下放置的...