position 有三个值,static(静态)、relative(相对)、absolute(绝对);由于static是所有页面元素的默认值,因此设置元素的定位类型时几乎不用这个值,除非用于覆盖之前的定义。对于后两者,一般应用:在一个相对定位的元素里面放置一个绝对定位的元素,如图:
                                  
 
 
  子元素B可以通过top、right、bottom、left来精确定位,定位的参考目标就是其具有相对定位属性的父级元素A;并且设置这些偏移后,产生的空隙会被后面的元素填充(如果后面的元素足够尺寸的话)。由于B元素具有absolute定位属性,相当于从文档流中抽取出来,浮动在原平面排版上,形成“层”,如果有多个“层”,层与层之间就必然会有谁覆盖谁,谁在上谁在下的竞争关系,因此,为解决这个竞争,就产生了 z-index(空间坐标系的Z轴) 属性,谁的值大,谁就在上面。另外,如果父级元素A没有设置relative,那么B元素就会以body标签当作参考点。

  对于具有position:relative属性的元素A,其top、right、bottom、left四个方向的位置偏移就会以该元素的原来位置作为参考点,而不是像上面说的,以具有relative定位属性的父级元素或body作为参考点。在设置了偏移后产生了空隙,其周围的元素并不会填充这些空隙,即使它们足够尺寸(演示)。
  值得注意的是,此时元素A的margin,margin将作用于该元素的原来位置,由于原位置产生偏移,该元素的最终位置将是margin与top、right、bottom、left共同作用后的位置,并且其周围元素的位置也将产生影响。

  回过头来再看看 relative 里面的 absolute,比如上面的A、B两个元素,如果两个元素都设置了top、right、bottom、left,对于元素B来说,其位置偏移的参考点是元素A偏移后的位置,不是元素A的原位置,同样,如果元素B有margin,其参考点也是元素A偏移后的位置,这点很重要,这才是absolute的概念(演示)。

=======================================================

用Div+CSS进行网站布局时,做一些浮动层等特殊特殊效果时要考虑到定位问题。这就要用到Position属性等。 Position属性有四个值: static、fixed、absolute和relative,后面两个在布局中的定位里是经常用到的,顾名思义,absolute是指绝对定位,即将对象从文档流中拖出,使用left,right,top,bottom等属性进行绝对定位,而其层叠通过z-index属性定义。此时对象不具有边距,但仍有补白和边框。ralative是指相对定位,就是依据left,right,top,bottom等属性在正常文档流中偏移位置。
  但是,怎么个绝对法,又怎么个相对法呢?以前我一直没有仔细去研究它,到具体应用时有时会有点迷糊,我相信很多朋友也会有这样的问题。今天我特意测试了一下,得出了以下结论:
1、当Position属性值为Relative时
对象原来占有的位置保留,其后面的对象按原来文档流仍然保持原来的位置
Top的值表示对象相对原位置向下偏移的距离
bottom的值表示对象相对原位置向上偏移的距离
两者同时存在时,只有Top起作用。
left的值表示对象相对原位置向右偏移的距离
right的值表示对象相对原位置向左偏移的距离
两者同时存在时,只有left起作用。
2、当Position属性值为absolute时
对象从文档流中抽取出来,原占有的位置被后面的对象顶替上来
Top的值表示对象上边框与浏览器窗口顶部的距离
bottom的值表示对象下边框与浏览器窗口底部的距离
两者同时存在时,只有Top起作用;如果两者都未指定,则其顶端将与原文档流位置一致,即垂直保持位置不变。
left的值表示对象左边框与浏览器窗口左边的距离
right的值表示对象右边框与浏览器窗口右边的距离
两者同时存在时,只有left起作用;如果两者都未指定,则其左边将与原文档流位置一致,即水平保持位置不变。
  在Position属性值为absolute的同时,如果有一级父对象(无论是父对象还是祖父对象,或者再高的辈分,一样)的Position属性值为Relative时,则上述的相对浏览器窗口定位将会变成相对父对象定位,这对精确定位是很有帮助的。

转载于:https://www.cnblogs.com/osmond/archive/2011/12/11/2283710.html

