<p>这是一行普通的文字,这里有个 <em>em</em> 标签。</p>
这段html代码涉及4种boxes:
1.首先是p标签所在的containing box,此box包含了其他的boxes;
2.然后就是inline boxes,如下图标注
iinline boxes不会让内容成块显示,而是排成一行,如果外部含inline属性的标签(span,a,cite),则属于inline boxes,如果是个光秃秃的文字,则属于匿名inline boxes。
3. line boxes
在containing boxes里,一个一个的inline boxes组成了line boxes,这是浮动影响布局的关键box模型。
4.content area
content area是一种围绕文字看不见的box.content area的大小与font-size的大小相关。
正常的图文混排默认情况下,图片与文字混排应该是这个样子:图片与文字基线对齐,图片与文字在同一行上,如下图所示:上图中,图片为一个inline boxes,两边的文字也是inline boxes。由于line boxes的高度是由其内部最高的inline boxes的高度决定的,所以这里line boxes的高度就是图片的高度。此时图片与文字是同一box类型的元素(都是inline boxes),是在同一行上的,所以,默认状态下,一张图片只能与一行文字对齐。而要想让一张图片要与多行文字对齐,您唯一能做的就是破坏正常的line boxes模型。
含有浮动属性的图片与文字先看一下图片添加了float:left样式后的表现,见下图:
正常情况下,图片自身就是个inline boxes,与两侧的文字inline boxes共同组成了line boxes,但是一旦图片加入了浮动,情况就完全变了。可以认为是浮动破坏了img图片的inline boxes特性,至少有一点可以肯定的是,刚才的图片的inline boxes不存在了。一旦图片失去了inline boxes特性就无法与inline boxes的文字排在一行了,其会从line boxes上脱离出来,跟随自身的方位属性,靠边排列。
这个从line boxes上脱离的浮动元素其实就是一个躯体,一个空壳子,表象。因为其没有inline boxes.。这个inline boxes有个很重要的概念。
在目前的css世界中,所有的高度都是由两个css模型产生的,一个是box盒状模型,对应css为“height+padding+margin”,另一个是line box模型,对象样式为line-height。前者的height属性分为明显的height值和隐藏的height值,所谓隐藏的height值是指图片的高度,一旦载入一张图片,其内在的height值就会起作用,即使看不到"height“这个词。而后者针对于文字等这类inline boxes的元素(图片也属于inline boxes,但其height比line-height作用更凶猛,故其inline boxes的高度就等于其自身的高度,对line-height无反应),inline boxes的高度直接受line-height控制(改变line-height文字拉开或重叠就是这个原因),而真正的高度表现则是由每行众多的inline boxes组成的line boxes(等于内部最高的inline boxes),而这些line boxes的高度垂直堆叠形成了containing box的高度,也就是我们见到的div或p标签之类的高度。所以对于line box模型的元素而言,没有inline boxes,就没有高度了,而浮动恰恰是将元素的inline boxes破坏了,于是这些元素就没有高度了。
浮动破坏了图片的inline box,产生了两个结果:一是图片无法与文字同行显示,脱离了其原来所在的line box链;二是没有了高度(无inline box -> 无line box -> 无高度)。而这些结果恰恰是文字环绕图片显示所必须的。
浮动元素与绝对定位元素的差别:
最主要的在于,绝对定位的元素脱离了文档流,而浮动元素依旧在文档流中。这造成的显示差异就是:同处于文档流中的文字实体不会与浮动元素重叠,而会与绝对定位元素重叠。这就是文字环绕显示的重要原因之一:虽然图片实际占据的高度为0,但是由于其宽度实体存在(包裹性),同样是content area实体的文字不会与之重叠(外部的容器盒子containing box(p,div,ul,li)会重叠)。

