前言:position有5个属性:static、absolute、relative、fixed和inherit。本篇博客主要介绍relative属性,因为似乎很多人对这个属性的理解很模糊,而且不清楚relative与absolute的区别。

《CSS权威指南》上对relative是这样解释的:元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。元素保持定位前的形状自然不用说,那么下面就针对以下两点来说明:

1)元素框偏移某个距离;

2)原本所占的空间仍保留。

元素框偏移某个距离

这句话的意思是:元素相对定位前的位置偏移某个距离。举个例子:

<div id="wrap">
<div id="div1">我是参考div</div>
<div id="div2">我是relative div</div>
</div>
#wrap{
width:300px;
height:300px;
border:1px solid black;
}
#div1,#div2{
width:100px;
height:100px;
}
#div1{
background: red;
}
#div2{
background: yellow;
position: relative;
top:10px;
left:20px;
}

以上代码的显示如左图,黄色div设置了relative,其相对定位前的位置偏移了某个距离。可以想象成右图,灰色部分是黄色div

定位前的位置,黄色div就是相对灰色部分进行定位(absolute是相对其position属性不为static的最近祖先元素定位)。

                             

原本所占的空间仍保留

这一点也是relative与absolute最大的区别:relative不脱离正常文档流,absolute脱离正常文档流。

<div id="wrap">
<div id="div1">我是参考div</div>
<div id="div2">我是relative div</div>
<div id="div3">我是另一个参考div</div>
</div>
#div3{
width:100px;
height:100px;
background: red;
}
/*其他样式不变*/

在黄色div后再放置一个参考div后发现,后一个参考div在放置的时候将黄色div原本的位置(即上右图的灰色部分)给空了出来。同样我们可以想象成右下图,灰色部分没有任何元素,但是在正常文档流中占据一定的位置,后面的元素均要空出此位置。

                            

再仔细想想relative的以上两个性质发现,其与absolute的定位方式其实有类似的部分:我们看到的部分(即黄色部分)不在正常文档流中,可根据出现顺序任意覆盖。但有两点不同:

1)相对的div不同:relative相对自己原本应该在的位置进行定位;absolute相对position不是static的最近祖先元素定位;

2)是否脱离正常文档流:relative表现上是不在正常文档流中,但在正常文档流中保留了原本所占的空间;absolute脱离正常文档流,正常文档流中就当没出出现过此元素

理解position:relative的更多相关文章

  1. 通过案例理解position:relative和position:absolute

    w3school过了HTML的知识之后,觉得要自己单纯地去啃知识点有点枯燥,然后自己也很容易忘记,所以便找具体的网站练手便补上不懂的知识点.position:relative和postion:abso ...

  2. css中position:relative的真正理解

    其实话说一直以来也没真正去理解好position:relative的用法的真实意义. 我想很多人实实在在用的多都是position:relative和position:absolute结合起来一起用的 ...

  3. 浅谈position: absolute和position:relative

    一.在此先说一下文档流的概念: 1,文档流定义: 百度百科定义:文档流是文档中可显示对象在排列时所占用的位置. 大多网友的理解:元素的位置由元素在 (X)HTML 中的位置决定.将窗体自上而下分成一行 ...

  4. CSS中margin和position:relative的定位问题

    一.代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  5. 深入理解position属性&containing block

    一.包含块(Containing Block) 要讲position,首先就涉及到一个概念:包含块. 1.包含块介绍 包含块简单理解就是一个定位参考块,就是"大盒子里套小盒子"中那 ...

  6. 火狐浏览器下,td 直接使用position:relative;和background:;产生的边框消失问题

    消失示例: td{ width:40px; height:28px; position:relative; background:#ccc; } 出现问题 问题原因: 我的理解是各个浏览器之间对于ba ...

  7. css position: relative,absolute具体解释

    关于CSS中 position在布局中非常重要,查了非常多资料都说的非常难理解.以下说说个人的理解: 语法: position: relative | absolute relative: 对象遵循常 ...

  8. 解决IE6,IE7下子元素使用position:relative、父元素使用overflow:auto后,子元素不随着滚动条滚动的问题

    解决IE6,IE7下子元素使用position:relative.父元素使用overflow:auto后,子元素不随着滚动条滚动的问题   在IE6,IE7下,子元素使用position:relati ...

  9. CSS position relative absolute fixed

    position属性absolute与relative 详解   最近一直在研究javascript脚本,熟悉DOM中CSS样式的各种定位属性,以前对这个属性不太了解,从网上找到两篇文章感觉讲得很透彻 ...

随机推荐

  1. SpringData JPA复合主键

    上一篇博客简单介绍了SpringData JPA实现简单的CRUD,分页与多条件的排序,那里的主键类型是Long,有时我们会遇到主键不是一个的,复合主键,经过调研如下.确定一个人,不能只根据他的姓名来 ...

  2. GCD 使用若干注意事项

    这篇文章写的是看完 WWDC 17 - Modernizing GCD Usage 之后的笔记. 一.Parallelism & Concurrency Parallelism 指的是在多个 ...

  3. windows 域的安装方法

    前面的博客中我们知道了 Windows AD域的升级,下面我谈谈Windows域的安装和卸载. 卸载AD域 配置备份AD域 安装子域 删除子域(必须在根域管理员模式下删除,否则无法删除) 删除命令 导 ...

  4. leetcode-200-岛屿的个数(dfs找所有的连通分量)

    题目描述: 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. 示例 ...

  5. (转)MySQL主主互备结合keepalived实现高可用

    MySQL主主互备结合keepalived实现高可用 原文:http://7424593.blog.51cto.com/7414593/1741717 试验环境: master:192.168.1.2 ...

  6. Java程序员的面试经历和题库

    最近打算换城市了,受不了北京的雾霾了,所以准备逃离啦.所以一直在面试中,整理了下最近遇到的一些面试题,供大家参考.其中会包含一些面试的小经验,如果您是面霸,希望能给予指导.自己不是大牛,如果您是大牛, ...

  7. eclipse自定义代码注释

    效果如下: 自定义注释的方法:

  8. python-cgi-demo

    简单的Python CGI 在linux平台实现注意:路径是以当前路径为根目录 ,Python文件一般放在/cgi-bin/目录下在linux命令行运行:python  -m  CGIHTTPServ ...

  9. 解决emacs配置tern报错`tern-reparse-on-idle':

    使用Nodejs安装完tern后,在/user/local/bin建立软连接

  10. 【c++】友元

    c++引入友元的原因 在某些情况下,允许特定的非成员函数访问类的私有成员.在类中以关键字friend开始(只能出现在类定义的内部),声明为友元的可以为类.类的成员函数.普通的非成员函数. 速览 #in ...