深入理解position:relative 与 position:absolute(divb相对于diva进行绝对定位)相关推荐

  1. {转摘}理解 position:relative 与 position:absolute

    转载:<a href="http://www.happyshow.org/article/125.html" target="_blank"> po ...

  2. 区分position:relative; position:absolute; position:fixed

    区分position:relative; position:absolute; position:fixed 对于position:relative; position:absolute; posit ...

  3. position:relative 与 position:absolute

    position 有三个值,static(静态).relative(相对).absolute(绝对):由于static是所有页面元素的默认值,因此设置元素的定位类型时几乎不用这个值,除非用于覆盖之前的 ...

  4. position:relative与position:absolute的定位区别

    CSS2.0 HandBook上的解释: 设置此属性值为 absolute 会将对象拖离出正常的文档流绝对定位而不考虑它周围内容的布局.假如其他具有不同 z-index 属性的对象已经占据了给定的位置 ...

  5. position:ablosute和position:relative的简单理解

    ##position:ablosute和position:relative的简单理解 ## 先看一下两者的定义: relative(相对定位) 对象不可层叠.不脱离文档流,参考自身静态位置通过 top ...

  6. position属性:绝对定位position: absolute;相对定位 position: relative;固定定位 position: fixed;

    position 属性: position常见的定位模式: 定位模式 描述 是否脱离文档流 移动模式 定位偏移属性 static 默认属性 对象遵循常规流 不移动 不移动 relative 相对定位 ...

  7. CSS中的position:relative理解

    今晚来说说CSS中的position属性,其实在实际开发页面过程中,记录一下这个让我迷茫的relative,我将它分为三种情况进行说明 包含关系:父级absolute,子级relative: 包含关系 ...

  8. CSS 元素的定位之相对定位 position: relative

    在CSS中,通过 position属性来对元素进行定位,可选的定位类型有 static | relative | absolute | fixed,默认值为 static,表示没有定位,元素保持在它原 ...

  9. IE6 CSS bug: position:relative元素被overflow:auto/scroll元素包含

    BUG描述: 页面中某DIV使用了position:relative,结合top=-25px等元素定位.在FF和IE7下表现正常,但是在IE6中该DIV会随鼠标滚动而滚动. 分析: 这是IE6一个已知 ...

最新文章

  1. 怎样给RCP程序添加依赖的JAR包
  2. 【视频】vue指令之v-for
  3. 随机森林算法的随机性_理解随机森林算法的图形指南
  4. hibernate关联映射_具有关联映射的Hibernate Composite ID
  5. Java-逻辑运算符、位运算符
  6. Spring Boot文档阅读笔记-FileHandling解析及抓包分析
  7. 史上最简单JS复制功能,兼容安卓ios!
  8. SizeOf相关代码
  9. HTML 第5章 Div+CSS布局技术
  10. 编程中如何不使用中间变量的情况下将两个变量的值进行交换
  11. 【mac系统连接打印机】提示错误信息,保持已备认证
  12. Python手绘图案出现MemoryError错误、缺少numpy、PIL包的问题
  13. 流量分析:如何分析数据的波动?
  14. 用python的sympy解符号方程组
  15. NOIP 2012 普及组 复赛 culture 文化之旅
  16. 晓_【斗战神学习二十四】一手交钱,一手交货
  17. 劲乐园合歌(幽灵圣典+飞吧喜鹊+唯一+v3+幽灵圣典2)铃声 劲乐园...
  18. element-ui iconfont乱码问题处理
  19. 函授大专计算机专业,函授大专报什么专业好?
  20. C语言学习:用C语言实现简单的计算器

热门文章

  1. bstr java_BSTR详解一 -BSTR简介和内部结构
  2. firewall添加白名单_firewall的规则设置与命令(白名单设置)
  3. ubuntu安装ffmpeg_安装 Jellyfin 开始肥宅生活
  4. taro引入f2图表_Package - taro-f2
  5. 读取ppt并存入数据库_[导入]实时数据库理论与技术演讲PPT
  6. android442电视怎么投屏,哔哩哔哩怎么投屏电视? b站投屏的方法
  7. Linux的shell脚本实战之检查主机IP是否存在
  8. 商品领域ddd_DDD领域驱动实战 - 限界上下文(bounded context)
  9. 分享apache http服务器设置虚拟主机的方法
  10. 修改wamp的apache默认端口80为8088以及www目录