文本流,概括地说其实就是一系列字符,是文档的读取和输出顺序,也就是我们通常看到的由左到右、由上而下的读取和输出形式,在网页中每个元素都是按照这个顺序进行排序和显示的,而position属性可以将元素从文本流脱离出来显示。

文档流,英文原版文档为"normal flow",翻译成常规流、普通流也就更好理解它了。

从直观上理解,常规流指的是元素按照其在 HTML 中的位置顺序决定排布的过程,主要的形式是自上而下(块级元素),一行接一行,每一行从左至右(行内元素)。

定位类型包括三种:

常规流:又包含三种类型:块级元素的块级格式、行内元素的行内格式以及两种元素的相对定位方式。

浮动(float)

绝对定位(position:absolute/position:fixed)

W3C的文档:

9.3 Positioning schemes

In CSS 2.1, a box may be laid out according to three positioning schemes:

  1. Normal flow. In CSS 2.1, normal flow includes block formatting of block-level boxes, inline formatting of inline-level boxes, and relative positioning of block-level and inline-level boxes.
  2. Floats. In the float model, a box is first laid out according to the normal flow, then taken out of the flow and shifted to the left or right as far as possible. Content may flow along the side of a float.
  3. Absolute positioning. In the absolute positioning model, a box is removed from the normal flow entirely (it has no impact on later siblings) and assigned a position with respect to a containing block.

An element is called out of flow if it is floated, absolutely positioned, or is the root element. An element is called in-flow if it is not out-of-flow. The flow of an element A is the set consisting of A and all in-flow elements whose nearest out-of-flow ancestor is A.

1 脱离文档流

所以说,脱离文档流只有两种情况,float和绝对定位。

1.1 浮动脱离文档流

利用float脱离文档流的时候,其他盒子元素会无视这个元素,但是其他盒子内的文字依然会为它让出位子,环绕在其周围,也就是说不脱离文本流。下面是在常规流中的代码及效果(只展示body中的内容):

<div class="outOfNormal">This is outofNormal content area.
</div>
<h2>normal contentnormal contentnormal contentnormal contentnormal content</h2>
<p>This is normal content area.This is normal content area.This is normal content area.This is normal content area.</p>

CSS:

.outOfNormal{height: 200px;width: 220px;background-color: #000000;color:#FFFFFF;text-align:center;line-height:200px;overflow:hidden;
}

效果图:

给div加上浮动属性之后:

.outOfNormal{height: 200px;width: 220px;background-color: #000000;color:#FFFFFF;text-align:center;line-height:200px;overflow:hidden;float:left;
}

可以发现,div脱离了文档流,h2元素和p元素都定位不到div,所以顶了上来。但是其中的文字却还是定位在div的右边,说明此时脱离了文档流,并没有脱离文本流。

但是值得注意的是,如果一个浮动元素的上一个元素也是浮动的,那么它会跟在上一个元素的后面。

1.2 绝对定位脱离文档流(absolute)

将浮动改为绝对定位(absolute):

.outOfNormal{height: 200px;width: 220px;background-color: #000000;color:#FFFFFF;text-align:center;line-height:200px;overflow:hidden;position:absolute;
}

可以发现此时的文字也顶到最左侧,忽略了div,脱离了文档流同时也脱离了文本流。

1.2 绝对定位脱离文档流(fixed)

再用position:fixed;试试:

.outOfNormal{height: 200px;width: 220px;background-color: #000000;color:#FFFFFF;text-align:center;line-height:200px;overflow:hidden;position:fixed;
}

发现效果相同。

总结:也就是说使用float可以使元素脱离文档流而不脱离文本流(元素无视它的存在,但是元素中的文字会围绕在它周围,但是不会脱离dom树,用浏览器的审查元素就可以看到脱离文档流的元素、),而使用绝对定位可以使元素脱离文档流和文本流(元素和其中的文字都定位不到它的存在)。

参考:https://www.zhihu.com/question/24529373/answer/29135021

    https://www.zhihu.com/question/21911352

转载于:https://www.cnblogs.com/xiaokeai0110/p/9184983.html

