position 有五個值:static、relative、absolute、fixed、inherit。html
是默認值。就是按正常的佈局流從上到下從左到右佈局,日常咱們作網頁時,沒有指定 position,也就表示使用 static。web
沒有脫離佈局流,此時能夠使用 top、right、bottom、left 屬性。瀏覽器
relative 是相對位置,指相對於元素的 position 爲 static 時的位置:ide
使用 relative 以後:佈局
脫離佈局流,此時能夠使用 top、right、bottom、left,但這些屬性再也不是相對於 static 時的位置,而是相對於 containing block 的,相對於其邊框內邊緣的,而不是其 padding 內邊緣。也就是相對於最近的 position不是static的塊級祖先元素盒子進行定位。flex
使用 absolute 以後:spa
它的模式與 absolute 相同,不過不管怎麼拖動滾動條,它始終固定在屏幕的指定位置。在 IE6 中不支持這個屬性;在 IE7 中支持這個屬性但須要指明 DOCTYPE;Firefox 等瀏覽器支持這個屬性。code
top、right、bottom、left 屬性指相對於視口的。orm
繼續父元素的 position 值。htm
如何肯定包含塊:
肯定包含塊的過程徹底依賴於這個包含塊的 position
屬性:
static
或 relative
的話,包含塊就是由它的最近的祖先塊元素(好比說inline-block, block 或 list-item元素)或格式化上下文(好比說 a table container, flex container, grid container, or the block container itself)的內容區的邊緣組成的。fixed
, absolute
, relative
, or sticky
)的祖先元素的內邊距區的邊緣組成的。transform
or perspective
value other than none
will-change
value of transform
or perspective
filter
value other than none
or a will-change
value of filter
(only works on Firefox).注意: 根元素(<html>)所在的包含塊是一個被稱爲初始包含塊的矩形。It has the dimensions of the viewport (for continuous media) or the page area (for paged media).
如上所述,若是某些屬性被賦予一個百分值的話,它的計算值是由這個元素的包含塊計算而來的。這些屬性包括盒模型屬性和偏移屬性: