资讯专栏INFORMATION COLUMN

css position: absolute、relative详解

h9911 / 2233人阅读

摘要:在使用相对定位时,无论元素是否进行移动,元素依然占据原来的空间。放置绝对定位对象在可视区域之外会导致滚动条出现。相对定位是相对于元素在文档流中初始位置的,而绝对定位是相对于最近的已经定位的祖先元素。

CSS2.0 HandBook上的解释:

设置此属性值为 absolute 会将对象拖离出正常的文档流绝对定位而不考虑它周围内容的布局。假如其他具有不同 z-index 属性的对象已经占据了给定的位置,他们之间不会相互影响,而会在同一位置层叠。此时对象不具有外补丁( margin ),但仍有内补丁( padding )和边框( border )。
要激活对象的绝对(absolute)定位,必须指定 left , right , top , bottom 属性中的至少一个,并且设置此属性值为 absolute 。否则上述属性会使用他们的默认值 auto ,这将导致对象遵从正常的HTML布局规则,在前一个对象之后立即被呈递。

TRBL属性(TOP、RIGHT、BOTTOM、LEFT)只有当设定了position属性才有效。
当设定position:absolute
如果父级(无限)没有设定position属性,那么当前的absolute则结合TRBL属性以浏览器左上角为原始点进行定位
如果父级(无限)设定position属性,那么当前的absolute则结合TRBL属性以父级(最近)的左上角为原始点进行定位。

当设定position: relative
则参照父级(最近)的内容区的左上角为原始点结合TRBL属性进行定位(或者说相对于被定位元素在父级内容区中的上一个元素进行偏移),无父级则以BODY的左上角为原始点。相对定位是不能层叠的。在使用相对定位时,无论元素是否进行移动,元素依然占据原来的空间。因此,移动元素会导致它覆盖其他框。

一般来讲,网页居中的话用Absolute就容易出错,因为网页一直是随着分辨率的大小自动适应的,而Absolute则会以浏览器的左上角为原始点,不会应为分辨率的变化而变化位置。有时还需要依靠z-index来设定容器的上下关系,数值越大越在最上面,数值范围是自然数。当然有一点要注意,父子关系是无法用z-index来设定上下关系的,一定是子级在上父级在下。

设置此属性值为 relative 会保持对象在正常的HTML流中,但是它的位置可以根据它的前一个对象进行偏移。在相对(relative)定位对象之后的文本或对象占有他们自己的空间而不会覆盖被定位对象的自然空间。与此不同的,在绝对(absolute)定位对象之后的文本或对象在被定位对象被拖离正常文档流之前会占有它的自然空间。放置绝对(absolute)定位对象在可视区域之外会导致滚动条出现。而放置相对(relative)定位对象在可视区域之外,滚动条不会出现。其实对于定位的主要问题是要记住每个定位的意义。相对定位是“相对于“元素在文档流中初始位置的,而绝对定位是”相对于“最近的已经定位的祖先元素。

以下是补充:

虽然有知道css的绝对定位(absolute)、相对定位(relative),但却从未自己动手写过相关的效果!
忙活了一大半天,也算是完成了!也把这两个属性搞明白了一些!

总结如下:

先看下面这一个层结构

 

此层只应用position:relative;样式
此层只应用position:absolute;样式
不应用样式

1、absolute:不占位、relative:有占位!

如上层结构:

id为rel的层在显示时,会占用一行!其后面的abs层只会在下一行显示出来!
id为abs的层在显示时,会与后面id为sss的重叠在一起!

2、默认情况下(不结合top等来定位),absolute(绝对定位)以父层来定位的
如上面的id为abs的层,如果不结合top等来定位,则其显示位置会随父级posi层(posi在文档左下角,其也会在左下角)

3、在结合top、bottom、right、left等属性时,absolute(绝对定位)以窗口做为定位,relative以自身的占位为基线做偏移!如下:

 

不应用样式
此层应用position:relative;bottom:30px;样式
此层只应用position:absolute;bottom:30px;样式
以上代码:

id为rel的层会上移并与id为sss的层重叠
id为abs的层会以窗口为基线,移至距离窗口30像素的位置!

4、在结合top、bottom、right、left等属性时,如果想absolute(绝对定位)能以父层做为定位基线的话,则在父层应用absolute或relativ属性就可以!如下:

 

此层应用position:relative;bottom:30px;样式
此层只应用position:absolute;bottom:30px;样式

以上代码:id为posi的层,也可以用absolute属性!
id为rel的层,不受影响,以自身的占位为基线做偏移!

id为abs的层是以id为posi层的底边做为定位基线,如果此时posi层的高度小于30px的话,abs层可能没办法看到哦!

转自:http://www.rccoder.net/webpre/940.html

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110948.html

相关文章

  • 详解 CSS 属性 - position

    摘要:属性定义了一个元素在页面布局中的位置以及对周围元素的影响。元素将会脱离正常的文档流,所以其周围的元素将会忽略它的存在。此时,我们可以使用等属性对元素进行绝对定位。一般情况下定义两个属性,或或。 postion 属性定义了一个元素在页面布局中的位置以及对周围元素的影响。该属性共有5个值: position: absolute position: relative position...

    joywek 评论0 收藏0
  • 详解 CSS 属性 - position

    摘要:属性定义了一个元素在页面布局中的位置以及对周围元素的影响。元素将会脱离正常的文档流,所以其周围的元素将会忽略它的存在。此时,我们可以使用等属性对元素进行绝对定位。一般情况下定义两个属性,或或。 postion 属性定义了一个元素在页面布局中的位置以及对周围元素的影响。该属性共有5个值: position: absolute position: relative position...

    CastlePeaK 评论0 收藏0
  • 带你走进CSS定位详解

    摘要:相对于其最近的一个定位设置的父对象进行绝对定位,可用。代码基本语法默认值,无特殊定位。代码相对定位相对定位生成相对定位的元素,相对于其它位置进行定位。结语结语带你走进定位详解,多试试,熟能生巧嘛 学习CSS相关知识,定位是其中的重点,也是难点之一,如果不了解css定位有时候都不知道怎么用,下面整理了一下关于定位属性的具体理解和应用方案。 一:定位 定位属性列表 position top...

    googollee 评论0 收藏0
  • CSSposition详解

    摘要:元素的位置通过以及属性进行规定。生成相对定位的元素,相对于其正常位置进行定位。规定应该从父元素继承属性的值。表示相对原先位置右边进行偏移,表示相对原先位置下边进行偏移。当和同时存在,仅有效,当和同时存在仅有效。 定义和用法 position属性规定元素的定位类型。这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。...

    PiscesYE 评论0 收藏0
  • [CSS]CSS Position 详解

    摘要:三生成固定定位的元素,相对于浏览器窗口定位,即浏览器窗口滚动也不会影响元素位置,元素的位置与文档流无关,因此不占据空间,可能会和其他元素发生重叠。,元素脱离文档流,相对于以外的第一个父元素定位。 一. CSS position 属性介绍 CSS中position属性指定一个元素(静态的,相对的,绝对或固定)的定位方法的类型。有static,relative,absolute和fixed...

    xiguadada 评论0 收藏0

发表评论

0条评论

h9911

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<