position 属性有哪些值,各有什么特点?

html-css053

position 属性有哪些值,各有什么特点?,第1张

position 有以下可选值:

其中,CSS 定位机制:

CSS 有三种基本的定位机制:普通流、浮动和绝对定位。

除非专门指定,否则所有框都在普通流中定位。也就是说,普通流中的元素的位置由元素在 (X)HTML 中的位置决定。

块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来。

行内框在一行中水平布置。可以使用水平内边距、边框和外边距调整它们的间距。但是,垂直内边距、边框和外边距不影响行内框的高度。由一行形成的水平框称为 行框(Line Box) ,行框的高度总是足以容纳它包含的所有行内框。不过,设置行高可以增加这个框的高度。

绝对定位 ,绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于 <html> :

固定定位 ,与绝对定位相似,但元素的包含块为 viewport 视口。该定位方式常用于创建在滚动屏幕时仍固定在相同位置的元素。在下面的示例中,"one" 元素定位在离页面顶部 80px,离页面左侧 20px 的位置。

相对定位 ,相对于其正常位置进行定位,不影响其他元素的偏移。

粘性定位 ,可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位

这是一个结合了 position:relative 和 position:fixed 两种定位功能于一体的特殊定位。常见的吸顶、吸底(头部返回栏,底部切换栏等)的效果都是使用这个属性:

注意:

静态定位 ,HTML 元素默认情况下的定位方式为 static(静态),静态定位的元素不受 top、bottom、left 和 right 属性的影响,它始终根据页面的正常流进行定位

inherit 值如同其他 css 属性的 inherit 值,即继承父元素的 position 值。

Position属性确认元素的定位

static 是默认定位值,它的定位元素不受top、left、right、bottom的影响,也就是说你给元素设置这四个属性的任何值都没有效果

relative 相对定位,设置相对定位元素的top、left、right、bottom会使当前元素相对于当前位置做一定的偏移。

比如说在做表单布局的时候,有时候label的值并没有和输入框上下居中对齐,它有一点点偏下,效果不是很好看,这个时候我们可以给label向上设置一下偏移让他们居中对齐

absolute是绝对定位,绝对定位的元素相对于最近的定位祖先元素进行定位,如果没有定位祖先元素,那么就按body定位

absolute最典型的例子就是结合relative一块完成效果,比如我有一个p,它是在页面居中的,但是它的宽度和高度是动态的,我们还有一个span标签希望永远在这右下角10px的位置,这个时候我们就可以利用absolute完成

fixed 是相对视口定位的,简称浮云定位,这个意味着就像你滚动页面,它始终位于同一个位置,top、left、right、bottom用于设置当前元素的位置。

常用的例子就是页面右下角,滚动到顶部的的功能,我们可以对这个元素设置fixed浮动定位,当用户一直向下滚动浏览网页后,想一下子回到顶部,它只要点这个元素就行了,因为之个元素是浮云定位,所以永远是在用户可视范围的右下角

CSS position 属性用于指定一个元素在文档中的定位方式。 top , right , bottom 和 left 属性则决定了该元素的最终位置。

所有html元素初始 position 都是默认 static ,此时 top , left , right , bottom 和 z-index 属性无效。

相对于 static ,此时 top , left , right , bottom 和 z-index 属性有效。但 position:relative 对 table-*-group , table-row , table-column , table-cell , table-caption 元素无效。

元素会被移出正常文档流,并不为元素预留空间,通过指定元素相对于最近的 static 定位祖先元素的偏移,来确定元素位置。绝对定位的元素可以设置外边距( margins ),且不会与其他边距合并。

元素会被移出正常文档流,并不为元素预留空间,而是通过指定元素相对于屏幕视口( viewport )的位置来指定元素位置。元素的位置在屏幕滚动时不会改变。打印时,元素会出现在的每页的固定位置。fixed 属性会创建新的层叠上下文。当元素祖先的 transform , perspective 或 filter 属性非 none 时,容器由视口改为该祖先。

元素根据正常文档流进行定位,然后相对它的 最近滚动祖先 和 containing block (最近块级祖先),包括 table-related 元素,基于 top , right , bottom , 和 left 的值进行偏移。偏移值不会影响任何其他元素的位置。