CSS position
属性用于指定一个元素在文档中的定位方式。top
,right
,bottom
和 left
属性则决定了该元素的最终位置。
一、static(正常文档流
)
所有html元素初始position
都是默认static
,此时top
,left
,right
,bottom
和z-index
属性无效。
二、relative
相对于static
,此时top
,left
,right
,bottom
和z-index
属性有效。但position:relative
对table-*-group
, table-row
,table-column
, table-cell
, table-caption
元素无效。
三、absolute(脱离文档流
)
元素会被移出正常文档流,并不为元素预留空间,通过指定元素相对于最近的非static
定位祖先元素的偏移,来确定元素位置。绝对定位的元素可以设置外边距(margins
),且不会与其他边距合并。
四、fixed(脱离文档流
)
元素会被移出正常文档流,并不为元素预留空间,而是通过指定元素相对于屏幕视口(viewport
)的位置来指定元素位置。元素的位置在屏幕滚动时不会改变。打印时,元素会出现在的每页的固定位置。fixed 属性会创建新的层叠上下文。当元素祖先的 transform
, perspective
或 filter
属性非 none
时,容器由视口改为该祖先。
五、sticky(正常文档流
)
元素根据正常文档流进行定位,然后相对它的最近滚动祖先和 containing block (最近块级祖先),包括table-related元素,基于top
, right
, bottom
, 和 left
的值进行偏移。偏移值不会影响任何其他元素的位置。