position属性的absolute和relative的理解

概述:

每个定位的意义:相对定位是“相对于“元素在文档流中初始位置的,而绝对定位是”相对于“最近的已经定位的祖先元素。


主要:

(其实对于定位的理解,主要问题是要记住每个定位的意义。)

  1. absolute(绝对定位)以窗口做为定位
  2. relative以自身的占位为基线做偏移!
  3. 如果想absolute(绝对定位)能以父层做为定位基线的话, 则在父层应用absolute或relativ属性就可以!

3.eg:

<div id=posi style=”position:relative”>

	<div id=rel> 此层应用position:relative;bottom:30px;样式 </div>
	<div id=abs> 此层只应用position:absolute;bottom:30px;样式 </div>

</div>
注意:
{
		1)、以上代码:id为posi的层,也可以用absolute属性!
	id为rel的层,不受影响,以自身的占位为基线做偏移!
		2)、id为abs的层是以id为posi层的底边做为定位基线,
	如果此时posi层的高度小于30px的话,abs层可能没办法看到哦!
}




详解:

设置此属性值为 relative
会保持对象在正常的HTML流中,
但是它的位置可以根据它的前一个对象进行偏移。
在相对(relative)定位对象之后的文本或对象占有他们自己的空间,
而不会覆盖被定位对象的自然空间。

与此不同的,
在绝对(absolute)定位对象之后的文本或对象在被定位对象被拖离正常文档流之前,
会占有它的自然空间。

  • 放置绝对(absolute)定位对象在可视区域之外会导致滚动条出现。
  • 而放置相对(relative)定位对象在可视区域之外,滚动条不会出现。



补充注意点:

  1. 父子关系是无法用z-index来设定上下关系的,一定是子级在上父级在下。
  2. TRBL属性(TOP、RIGHT、BOTTOM、LEFT)只有当设定了position属性才有效
  3. 设置此属性值为 absolute 时,此时对象不具有外补丁( margin ),但仍有内补丁( padding )和边框(
    border )。
  4. 设置此属性值为 relative 时,相对定位是不能层叠的。在使用相对定位时,无论元素是否进行移动,元素依然占据原来的空间。因此,移动元素会导致它覆盖其他框。




absolute与relative两者具体定义如下:

【1】
当设定position:absolute
1、如果父级(无限)没有设定position属性,
那么当前的absolute则结合TRBL属性以浏览器左上角为原始点进行定位
2、如果父级(无限)设定position属性,
那么当前的absolute则结合TRBL属性以父级(最近)的左上角为原始点进行定位。
【2】
当设定position: relative
则参照父级(最近)的【内容区的左上角为原始点】结合TRBL属性进行定位
(或者说相对于被定位元素在父级内容区中的上一个元素进行偏移),
无父级则以BODY的左上角为原始点。




CSS2.0 HandBook上的解释:

设置此属性值为 absolute 会将对象拖离出正常的文档流绝对定位而不考虑它周围内容的布局。
假如其他具有不同 z-index 属性的对象已经占据了给定的位置,他们之间不会相互影响,而会在同一位置层叠。
此时对象不具有外补丁( margin ),但仍有内补丁( padding )和边框( border )。

要激活对象的绝对(absolute)定位,必须指定 left , right , top , bottom 属性中的至少一个,
并且设置此属性值为 absolute 。否则上述属性会使用他们的默认值 auto ,
这将导致对象遵从正常的HTML布局规则,在前一个对象之后立即被呈递。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值