你真的理解position?

对于position的各个属性,具体如下:

描述
static 默认。位置被设置为static的元素,它始终会处于页面流给予的位置(一个static元素会忽略任何top、bottom、left或right声明)。
relative 位置被设置为relative的元素,可将其移至相对于其正常位置的地方,因此"left:20"会将元素移至元素正常位置左边20个像素的位置。
absolute 位置被设置为absolute的元素,可被定位于相对于包含它的元素的指定坐标。此元素的位置可通过"left"、"top"、"right"以及"bottom"属性来规定。
fixed 位置被设置为fixed的元素,可被定位于相对于浏览器窗口的指定坐标。此元素的位置可通过"left"、"top"、"right"以及"bottom"属性来规定。不论窗口滚动与否,元素都会留在那个位置。工作于IE7(strict模式)。

对于position:relative这个属性:
      当一个元素设置了position:relative后,设置这个不可层叠, 它可以像绝对定位一样, 但将依据left,right,top,bottom等属性在正常文档流中偏移位置 。

许多人经常这样用:
   
这样,最里边的那个盒子就会相对于inner_box来进行绝对定位,
可以试一下,如果去掉inner_box的定位属性:
那么最里边的盒子in就会相对于大盒子box来进行绝对定位。 为什么呢?

原因:
   inner_box因为进行了相对定位,所以它偏离了最初的文档流,而in作为它的子元素,也跟着偏移了,所以当in设置了绝对定位属性是,它是以inner_box当前位置的左上角作为原始点进行定位,也即:   

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


对于position:absolute;

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


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值