absolute:绝对定位

absolute定位基于距离它最近的,且不是static的父元素的位置。

relative:相对定位

relative是相对于元素所在的文档流中的位置,定位基于原本自身位置。

乍一听,都蒙了,到底谁该基于谁?在开始之前,我们先得弄清楚,什么是文档流

    <div class="demo1"></div><div class="demo2"></div><style>.demo1 {width: 100px;height: 100px;background: black;opacity: .5;}   .demo2 {  width: 100px;height: 100px;background: green;}</style>

demo1在demo2上面,这就是文档流

情景一:给demo2分别添加属性top=50px
修改如下:

        .demo2 {  top:50px;//增设内容width: 100px;height: 100px;background: green;}


是的,此时,你会发现,demo2并没有发生移动。
情景二:给demo2分别添加relative的定位属性,并且设定top=50px;
修改如下:

        .demo2 {  position:relative;//增设内容top:50px;width: 100px;height: 100px;background: green;}


是的,demo2这个盒子相对于它原来的位置下移了50px
情景三:给demo2添加absolute的定位属性,并且设定top=50px;

        .demo2 {  position:absolute;//修改内容top:50px;width: 100px;height: 100px;background: green;}

结果如下:

此时,demo2的盒子的top起始位置是按照页面顶端算的,所以会覆盖demo1盒子的一半高度。这是因为absolute会主动找到他的父盒子,以他的父盒子的位置作为基准,并且要求这个父盒子的定位是relative,如果没有,就以最外层的页面为准,此时demo2的盒子脱离的原本给它规定的盒子位置,也就是在最初我们所说的文档流给它规定的demo1下面的位置。
情景四:给demo1添加relative属性,并且给定top=50px,demo2不变

    <div class="demo1"></div><div class="demo2"></div>
    <style>.demo1 {position:relative;top:50px;width: 100px;height: 100px;background: black;opacity: .5;}   .demo2 {  position:absolute;top:50px;width: 100px;height: 100px;background: green;}</style>

结果如下:

在这里,我们会看到demo1黑色的盒子是基于relative的下移50px,demo2绿色盒子是基于absolute下移50px,基于relative就是在文档流该有的位置,下移50px。而基于absolute是把最外层页面作为父盒子,以页面顶端作为界限下移50px,并且很明显,基于文档流的relative下移的更多一些。
情景五:css修饰信息不变,让demo1成为demo2的父盒子

<div class="demo1"><div class="demo2"></div></div>

运行结果如下:

很明显,此时demo2绿盒子,以定位修饰为relative的黑色盒子的位置为基准,在黑色盒子下移50px的基础上下降50px。
情景五:给demo1也添加父盒子,并且不对demo1进行relative定位,相反给爷爷盒子demo添加relative定位

<div class="demo"><div class="demo1"><div class="demo2"></div></div>
    <style>.demo{position:relative;top:50px;width: 200px;height: 200px;background: red;}.demo1 {top:500px;width: 100px;height: 100px;background: black;}   .demo2 {  position:absolute;top:50px;width: 100px;height: 100px;background: green;}</style>

运行结果:

情景五总结:
1.爷爷盒子大小是后代盒子的2倍大小,为了便于观察
2.demo1的盒子top设置了500px。是的,你会发现当没有设置position定位的时候,这个属性的增设没有作用和意义。
3.当demo1不在具备定位属性position:relative;时,demo2设置定位属性absolute时,它会继续向上找到那个具备relative的祖宗盒子,没有的话还是依据最外层页面的位置(0,0)作为基准(就是页面最左上角)。如果有具备relative的祖宗盒子,就以他的位置为基准进行位置的设定。
总结:
1.如果你想以最外层的页面作为位置基准,那么不要给你的这个盒子嵌套任何盒子,并且添加定位属性absolute.
2.如果你想根据谁来进行定位,那么那就在以这个为基准的盒子(position:relative)下添加你的盒子,给这个新添加的盒子做定位定位属性absolute。
3.如果你只是想在这个盒子的文档流位置进行top,bottom,left,right设置,那就对这个盒子设定定位position:relative即可。

CSS中的position:absolute与relative相关推荐

  1. CSS中的position:relative理解

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

  2. css中对position的几种定位方式的最佳诠释

    关于元素的position定位的理解,牛客网的hardy给出了一个比较好的理解: 在html中网页可以看成一个立体的空间,一个完整的页面是由很多个页面堆积形成的,如上图所示 CSS中Position属 ...

  3. 【CSS】【position】css中的position属性

    css中的position属性用于设置元素位置的确定方式,它有以下几种取值: static:默认定位方式,子元素在父容器中挨个摆放 absolute:绝对定位,元素不占据父容器空间,相当于文档body ...

  4. css中的position定位详解

    css中的position定位详解 position属性指定了元素的定位类型. position属性的5个值:static,relative,fixed,absolute,sticky; 元素可以使用 ...

  5. CSS中,position的绝对定位和相对定位的区别

    CSS中,position的绝对定位和相对定位的区别 1.position的四个值:static.relative.absolute.fixed 绝对定位:absolute和fixed统称为绝对定位 ...

  6. position absolute 与 relative 区别

    position absolute 与 relative 区别 absolute 绝对定位元素可以放置到页面上的任何位置 relative 相对定位会按照元素的原始位置对该元素进行移动

  7. CSS中的position定位

    CSS中position的定位主要分为静态定位,相对定位,绝对定位和固定定位,属性值分别为:static,relative,absolute,fixed:元素的位置通过 "left" ...

  8. CSS中的Position、Float属性的一些深入探讨

    为什么80%的码农都做不了架构师?>>>    HTML布局的基本要点: 如果要掌握.运用好Position.Float属性必须要对HTML的两个基本点有清晰的了解. 盒子模型(bo ...

  9. CSS中 定位position 和 transform 移动元素的比较

    主要解决问题: 在使用 transform: translate(50%,50%); 平移元素后,再用 offsetLeft 和offsetTop 获取该元素距离 body 左侧距离时,无法获取经 t ...

最新文章

  1. 亿级用户基于微服务的互联网系统稳定性~
  2. python求最值_用Python实现最速下降法求极值的方法
  3. JavaScript中的作用域,闭包和上下文
  4. 穷游网:这里有一个包含十二年用户体验妙计的锦囊
  5. 服务器文件协议,文件服务器协议
  6. java学习(4):第一个java程序
  7. 坐拥12亿月活流量,腾讯直播带货的底牌
  8. 韩顺平循序渐进学java 第21.22.23.24讲 集合
  9. MySQL优化--索引
  10. 【图像去噪】基于matlab GUI空域+频域滤波图像去噪【含Matlab源码 914期】
  11. 数学建模层次分析法例题及答案_数学建模方法层次分析法实例.doc
  12. vs2015 vc14编译libcurl
  13. 李忠汇编语言-初学-第九章详解
  14. 机器人炒菜感想_炒菜机器人
  15. 表格自动填充上一行_如何在Google文档电子表格上使用自动填充[快速提示]
  16. 巴西游戏出海攻略,优质游戏出海市场
  17. [Cnbeta]企业与家用无线路由器的区别
  18. 联想笔记本G400使用VS2013时,笔记本快捷键与软件快捷键冲突解决方案
  19. 王者荣耀无法提取模型
  20. Silvaco TCAD仿真10——MOSFET结构仿真

热门文章

  1. 曹大嘴老师(本名:曹恒山老师)--沪师经纪
  2. 德语键盘在标准ASCII键盘上使用的小窍门/ 德语键盘英语输入法输出波浪线~
  3. Qt 拖拽 动态 垃圾箱
  4. The King’s Problem(tarjan求强连通分量缩点+匈牙利求有向无环图的最小路径覆盖)
  5. win10电脑打不开我的电脑属性
  6. 四个穴位掌控全身健康
  7. 数学分析教程(科大)——1.4笔记+习题
  8. 1.致远OA二次开发G6 A6 A8 本机软件安装
  9. zabbix某一个代理服务器下面多个agent出现5分钟数据采集不到的告警的解决过程...
  10. Timer实现数字时钟