css的absolute与relative问题

html-css09

css的absolute与relative问题,第1张

positon有4个属性:static relative absolute fixed,默认的时候是static即静止定位,是按照元素在(x)html出现的顺序依次分配位置,static是不受top right left bottom影响的.当父层a的position设为relative(相对定位) 子层b的position设为(绝对定位)时,b的偏移是相对于父层a来定位,例如top:10px的偏移量就使b的顶部和a的顶部有10px的距离.但是如果a没有设置relative 而b设为absolute,b的定位就是相对于浏览器进行,此时top:10px会使b出现在离浏览器上方10px的地方.自己试下就最清楚了.

具体知识:

relative: http://www.w3school.com.cn/css/css_positioning_relative.asp

absolute: http://www.w3school.com.cn/css/css_positioning_absolute.asp

ABSOLUTE是绝对,定了就不会变了,relative是相对,如果在前面或者或写影响的位置加了一个标签,会引起位置的变化

默认值是static.

---------------------------------------------------------------------------------------------------------------------

通过使用 position 属性,我们可以选择 4 种不同类型的定位,这会影响元素框生成的方式。

position 属性值的含义:

1    .static元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。

2.    relative元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。

3.    absolute元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。

4.    fixed元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。

---------------------------------------------------------------------------------------------------------------------

《position: relative》

相对定位是一个非常容易掌握的概念。如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。

如果将 top 设置为 20px,那么框将在原位置顶部下面 20 像素的地方。如果 left 设置为 30 像素,那么会在元素左边创建 30 像素的空间,也就是将元素向右移动。

#box_relative {

position: relative

left: 30px

top: 20px

}

如下图所示:

在使用相对定位时,无论是否进行移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖其它框。0.0

--------------------------------------------------------------------------------------------------------------------

绝对定位使元素的位置与文档流无关,因此不占据空间。这一点与相对定位不同,相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。

普通流中其它元素的布局就像绝对定位的元素不存在一样:

#box_relative {

position: absolute

left: 30px

top: 20px

}

如下图所示:

绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块。

对于定位的主要问题是要记住每种定位的意义。所以,现在让我们复习一下学过的知识吧:相对定位是“相对于”元素在文档中的初始位置,而绝对定位是“相对于”最近的已定位祖先元素,如果不存在已定位的祖先元素,那么“相对于”最初的包含块。

因为绝对定位的框与文档流无关,所以它们可以覆盖页面上的其它元素。可以通过设置 z-index 属性来控制这些框的堆放次序。