line boxes盒模型相关推荐

  1. CSS2.1 盒模型

    8 Box model盒模型 8.1 Box dimensions 盒子的大小 Each box has a content area (e.g., text, an image, etc.) and ...

  2. Flexbox弹性盒模型

    Flexbox叫弹性盒模型,它的使用场景主要是屏幕自适应布局和取代浮动布局. 细节性的知识需要大量实践,系统性的知识则需要真正理解系统.我认为Flexbox就属于系统性的知识.所以这篇文章从概念入手, ...

  3. 深入css布局 (1) — 盒模型 元素分类

    深入css布局(1)-- 盒模型 & 元素分类     " 在css知识体系中,除了css选择器,样式属性等基础知识外,css布局相关的知识才是css比较核心和重要的点.今天我们来深 ...

  4. CSS 盒模型与box-sizing

    一.盒模型 一个web页面由许多html元素组成,而每一个html元素都可以表示为一个矩形的盒子,CSS盒模型正是描述这些矩形盒子的存在. MDN的描述: When laying out a docu ...

  5. html5 box sizing,CSS 盒模型与box-sizing

    一.盒模型 一个web页面由许多html元素组成,而每一个html元素都可以表示为一个矩形的盒子,CSS盒模型正是描述这些矩形盒子的存在. MDN的描述: When laying out a docu ...

  6. HTML5+CSS3基础学习day3盒模型

    文章目录 前言 一.盒模型 盒模型图例 盒子水平布局 盒子垂直布局 外边距的重叠 行内元素的盒模型 盒子的尺寸 轮廓和圆角 二.练习 练习1(图片的列表) 练习2(导航条) 练习3(列表) 总结 前言 ...

  7. 【web前端HTML5+CSS3】03CSS--layout(布局)之盒模型

    目录 1.文档流 2.盒模型 3.盒模型--边框 4.盒模型--内边距 5.盒模型--外边距 6.盒子的水平布局 7.盒子的垂直布局 8.外边框的折叠 9.行内元素的盒模型 10.默认样式 11.练习 ...

  8. 深入理解盒子模型——CSS视觉格式化模型|盒模型|定位方案|BFC

    视觉格式化模型 页面(文档树)可以想象成是由一个个的Box组合而成的,而视觉格式化模型(Visual formatting model)是一套规则,将这些框布局成访问者看到的样子. 哪些因素控制了这些 ...

  9. CSS盒模型( CSS margin 属性)

    常见的图片 怎样理解呢看下面例如 ' 设置的属性如下 .mian_one{width: 500rpx;height: 500rpx;background: #00d8a0;}.main_two{wid ...

最新文章

  1. 【Python 自然语言处理 第二版】读书笔记2:获得文本语料和词汇资源
  2. java 图片上传非jsp_java问题用java代码在后台如何将jsp页面上的图片上传(是 爱问知识人...
  3. WinPcap捕获数据包
  4. linux查看最近修改过的文件
  5. Java高级特性——反射
  6. ML《集成学习(二)Boosting之Adaboosting》
  7. 【Kafka】【未解决】kafka反序列化数据报错jackson2 JsonParseException: Invalid UTF-8 middle byte 0xc0
  8. BroadcastReceiver广播
  9. 微信小程序 View:flex 布局
  10. 掌握了AI这些点,面试官的天选之子就是你
  11. python大神写的代码_【python】抄写大神的糗事百科代码
  12. 线程通过实现Runnable接口和继承Thread方法的区别
  13. 【转】 Apache分析脚本
  14. libcmtd.lib(wincrt0.obj) : error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 __tmainCRTStartup 中被引用
  15. CHI 2016 2017 Paper Shared Gaze for Remote Collaboration
  16. Jenkins使用教程
  17. linux 中文ssid 显示乱码,把中文SSID变成乱码!一切正常了?_网络设备-中关村在线...
  18. 如何在标准的机器学习流程上玩出新花样?
  19. Office软件Android无法登录,office mobile(安卓版)无法使用
  20. 中科呐喊WiFi热点广告机APP使用教程(安卓)

热门文章

  1. Mybatis框架的引入
  2. 2022年二级建造师机电工程常用材料及工程设备测试题及答案
  3. 五分钟彻底理解Java Proxy原理
  4. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.15日(2018省赛A组第3题)
  5. 5.JavaScript代码优化
  6. AcWing第 70 场周赛题解
  7. linux nginx css,nginx配置合并js和css文件请求
  8. JMS及其API介绍
  9. 聚合收款收银收款多商户门店系统开发
  10. 如何使用jquery获取 (滚动条)距离(页面底部)的距离