`
renhongchao
  • 浏览: 121399 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

深入理解position:relative 与 position:absolute(div b相对于div a进行绝对定位)

 
阅读更多
position 有三个值,static(静态)、relative(相对)、absolute(绝对);由于static是所有页面元素的默认值,因此设置元素的定位类型时几乎不用这个值,除非用于覆盖之前的定义。对于后两者,一般应用:在一个相对定位的元素里面放置一个绝对定位的元素,如图:
                                

 
  子元素B可以通过top、right、bottom、left来精确定位,定位的参考目标就是其具有相对定位属性的父级元素A;并且设置这些偏移后,产生的空隙会被后面的元素填充(如果后面的元素足够尺寸的话)。由于B元素具有absolute定位属性,相当于从文档流中抽取出来,浮动在原平面排版上,形成“层”,如果有多个“层”,层与层之间就必然会有谁覆盖谁,谁在上谁在下的竞争关系,因此,为解决这个竞争,就产生了 z-index(空间坐标系的Z轴) 属性,谁的值大,谁就在上面。另外,如果父级元素A没有设置relative,那么B元素就会以body标签当作参考点。

  对于具有position:relative属性的元素A,其top、right、bottom、left四个方向的位置偏移就会以该元素的原来位置作为参考点,而不是像上面说的,以具有relative定位属性的父级元素或body作为参考点。在设置了偏移后产生了空隙,其周围的元素并不会填充这些空隙,即使它们足够尺寸(演示)。
  值得注意的是,此时元素A的margin,margin将作用于该元素的原来位置,由于原位置产生偏移,该元素的最终位置将是margin与top、right、bottom、left共同作用后的位置,并且其周围元素的位置也将产生影响。

  回过头来再看看 relative 里面的 absolute,比如上面的A、B两个元素,如果两个元素都设置了top、right、bottom、left,对于元素B来说,其位置偏移的参考点是元素A偏移后的位置,不是元素A的原位置,同样,如果元素B有margin,其参考点也是元素A偏移后的位置,这点很重要,这才是absolute的概念(演示)。



=======================================================


用Div+CSS进行网站布局时,做一些浮动层等特殊特殊效果时要考虑到定位问题。这就要用到Position属性等。 Position属性有四个值: static、fixed、absolute和relative,后面两个在布局中的定位里是经常用到的,顾名思义,absolute是指绝对定位,即将对象从文档流中拖出,使用left,right,top,bottom等属性进行绝对定位,而其层叠通过z-index属性定义。此时对象不具有边距,但仍有补白和边框。ralative是指相对定位,就是依据left,right,top,bottom等属性在正常文档流中偏移位置。
  但是,怎么个绝对法,又怎么个相对法呢?以前我一直没有仔细去研究它,到具体应用时有时会有点迷糊,我相信很多朋友也会有这样的问题。今天我特意测试了一下,得出了以下结论:
1、当Position属性值为Relative时
对象原来占有的位置保留,其后面的对象按原来文档流仍然保持原来的位置
Top的值表示对象相对原位置向下偏移的距离
bottom的值表示对象相对原位置向上偏移的距离
两者同时存在时,只有Top起作用。
left的值表示对象相对原位置向右偏移的距离
right的值表示对象相对原位置向左偏移的距离
两者同时存在时,只有left起作用。
2、当Position属性值为absolute时
对象从文档流中抽取出来,原占有的位置被后面的对象顶替上来
Top的值表示对象上边框与浏览器窗口顶部的距离
bottom的值表示对象下边框与浏览器窗口底部的距离
两者同时存在时,只有Top起作用;如果两者都未指定,则其顶端将与原文档流位置一致,即垂直保持位置不变。
left的值表示对象左边框与浏览器窗口左边的距离
right的值表示对象右边框与浏览器窗口右边的距离
两者同时存在时,只有left起作用;如果两者都未指定,则其左边将与原文档流位置一致,即水平保持位置不变。
  在Position属性值为absolute的同时,如果有一级父对象(无论是父对象还是祖父对象,或者再高的辈分,一样)的Position属性值为Relative时,则上述的相对浏览器窗口定位将会变成相对父对象定位,这对精确定位是很有帮助的。
  • 大小: 9.7 KB
分享到:
评论

相关推荐

    CSS中的position:relative;的作用示例介绍

    正确的做法是设置`div#demo`的`position`为`relative`,这样`div#demo`成为`div#sub`的定位参考点。然后,对`div#sub`应用`position:absolute;`,并使用`right:10px; top:10px;`来确定相对于`div#demo`的位置。 ...

    css中position:relative和overflow:hidden之间的问题

    `position`属性用于定义元素的定位模式,它有多种值,如`static`(默认值)、`relative`、`absolute`、`fixed`和`sticky`。当`position`设置为`relative`时,元素保持其正常流中的位置,但可以通过`top`和`left`等...

    position:relative/absolute无法冲破的等级

    本文将深入探讨`relative`与`absolute`定位方式在特定情况下的局限性及其解决方案。 #### 关键概念解释 - **position:relative**:相对定位。元素相对于其正常位置进行定位,即相对于自身原来的位置偏移,不会脱离...

    div的position属性

    绝对定位是层模型的一种,它允许元素相对于最近的已定位祖先元素(具有`position`属性为`relative`、`absolute`或`fixed`的祖先元素)进行定位;如果没有这样的祖先元素,则相对于`<body>`元素定位。 **语法**: ``...

    CSS教程——元素定位

    使用 position: relative 定位父元素,position: absolute 定位子元素时,子元素将相对于父元素进行定位。例如: ```html <div id="div-1"> <div id="div-1a">this is div-1a element.</div> </div> ``` ```css #...

    css的position里的relative和absolute的区别.docx

    absolute 定位的元素是相对于 static 定位以外的第一个父元素举行定位的,而 relative 定位的元素是相对于其正常位置举行定位的。 在实际应用中,我们可以根据需要选择使用 absolute 或 relative 定位。例如,如果...

    HTML基础知识——css样式表,样式属性,格式与布局详解

    那么div相对于浏览器定位,如下图中b(距离浏览器右边框为50像素,距离下边框为20像素)。  2.外层有position:absolute(或relative);那么div相对于外层边框定位,如下图中bb(距离d的右边框50像素,距离d的下边...

    div中的相对定位与绝对定位.docx

    本篇文章主要探讨了`div`中的相对定位(`relative`)与绝对定位(`absolute`)的区别及其应用。 1. 相对定位(`position: relative;`) 相对定位保留了元素在正常文档流中的位置,元素的原始位置不会被改变,但它...

    div中的相对定位与绝对定位.pdf

    它相对于最近的已定位祖先元素(具有`position`属性且非`static`的元素),如果没有这样的祖先,那么它会相对于浏览器窗口。绝对定位的元素可以使用`z-index`来控制其在堆叠顺序中的位置,数值越大,元素越靠前。...

    关于CSS position属性值absolute,relative的解释.zip

    它会根据最近的非`static`定位(即`relative`、`absolute`或`fixed`)的祖先元素进行定位。如果没有这样的祖先,那么它会相对于浏览器窗口定位。使用`left`、`right`、`top`和`bottom`可以精确地控制元素的位置。...

    div弹出层position属性小解

    `absolute` 定位是指元素相对于最近的已定位祖先元素(即设置了 `position` 且不是 `static` 的祖先元素)进行定位。如果没有这样的祖先元素,则相对于初始包含块(通常是 `<html>` 元素)定位。`absolute` 定位的...

    Position属性之relative用法

    relative定位,顾名思义,是相对于元素自身原本在文档流中的位置进行定位。当给一个元素设置`position: relative;`后,我们可以使用top、bottom、left和right这些偏移量属性来调整元素的位置。例如,`top: -50px;`会...

    offsetparent计算

    - 内部 div 被设置为 `position: absolute`,这意味着它将脱离文档流并相对于最近的已定位祖先元素(在这里是外部 div)进行定位。 - 因此,内部 div 的 `offsetParent` 是外部 div。 #### 情况三:内部 div 不是 ...

    详解CSS 子元素相对于父元素固定定位解决方案

    **绝对定位(absolute)**:绝对定位则将元素从正常文档流中移除,它会相对于最近的已定位祖先元素进行定位。如果找不到已定位的祖先元素,则会相对于初始包含块(通常是视口或HTML元素)。设置`position: absolute;...

    深入理解css布局之定位与浮动

    【深入理解CSS布局之定位与浮动】 在CSS布局中,定位和浮动是两个非常关键的概念,它们能够帮助开发者实现复杂的网页布局和设计效果。本文将详细介绍这两个概念以及它们在实际应用中的工作原理。 1. **文档流** -...

    借助CSS定位来实现把一个DIV放到另一个div右下角

    借助CSS定位来实现,你将右下角的那个DIV放在另一个DIV里面,参考代码如下示: 复制代码代码如下: <div id=”box1″> <div id=”box2″>测试内容</div> </div> <style> <!– #box1{width:600px;height:600...

    绝对定位+相对定位的妙用——一秒搞清子父级关系

    如果父元素被设置为相对定位,那么它的子元素可以使用绝对定位,这样子元素的位置就会相对于父元素进行调整,而不是相对于文档流。这在创建嵌套布局、弹出框或者复杂导航菜单时非常有用。 4. **案例应用**: 假设...

    通过position定位实现div底端对齐

    为了完整实现底端对齐,父元素div必须有相对定位(relative)或者更高级的定位(absolute, fixed),才能允许子元素div进行绝对定位(absolute)。如果父元素没有设置定位,那么子元素的绝对定位将会是相对于整个...

    CSS之Position详解

    - **Absolute(绝对定位)**:相对于最近的已定位祖先元素进行定位,不占据原来的空间。 - **Fixed(固定定位)**:相对于浏览器窗口进行定位,不受页面滚动的影响。 - **Static(静态定位)**:默认定位方式,元素...

    CSS让子容器超出父元素(子容器悬浮在父容器效果)

    第二步:子容器定位设置为 absolute(绝对定位)。 <div id=a> <div id=b>我要浮出去!</div> </div> #a{ width:400px; height:100px; background:rgb(0, 0, 0); position:relative;/*父元素>相对定位*/ } #b...

Global site tag (gtag.js) - Google Analytics