HTML 文档流和文本流的理解相关推荐

  1. 将PDF和Gutenberg文档格式转换为文本:生产中的自然语言处理

    Estimates state that 70%–85% of the world's data is text (unstructured data). Most of the English an ...

  2. 【Python】导出docx格式Word文档中的文本、图片和附件等

    [Python]导出docx格式Word文档中的文本.图片和附件等 零.需求 为批量批改学生在机房提交的实验报告,我需要对所有的实验文档内容进行处理.需要批量提取Word文档中的图片和附件以便进一步检 ...

  3. 控制 Open XML WordprocessingML 文档中的文本

     简介 在 Open XML 字处理文档中处理文本的过程看起来非常简单:文档中包含正文,正文包含段落和表格,表格中包含行和单元格,完全类似于 HTML,不是吗?然后再看,又好像很难.您会看到修订跟 ...

  4. (详细)如何使用Freemarker生成Word文档中的文本、图片、表格、附件?

    前言-Freemarker简单介绍 近期项目工作中需要编写大量格式相同但数据不同的Word文档,需要实现自动生成文档的效果,但是通过网上冲浪和官方文档搜索,相对来说,没有分类整理的文档,因此自己抽空简 ...

  5. 用C#实现在PowerPoint文档中搜索文本

    用编程的方式根据对象模型很容易实现在Word.Excel文档中搜索文本,在PowerPoint里面也同样如此,使用对象模型有助于我们了解office的文档结构. 搜索的思路和方法基本是一样的,用Pow ...

  6. 微软文本检索_如何在Microsoft Word中引用其他文档中的文本

    微软文本检索 You probably have some text that you type often in your Word documents, such as addresses. In ...

  7. 【教程】Spire.PDF教程:C# 如何提取 PDF 文档中的文本和图片

    Spire.PDF是一个专业的PDF组件,能够独立地创建.编写.编辑.操作和阅读PDF文件,支持 .NET.Java.WPF和Silverlight. [下载Spire.PDF最新试用版] 文本和图片 ...

  8. Python使用标准库zipfile+re提取docx文档中超链接文本和链接地址

    推荐教材: <Python程序设计实用教程>,ISBN:978-7-5635-6065-3,董付国,北京邮电大学出版社 教材封面: 全国各地新华书店有售 京东购买链接: 配套资源:教学大纲 ...

  9. Word处理控件Aspose.Words功能演示:用Java从Word文档中提取文本

    Aspose.Words For .NET是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsof ...

最新文章

  1. linux 安装php 5.5_Linux下yum升级安装PHP 5.5
  2. mysql锁3.常见问题
  3. 【操作系统】实验二 作业调度模拟程序
  4. SAP 电商云 Spartacus 产品明细页面的 canActivate 执行逻辑 - isUrlProtected
  5. java super.getclass_Java Class 类 getSuperClass()方法及示例
  6. LeetCode-402:移除k位数字
  7. 力扣1025.除数博弈
  8. (C语言)2066 分组统计
  9. emqtt 试用(七)追踪
  10. Windows7下无法安装Oracle11.1.0问题
  11. tricks about and-or in python
  12. 电子计算机第一代到第四代,从第一代电子计算机到第四代计算机的体系结构都是由运算器、控制器、存储器、输入设备和输出设备组成的,称为( )体系结构。...
  13. 我国政务大数据政策的文本分析:推进逻辑与未来进路
  14. 物联网芯片的协议之Lora及其调制
  15. 倍福PLC使用Visualization功能实现可视化界面
  16. 【测试基础】bug分级、测试流程、ISO9126质量模型
  17. 正弦交流电有效值系数sqrt(2)的推导
  18. AutoCAD 2006/2007等在高版本系统上无法安装
  19. 单点故障解决方案介绍smart link/monitor link /stp
  20. ehcache 官网下载页面

热门文章

  1. SQL 字符串分割表函数
  2. iOS开发 - Swift实现清除缓存功能
  3. pygame碰撞检测
  4. HTML 5 的自定义 data-* 属性和jquery的data()方法的使用
  5. linux0.11学习笔记-技术铺垫-简单AB任务切换程序(1)-实现一个简单的bootloader
  6. 服务器控件开发之基本概念
  7. Shiro表结构设计
  8. jstack应用-查找CPU飚高的原因
  9. Okhttp 插入缓存拦截器 解析
  10. 阿里云大数据计算服务MaxCompute(上篇)