原标题:css position: absolute脱离文档流详解

CSS2.0 HandBook上的解释:

设置此属性值为 absolute 会将对象拖离出正常的文档流绝对定位而不考虑它周围内容的布局。假如其他具有不同 z-index 属性的对象已经占据了给定的位置,他们之间不会相互影响,而会在同一位置层叠。此时对象不具有外补丁( margin ),但仍有内补丁( padding )和边框( border )。

要激活对象的绝对(absolute)定位,必须指定 left , right , top , bottom 属性中的至少一个,并且设置此属性值为 absolute 。否则上述属性会使用他们的默认值 auto ,这将导致对象遵从正常的HTML布局规则,在前一个对象之后立即被呈递。

TRBL属性(TOP、RIGHT、BOTTOM、LEFT)只有当设定了position属性才有效。

当设定position:absolute

如果父级(无限)没有设定position属性,那么当前的absolute则结合TRBL属性以浏览器左上角为原始点进行定位

如果父级(无限)设定position属性,那么当前的absolute则结合TRBL属性以父级(最近)的左上角为原始点进行定位。

当设定position: relative

则参照父级(最近)的内容区的左上角为原始点结合TRBL属性进行定位(或者说相对于被定位元素在父级内容区中的上一个元素进行偏移),无父级则以BODY的左上角为原始点。相对定位是不能层叠的。在使用相对定位时,无论元素是否进行移动,元素依然占据原来的空间。因此,移动元素会导致它覆盖其他框。

一般来讲,网页居中的话用Absolute就容易出错,因为网页一直是随着分辨率的大小自动适应的,而Absolute则会以浏览器的左上角为原始点,不会应为分辨率的变化而变化位置。有时还需要依靠z-index来设定容器的上下关系,数值越大越在最上面,数值范围是自然数。当然有一点要注意,父子关系是无法用z-index来设定上下关系的,一定是子级在上父级在下。

设置此属性值为 relative 会保持对象在正常的HTML流中,但是它的位置可以根据它的前一个对象进行偏移。在相对(relative)定位对象之后的文本或对象占有他们自己的空间而不会覆盖被定位对象的自然空间。与此不同的,在绝对(absolute)定位对象之后的文本或对象在被定位对象被拖离正常文档流之前会占有它的自然空间。放置绝对(absolute)定位对象在可视区域之外会导致滚动条出现。而放置相对(relative)定位对象在可视区域之外,滚动条不会出现。其实对于定位的主要问题是要记住每个定位的意义。相对定位是“相对于“元素在文档流中初始位置的,而绝对定位是”相对于“最近的已经定位的祖先元素。

以下是补充:

虽然有知道css的绝对定位(absolute)、相对定位(relative),但却从未自己动手写过相关的效果!

忙活了一大半天,也算是完成了!也把这两个属性搞明白了一些!

总结如下:

先看下面这一个层结构

此层只应用position:relative;样式
此层只应用position:absolute;样式
不应用样式

1、absolute:不占位、relative:有占位!

如上层结构:

id为rel的层在显示时,会占用一行!其后面的abs层只会在下一行显示出来!

id为abs的层在显示时,会与后面id为sss的重叠在一起!

2、默认情况下(不结合top等来定位),absolute(绝对定位)以父层来定位的

如上面的id为abs的层,如果不结合top等来定位,则其显示位置会随父级posi层(posi在文档左下角,其也会在左下角)

3、在结合top、bottom、right、left等属性时,absolute(绝对定位)以窗口做为定位,relative以自身的占位为基线做偏移!如下:

不应用样式

此层应用position:relative;bottom:30px;样式
此层只应用position:absolute;bottom:30px;样式

以上代码:

id为rel的层会上移并与id为sss的层重叠

id为abs的层会以窗口为基线,移至距离窗口30像素的位置!

4、在结合top、bottom、right、left等属性时,如果想absolute(绝对定位)能以父层做为定位基线的话,则在父层应用absolute或relativ属性就可以!如下:

此层应用position:relative;bottom:30px;样式
此层只应用position:absolute;bottom:30px;样式

以上代码:id为posi的层,也可以用absolute属性!

id为rel的层,不受影响,以自身的占位为基线做偏移!

id为abs的层是以id为posi层的底边做为定位基线,如果此时posi层的高度小于30px的话,abs层可能没办法看到哦!返回搜狐,查看更多

责任编辑:

