static,relative,absolute,fixed含义

static(静态定位):元素框正常生成。块级元素生成一个矩形框,作为文档流的
  的一部分,行内元素则会常见一个或多个行框,至于其父元素中。
  默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。
 
relative(相对定位):元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占有的空间仍保留。
 
absolute(绝对定位):元素框从文档流中完全删除,并相对于其包含块定位,包含块可能是文档中的另一个元素挥着是初始包含块。
  元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。
  元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。
 
fixed(固定定位):元素框的表现类似于absolute,不过其包含块是视窗本身。
 

包含块(更像是定义了一个要定位元素的上下文,是定位的重中之重)

(1)根元素的包含块由用户代理创建,在html中,跟元素是html元素,不过有些浏览器会使用body作为根元素。
  在大多数浏览器中,初始包含块是一个视窗大小的矩形。
 
(2)对于一个非根元素来说,如果其position值是relative或static,包含块则由最近的块级框,表单元格或行内块祖先框的内容边界构成。
    (或者所包含块就是它自身,自身是其上下文)
 
(3)对于一个非根元素来说,如果其position值是absolute,包含块设置为最近的position值不是static的祖先元素(不是兄弟元素)。
 
 

偏移属性:top,right,bottom,left(相对于包含块的偏移)

  定位元素也就是position不是static的元素。
 
(1)偏移属性定义元素的大小
尽管有时候元素的尺寸很重要,但是对于定位元素来说则不一定必须要。
下面这个例子中,定位元素就没有指定尺寸,但是效果可以看出它确实有尺寸。
因为这些尺寸将由这些偏移隐含确定计算出。
<div style="  background-color: darkgrey;width: 200px; position: absolute; height: 100px">
<div style="right: 100px;background-color: red;height: 100px;bottom: 0;left: 0;position: absolute;top: 0;"></div> </div>

 
依据上面说的,定位元素是absolute定位,其包含块是最近的position不为static的元素,在这里就是灰块元素。
 
 
(2)内容溢出和剪裁
溢出使用overflow的属性,这里就不说了。
剪裁使用clip,这里不是本章的重点。
 

绝对定位

<div style="height: 100px;width: 200px;background-color: #00ee00;top:10px;position: absolute">绿</div>

<div style="  background-color: darkgrey;width: 300px; position: relative; height: 100px">灰
<div style="background-color: red;width: 200px;height: 100px;top:10px;right: 100px;position: absolute">红</div> </div>

上面这个例子说明包含块与定位元素的关系。
①是absolute定位元素。top=10px;相对于页面根元素。
②是包含块,包含着③absolute定位元素。
③是absolute定位元素。top=10px;相对于②包含块。
 
有时候你可能想确保body元素为其所有后代建立一个包含块,而不是让用户代理选择。
声明: body{position:relative}
 

相对定位

(1)相对定位的元素占据原有空间,如下图中的一段窄空白区域。
并且相对定位元素设置其自身的包含块,然后相对于那个上下文偏移自身。
下图中,红色框就是该②原本文档布局的位置。设置了top:10px;之后,相对于本身的位置下移了10个像素。
<div style="height: 100px;width: 200px;background-color: #00ee00;top:10px;bottom:20px;"></div>
<div style="height: 100px;width: 200px;background-color: gold;top:10px;bottom:20px;position: relative"></div>

 
(2)相对定位的过度受限,产生的后果。
css2.1中指出,如果遇到过度受限的相对定位,一个值会重置两一个值得相反数。因此这里博疼痛=-top
也就是top:10px;bottom:-10px;
效果就是:div元素往下移动10个像素。
<div style="height: 100px;width: 200px;background-color: #00ee00;top:10px;bottom:20px;position: relative"></div>

 
 

个人认为两者有着本质的区别

top,right,bottom,left是元素相对于包含块的偏移属性。
margin-top..等属性是元素中盒模型的外边距属性。
看上去两者都能造成元素与元素的位置关系。
 
---2016-08-21---

left与margin-left的区别

<div style="width:100px;height:100px;background-color:black"></div>
<div style="width:100px;height:100px;background-color:gray;position:relative;left:100px"></div>

效果:

<div style="width:100px;height:100px;background-color:black"></div>
<div style="width:100px;height:100px;background-color:gray;position:relative;margin-left:100px"></div>

 两者的区别就是一个是属于盒模型属性,一个只是相对于包含快的偏移量
 
(还有很多内容有待学习与完善)

