学习WEB有些时日了,对DOM中的定位概念有些模糊,特地花了一个下午的时间搜资料、整理写下这篇随笔。

  首先,我们要清楚一个概念:文档流。

  简单的讲,就是窗体自上而下分成一行一行,并在每行中按照从左到右来布局。

  而脱离文档流,就是说,将元素从普通的布局排版中拿走。其他盒子在定位的时候,无视这个元素的存在而进行定位。

现在,谈谈position属性的这些值都有怎样的特性。

一、position:static

  CSS定位中的默认值。当元素不设定任何position属性时,默认用static进行定位。不定义position属性时,各对象都在原来的位置上保留。

 

上图忽略 top, bottom, left, right 或者 z-index 声明。

二、positon:fixed

  我们在刷微博、刷学者网、看QQ空间的时候,可以发现,导航栏一直浮于顶部,任凭滚动条的移动。

我们再打开浏览器的审查元素,可以看到:

三、position:relative

  relative和absolute一直是困扰初学者的两个定位属性。

  顾名思义,relative,相对,相对定位;absolute,绝对,绝对定位。

  w3C文档中对relative的解释是:生成相对定位的元素,相对于其正常位置进行定位。也即元素的“相对”是相对元素原来按照正常流的位置。

  

  现在我们给Hellodiv这个元素设置为left:20px;则元素从相对于正常位置向右偏移2px:

  当然,在实际的开发过程中,我们往往会碰到更精确的定位需求。我们要和父节点、要和兄弟节点协作完成。那么要注意:

  1.top与bottom同时存在的时候。只有top发挥作用,如top=20同时设置bottom=20;bottom是无效的,我们会看到浏览器中,bottom被忽略(中间的删除线)。

  2.left与right同时存在的时候,只发挥了left的作用。

  3.如果对中间的对象设置left:20px,则对象的原来的位置保留,而后面的对象则按照原来文档流保持不变。

四、position:absolute

  absolute绝对定位与文档流无关,因此不占空间,因为其相对定位被看做普通定位模型的一部分,因此后面的普通流就将它忽视。

  

  那么,绝对元素又如何绝对呢?

  W3C文档中这样描述:生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。也即被定位为absolute的元素,其位置是相对于父节点而言的。

假设父元素包含子元素,则子元素的left属性表示左边框到父元素左边框的像素(当然这个父元素应当是最近的且已经定位的父元素)。

  

  如果没有已定位的父元素,OK,元素默认以浏览器窗口为父元素,其中top是距离浏览器窗口顶部的距离,left是距离左侧的距离。

最后,值得注意的是,虽然position:absolute定位使对象脱离文件流,当我们在一件F12的时候仍然可以看到脱离文档流的元素存在于dom树中。

参考:http://www.cnblogs.com/jenry/archive/2007/07/15/818660.htm

   http://www.w3school.com.cn/cssref/pr_class_position.asp

    

  

  

  

  

  

  

  

细谈position属性:static、fixed、relative与absolute的更多相关文章

  1. [转]关于position 的 static、relative、absolute、fixed、inherit

    本文转自:http://www.56770.com/faq/list/?id=410 position 有五个值:static.relative.absolute.fixed.inherit. sta ...

  2. position的static、relative、absolute、fixed、inherit

    网上有很多关于position的讲解,也有很多他们属性之间的比较,但是比较全面的讲解还是比较少,每次看完过段时间就忘了,所以今天参考了很多网上现有的资源,自己整理一下,写下这篇文章. position ...

  3. [转]Html position(static、relative、absolute、fixed)

    转自:http://blog.csdn.net/topviewers/article/details/21644305 讲解不错,转载备忘. position的四个属性值: 1.relative2.a ...

  4. 知识点摸清 - - position属性值之relative与absolute

    两者共同特点是: 改变文档流 激活元素left.top.right.bottom.z-index属性 让元素”浮起来“,z-index>0 不同的是: 1.position:relative 会 ...

  5. position 属性值:relative 与 absolute 区别

    absolute 能让元素 inline-block 化: 例如一个div标签默认宽度是100%显示的,但是一旦被absolute属性缠上,则100%默认宽度就会变成自适应内部元素的宽度. float ...

  6. position 有五个值:static、relative、absolute、fixed、inherit。

    position 有五个值:static.relative.absolute.fixed.inherit. static 是默认值.就是按正常的布局流从上到下从左到右布局,平常我们做网页时,没有指定 ...

  7. CSS中Position属性static、absolute、fixed、relative

    在html中网页可以看成一个立体的空间,一个完整的页面是由很多个页面堆积形成的,如下图所示   CSS中Position属性有四个可选值,它们分别是:static.absolute.fixed.rel ...

  8. 510,position的值,relative和absolute定位原点是

    (absolute:生成绝对定位的元素) position属性用来规定元素的定位类型和方式 ①position:static 默认值,没有定位,元素出现在正常的流中: ②position:fixed  ...

  9. 列出display的值,说明他们的作用。position的值, relative和 absolute定位原点是?

    display的值: block 像块类型元素一样显示. none 像行内元素类型一样显示. inline-block 像行内元素一样显示, 但其内容像块类型元素一样显示. list-item 像块类 ...

随机推荐

  1. css3 翻牌效果

    <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/h ...

  2. SQL四种语言

    1.DDL(Data Definition Language)数据库定义语言statements are used to define the database structure or schema ...

  3. Cocoa 新的依赖管理工具:Carthage

    昨天搞了一下pod的安装 因为之前我都是在使用pod来进行第三方库的管理 但是拿到项目之后 竟发现这个前辈是用Carthage 说真的在这之前我从来没有用过这个玩意因为我感觉用POD已经很好了啊 很方 ...

  4. Flex中处理多点触摸和手势

    在Flex中多点触摸和手势都需要利用Multitiouch类来完成:1.supportsGestureEvents:判断是否支持手势2.supportsTouchEvents:判断是否支持多点触摸可以 ...

  5. php之 有点复杂的 流程管理

    1.流程管理的用法是什么样的? 2.怎么发起想要的流程? 3.审批的人要是怎么审批通过? 4.流程审核是不是要挨个走过? 一.还是要有数据库的内容的 肯定会有表的,首先就是用户表了,然后就是流程表,用 ...

  6. react native ios打包到真机

    每当在模拟器上完成了开发,都想到真机上秀秀,正好前段时候买了一个mac,哈哈有机会了.前篇文章以android为例,这里就以ios为例,讲一下打包到iphone真机的流程. 一.前置 1.首先你得有一 ...

  7. 小学生之Hibernate插入数据修改数据使用数据库默认值的实现

    最近在写一个案例,定时任务对数据库进行更新操作,废话不多说,上代码: @Component("taskJob") public class TaskJob extends Hibe ...

  8. [转载] HTTP协议详解

    转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的 ...

  9. 第七届蓝桥杯javaB组真题解析-分小组(第四题)

    题目 /* 分小组 9名运动员参加比赛,需要分3组进行预赛. 有哪些分组的方案呢? 我们标记运动员为 A,B,C,... I 下面的程序列出了所有的分组方法. 该程序的正常输出为: ABC DEF G ...

  10. asp.net权限认证:Forms认证

    asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...