解析position定位及区别

position定位可分为:absolute;relative;fixed;static。

absolute:生成绝对定位的元素,相对于最近一级的,定位不是static的父辈元素;

relative:生成相对定位的元素,相对于其在普通流中的位置进行定位;

fixed:生成绝对定位的元素,通常相对于浏览器窗口或frame进行定位;

static:默认值,没有定位,元素出现在正常的流中。

相对定位的元素使得元素“浮”了起来,就是说z-index大于0的,应该是1,所以不论它怎么进行移动却总是覆盖普通文档流元素,而且定位可激活z-index,可以对其设置z-index层叠关系,而且相对元素是保留了自己的占位信息,普通文档流中的元素不会认为它不存在,它的移动方式是以自身为基准的,移动方式为left right bottom top ;

而绝对定位元素首先它是脱离了文档流,而且并没有保留占位信息,但是也大于z-index,普通元素不认为它存在,它的定位方式是以附近祖先元素或者父级元素设置了定位以基准的,如果无,则body,而且absolute会改变元素的display类型为inline-block;

浮动定位,可以说明他是脱离了文档流,而且z-index在0这一层,定位方式为left right,直到碰到它的包围框或其他浮动元素为止,它也可以改变元素的display类型为inline-block,但是对absolute、float设置display类型是无效的,最后,文本元素并不会覆盖浮动元素。

position的相对定位和绝对定位到底有什么区别:

relative: 相对定位,相对于自己在文档流中的位置进行偏移,并且原来在文档流中占有的位置得以保留。
absolute;绝对定位,相当于自己向父级元素查找出的第一个带有position属性的元素进行便宜,并且脱离文档流,原来在文档流中所占用的位置不保留。

文档流可以理解为你的html文档在没有使用绝对定位、固定定位以及浮动定位的情况下,文档中元素在页面中的布局方式。 在这个时候所有的元素都是处在同一层的。   在使用了上述三种定位之后,就有元素脱离的文档流,虽然页面对用户来说是一个平面,但是在开发者眼里应该抽象出层级的概念,也就是说网页是类似于ps一样是层级叠加而成的。

运用:定位标签:position

包含属性:relative(相对)

absolute(绝对)

1.position:relative; 如果对一个元素进行相对定位,首先它将出现在它所在的位置上。然后通过设置垂直或水平位置,让这个元素"相对于"它的原始起点进行移动。(再一点,相对定位时,无论是否进行移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖其他框)

相对定位:relative 没有脱离正常的文档流,被设置元素相对于其原始位置而进行定位,其原始占位信息仍存在

2.position:absolute; 表示绝对定位,位置将依据浏览器左上角开始计算。 绝对定位使元素脱离文档流,因此不占据空间。普通文档流中元素的布局就像绝对定位的元素不存在时一样。(因为绝对定位的框与文档流无关,所以它们可以覆盖页面上的其他元素并可以通过z-index来控制它层级次序。z-index的值越高,它显示的越在上层。)

绝对定位:ablution 脱离了文档流与浮动模型,独立于其他对象而存在,没有占位。

3.父容器使用相对定位,子元素使用绝对定位后,这样子元素的位置不再相对于浏览器左上角,而是相对于父窗口左上角。

下面具体案例说明:

1。若c嵌套在b中,且b,c均是相对定位,则c的相对定位是相对于b而言的,b保留占位信息,且b中保留c的占位信息。

2。若c嵌套在b中,b进行绝对定位,c进行相对定位,则b脱离浮动,没有占位信息,而c相对b定位,并在b中发生占位。

3。若a,b,c,d并列,且都嵌套在id为group的div中,且:

#group{potision:relative;height:200px;width:4oopx;}         #b{potision:absolute;left:20px;top:20px;}
在这种方式下,父级元素是相对定位,但没有设定left,top的值,可以将其看做是浮动对象,而b是绝对定位,因而不占位,但由于父级元素是相对定位,所以这里的绝对定位变成了相对于父级元素的绝对定位,而不是相对于浏览器的。
例如:

<div id="main">
<div id="a">aaaaaaaaaa</div>
<div id="b">bbbbbbbb</div>
</div>
(1)若给a设置position:absolute,会使a脱离正常的文档流,a会不占位,即b不再基于a,而是直接从parent开始定位。(b位置和没有a一样)。

若给a设置position:relative,(没有脱离文档流)则a会占位,a相对于他的原始位置进行定位,看上去是浮在main上的,而b会按原来的方式进行排列,不受a的影响。(b的位置和a没有position属性时一样)
(2)若给main设置position:relative/absolute;则里面的a或b的绝对定位或相对定位都是相对于父级元素main的,之后后再按照相对或绝对的方法进行定位
注意:若父级元素没有设定有效的宽高值,则b是相对于group中最后一个元素的右上角进行绝对定位父级元素要设置宽高。

时间: 2024-10-08 19:34:49

解析position定位及区别的相关文章

解析position定位