CSS 定位之绝对与相对的更多相关文章

  1. css定位

    文档流 所谓的文档流,指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列.并最终窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素.脱离文档流即是元素打乱了这个排列,或是从排版 ...

  2. 常用的CSS定位,XPath定位和JPath定位

    CSS定位 举例 描述 div#menu id为menu的div元素 div.action-btn.ok-btn class为action-btn和ok-btn的div元素 table#emailLi ...

  3. div+css定位position详解

    div+css定位position详解 1.div+css中的定位position 最主要的两个属性:属性 absolute(绝对定位) relative(相对定位),有他们才造就了div+css布局 ...

  4. CSS 定位

    一.CSS 定位和浮动   它们代替了多年来的表格布局.   定位的思想很简单,相对于正常位置.相对于父元素.另一个元素甚至是浏览器窗口的位置.   浮动在 CSS1 中被首次提出.浮动不完全是定位, ...

  5. Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析

    加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析 1.技术背景       在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链 ...

  6. CSS定位小技巧

    CSS定位Static 默认定位Relative 相对定位:left 和topposition: relative;/*相对定位*/ left:40px;/*在原来的位置向右移动*/ top:100p ...

  7. (七)CSS定位(Positioning)

    CSS定位属性允许对元素进行定位. 一切皆为框: div.h1或p元素常被称为块级元素,而span和strong等元素成为行内元素,但是可是使用 display 属性改变框的类型,将display设置 ...

  8. CSS定位(CSS定位概述、相对定位、绝对定位、浮动)

    CSS 定位属性 CSS 定位属性允许你对元素进行定位. 属性 描述 position 把元素放置到一个静态的.相对的.绝对的.或固定的位置中. top 定义了一个定位元素的上外边距边界与其包含块上边 ...

  9. CSS定位(postion)和移动(float)

    5.定位和移动:Positioning(定位)CSS定位属性允许你为一个元素定位.它也可以将一个元素放在另一个元素后面,并指定一个元素的内容太大时,应该发生什么. 元素可以使用的顶部,底部,左侧和右侧 ...

  10. CSS定位属性Position详解

    CSS中最常用的布局类属性,一个是Float(CSS浮动属性Float详解),另一个就是CSS定位属性Position. 1. position:static 所有元素的默认定位都是:position ...

随机推荐

  1. 前端框架 EasyUI (2)页面布局 Layout

    在 Web 程序中,页面布局对应用程序的用户体验至关重要. 在一般的信息管理类的 Web 应用程序中,页面结构通常有一个主工作区,然后在工作区上下左右靠近边界的区域设置一些边栏,用于显示信息或放置一些 ...

  2. .NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布

    众所周知,Red Hat和微软正在努力使.NET Core成为Red Hat企业版Linux (RHEL)系统上的一流开发平台选项.这个团队已经一起工作好几个月了,RHEL对.NET有许多需求.今天在 ...

  3. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  4. document.documentElement.clientHeight 与 document.body.clientHeight(杜绝千篇一律的抄袭!!)

    document.documentElement.clientHeight 与 document.body.clientHeight用来获取页面可视高度我觉得有点问题.这两个应该不是一个东西. 页面中 ...

  5. CentOS 7配置LNMP开发环境及配置文件管理

    安装并配置MySQL 5.6 从CentOS从7.x开始默认使用MariaDB.MariaDB完全兼容MySQL,包括API和命令行.但是很多时候我们还是会想要安装MySQL,所以不能直接通过yum命 ...

  6. 读python源码--对象模型

    学python的人都知道,python中一切皆是对象,如class生成的对象是对象,class本身也是对象,int是对象,str是对象,dict是对象....所以,我很好奇,python是怎样实现这些 ...

  7. 【知识必备】一文让你搞懂design设计的CoordinatorLayout和AppbarLayout联动,让Design设计更简单~

    一.写在前面 其实博主在之前已经对design包的各个控件都做了博文说明,无奈个人觉得理解不够深入,所以有了这篇更加深入的介绍,希望各位看官拍砖~ 二.从是什么开始 1.首先我们得知道Coordina ...

  8. SharePoint 2016 入门视频教程

    之前一直有朋友让自己录一些SharePoint的入门视频,之前没有太多时间,一个巧合的机会收到CSDN学院的邮件,可以在CSDN上发布视频教程,自己就录了一些.说起录视频也是蛮辛苦的,每天下班吃完饭要 ...

  9. Form 表单提交参数

    今天因为要额外提交参数数组性的参数给form传到后台而苦恼了半天,结果发现,只需要在form表单对应的字段html空间中定义name = 后台参数名 的属性就ok了. 后台本来是只有模型参数的,但是后 ...

  10. jetBrain系列软件

    请尽量支持正版软件!https://www.jetbrains.com/ 本文仅供参考 以下提供一种方法可以无限期体验JetBrain2016系列软件. 1.下载JetbrainsCrack-2.5. ...