relative会脱离文档流吗_css position: absolute脱离文档流详解相关推荐

  1. java 输入流可以合并吗_Java 使用IO流实现大文件的分割与合并实例详解

    java 使用IO流实现大文件的分割与合并 文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时 ...

  2. 川希:占卜命理怎么引流精准客户,日引200+算命粉详解!

    川希:占卜命理怎么引流精准客户,日引200+算命粉详解! 如果你是做算命占卜命理类的,本文会对你线上引流获客有很大帮助,每天引流200多算命粉甚至更多不是问题,适合个人or公司团队批量放大操作.本引流 ...

  3. css文本行高是哪个属性_css属性行高line-height的用法详解

    css属性行高line-height的用法详解 发布时间:2014-08-02 23:21:52   作者:佚名   我要评论 本文介绍下css中的line-height属性的用法,通过实例学习css ...

  4. [转] linux系统文件流、文件描述符与进程间关系详解

    http://blog.sina.com.cn/s/blog_67b74aea01018ycx.html linux(unix)进程与文件的关系错综复杂,本教程试图详细的阐述这个问题. 包括:     ...

  5. LU分解(是/否部分主元法)+ 施密特(Schmidt)QR分解 + 吉文斯(Givens)QR分解 + Household QR分解 代码详解,可直接运行版本复测试用例(java8版)

    1)2)LU分解(是/否部分主元法)+ 3)施密特(Schmidt)QR分解 + 4)吉文斯(Givens)QR分解 + 5)Household QR分解 代码详解 可直接运行版本复测试用例(java ...

  6. C++学习45 流成员函数put输出单个字符 cin输入流详解 get()函数读入一个字符

    在程序中一般用cout和插入运算符"<<"实现输出,cout流在内存中有相应的缓冲区.有时用户还有特殊的输出要求,例如只输出一个字符.ostream类除了提供上面介绍过 ...

  7. 一文搞懂大数据开发,大数据开发体系详解

    前言 不知道大家有没有过在搜索引擎搜索过旅游的关键字,不久就可能收到机票的推销的经验.如今是大数据的时代,数据的价值越来越重要.数据即资产,想必大家都听说过.最近公司的项目中也用到了一些大数据的技术, ...

  8. php流调签名,微信接口签名及调用流程详解 - 黎明互联-官方博客 - 黎明互联 - 区块链培训,PHP培训,IT培训,职业技能培训,追求极致!改变您的职业生涯!...

    在调用微信接口的时候无论是支付还是现金红包等等接口都会用到接口的加密和校验,微信的很多数据签名和调用规则其实都是一样的,首先构建原始数据,然后根据规则去除空值和签名方式(如果与的话),接下来案子点排序 ...

  9. 一文读懂经典卷积网络模型——LeNet-5模型(附代码详解、MNIST数据集)

    欢迎关注微信公众号[计算机视觉联盟] 获取更多前沿AI.CV资讯 LeNet-5模型是Yann LeCun教授与1998年在论文Gradient-based learning applied to d ...

  10. 一文速学数模-时序预测模型(五)指数平滑法详解+Python代码实现

    目录 前言 一.指数平滑法 1.简介 2.特点 3.基本原理 4.优缺点 优点 缺点</

最新文章

  1. linux 检测 iptables 是否有重复的规则
  2. javascript canvas九宫格小程序
  3. 如何结合IbatisNet的LIST遍历实现模糊查询
  4. kubevirt在360的探索之路(k8s接管虚拟化)
  5. Centos下磁盘管理
  6. Latch free等待事件
  7. [RHEL5企业级Linux服务攻略]--第5季 Sendmail服务全攻略之高级配置
  8. Mimics 21安装
  9. NVIDIA CUDA各版本下载链接(包括最新11版本和以往10.2版本)
  10. 银博进销存 v2.21.1 医疗器械版 下载
  11. Photoshop实用的快捷键大全
  12. 使用Nginx实现多重流量复制
  13. 你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。请联系你的银行了解更多信息。
  14. Win10 安装NASM
  15. 六【 SpringMVC框架】
  16. PPT演示文稿放映时会议记录的技巧
  17. 开源新手引导框架,支持TypeScript
  18. Bonobo Git Server的使用
  19. 计算机行业就业的发展前景怎么样?
  20. 什么是Vanilla JavaScript?

热门文章

  1. Hadoop学习笔记(三):作业调度器
  2. 论文投稿,遭遇身份歧视该咋办?
  3. LeetCode 939. Minimum Area Rectangle (最小面积矩形)
  4. 基于2.9.6vue-cli初始化webpack工程
  5. mysql 数据库授权
  6. 多线程访问数据库ADO
  7. 按位与、按位或、按位异或、左移、右移运算符的简单介绍(部分二进制运算符的简单介绍)...
  8. jQuery 效果函数
  9. 原创:如何统计并过滤行中单元格有颜色的值
  10. mysql 5.1 到 mysql 5.2的出现的索引BTREE问题 use near 'USING BTREE