关于position定位(所有主流浏览器都支持 position 属性),大家会联想到relative和absolute,下面我就讲一下relative和absolute分别是相对于谁进行定位的? 在CSS布局中,Position发挥着非常重要的作用,很多容器的定位是用Position来完成,有四个可选值,它们分别是:static.absolute.fixed.relative,这里向大家描述一下它的使用. absolute:生成绝对定位的元素,相对于最近一级的定位不是static的父元素来进行

position定位的解析与理解

每当我们在制作页面布局的时候总会遇到各种各样的让元素进行移动的时候,我们要不就是用margin属性来使元素进行移动,要不就是用position定位来进行,下面我就说下position定位的使用以及注意事项. 我们常用的position它有4种值,分别是  static    relative     absolute     fixed. static它是position的默认值: 给代码添加和不添加没有任何的不同,它是没有任何定位于效果的,也不会脱离文档流. relative是position

元素重叠及position定位的z-index顺序

多次在项目中遇到html页面元素的非期待重叠错误,多数还是position定位情况下z-index的问题.其实每次解决类似问题思路大致都是一样的,说到底还是对z-index的理解比较模糊,可以解决问题却不大了解其原因,导致重复出错......于是决定把重叠问题弄清下,把z-index理顺下. 经过一番查找对比实践理解,下面就从元素重叠的背景常识及可能原因说起,浅谈下position定位元素的z-index顺序.总结下我目前的理解,希望也能对遇到过类似问题有同样疑惑的你有一点帮助或启发. 元素位置

浅析CSS——元素重叠及position定位的z-index顺序

元素位置重叠的背景常识 (x)html文档中的元素默认处于普通流(normal flow)中,也就是说其顺序由元素在文档中的先后位置决定,此时一般不会产生重叠(但指定负边距可能产生重叠).当我们用css为某个元素指定 float浮动或者position定位后,元素的定位将会依情况发生如下改变: 1. 指定float值left/right 行内元素也会隐形变成块元素,元素会脱离文档的普通流,向左或右浮动,直到其外边缘碰到包含框或另一个浮动框. 2. 指定position值relative 可以相对

CSS定位:几种类型的position定位的元素

当人们刚接触布局的时候都比较倾向于使用定位的方式.因为定位的概念看起来好像比较容易掌握.表面上你确切地指定了一个块元素所处的位置那么它就会坐落于那里.可是定位比你刚看到的时候要稍微复杂一点.对于定位来说,有一些东西会绊倒新手,所以在它成为你的惯用技巧前你需要掌握它们. 一旦你更深入地了解了它是怎么运作的,你就能够做出一些更棒的事情来. CSS盒模型和定位的类型 为了搞清楚定位首先你得了解CSS盒模型.在上一句中的链接是我写在InstantShift 中的一篇关于盒模型的文章.我在那篇文章做了详细

position定位——让人又爱又恨的属性

关于css中的position这个属性,在使用的时候,有时很强大,有时又让人很无奈. 强大的时候,对于div中的一些小物件不方便使用margin或者padding的时候,给与position:absolute;再配备left.right.top和bottom,基本上就是想放哪里放哪里了. 让人无奈的时候,就是我们一旦滥用了position这个定位属性,就会让自己的布局飞的满天是,又因为z-index没有设定好,基本上,整体的布局就会让你手足无措,找原因的话,又非常麻烦,最后,恐怕只能推倒重做了.

归纳篇(一)CSS的position定位和float浮动

近期会更新一系列博客,对基础知识再度做个巩固和梳理. 一.position定位 (一):position的属性 1.absolute:生成绝对定位的元素,相对于最近一级定位不是static的父元素来进行定位: 2.relative:生成相对定位的元素,相对于其所在普通的文档流位置进行定位: 3.static:默认值,没有定位,元素出现在正常的文档流中; 4.fixed:老IE不支持,和absolute一致,相对于窗口进行定位,当出现滚动条时,不随着滚动而滚动: 5.sticky:(CSS3)有兼

认识position定位

在html中,改变布局有两种方式一种是float一种是position定位,今天解释一下什么position定位. position是CSS中非常重要的一个属性,通过position属性,我们可以让元素相对于其正常位置,父元素或者浏览器窗口进行偏移. postion属性我们成为定位,它有4个不同类型的定位,这些类型会影响元素的生成方式,下面我们详细说明position属性. Position有4个属性值:1.static.2.relative.3.absolute.4.fixed.这几种属性.

position定位解决弹框拖拽出屏幕的情况

position定位有四种情况: 1 static默认情况,没有定位,元素正常出现在文档流中. 2 fixed 绝对定位 元素的位置相对于浏览器窗口是固定位置. 即使窗口是滚动的它也不会移动:定位脱离文档流,不占据位置. 3 relative相对定位,相对其正常位置,还在文档流中,占据位置. 相对定位元素经常被用来作为绝对定位元素的容器块. 4 absolute绝对定位 绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html> 定位脱离文档流,不