前段时间抽空仔细阅读了w3c的css文档关于盒模型方面的一些基础知识。边读边记录了一些要点,在此做些整理,与大家分享,如有理解有误之处,请不吝指教。

1.综述

文档中的每个元素被描绘为矩形盒子。渲染引擎的目的就是判定大小,属性——比如它的颜色、背景、边框方面——及这些盒子的位置。

在CSS中,这些矩形盒子用 标准盒模型 来描述。这个模型描述了一个元素所占用的空间。每一个盒子有四条边界:外边距边界margin edge边框边界border edge内边距边界padding edge 与 内容边界content edge

下面这张图是从MDN搬来的,画的十分简明易懂:

  

2.margin的纵向折叠

  非浮动框元素周边存在2个或者2个以上纵向margin值且二者之间没有border、padding或者其它content存在时,二者之间的纵向距离取margin中的最大值。

  横向margin不产生折叠。

3.auto属性值与UA

  • margin、padding、border、以及content的值为auto时,意味着他们的实际值由UA(user agent)分配。
  • 横向上例如:margin-left width margin-right中有一个值为auto,UA会确保3者相加等于父元素宽度而对auto值的属性进行重新分配具体值。如果,3者都不为auto,那么UA则会强制margin-right的值改为auto。
  • 纵向上类似。
  • 当margin-left width margin-right中超过一个值为auto时,如果width是其中之一,则UA会将margin-left、margin-right的值为设置为0,并赋予width的一个合适的值。如果margin-left、margin-right的值都为auto,UA则会将元素居中。
  • 如果一个浮动元素或块级元素的以上任何一个属性的值为auto,那么UA会将其当作‘0’处理。

4.line-height

  原则上,line-height值赋予元素中文字的总高度。任何行内元素的margin、padding等值都无法改变元素的line-height。也就是说,如果元素的padding值太小,它有可能与其他行文字重叠。

  

5.normal-flow、floats 与 absolute position 

(1)normal-flow 包括block(块级), inline(行内), relative position(相对定位) 3种盒模型;

  • 块级情境下,包含块被依次摆放。默认纵向上自顶向下,横向上仅靠父元素左边界,块级元素之间的距离又各自的margin值决定。
  • 行内模式下,默认元素水平排列,从左向右,自顶向下。横向上的距离规则类似于块级元素,纵向上受到vertical-align、line-height等属性的影响。一个段落(line-box)的行之间不存在margin等属性。
  • 相对定位模式下, 元素在normal-flow方式下布局后,还可以基于相对定位产生位移。这种位移对于其他元素不产生任何影响。

  (2)float-flow(浮动模式)

  • 浮动是指将一个元素浮动到改行的左边或者右边。
  • 例如向左浮动的元素将被移动到父元素的左边界或者前一个左浮动元素的右边界。

  (3)absolute-flow (绝对定位模式)

  • 绝对定位是一种相对与其包含块(父元素中第一个position为relative的元素)的精确定位。
  • 绝对定位的元素被从normal-flow中完全移除。
  • 绝对定位元素完全依据:top, bottom, left, right的属性值来定位。
  • 绝对定位元素的margin值不会折叠。

6. float 与 clear

  • clear:left 要求盒子的顶部边框边缘低于源文档中较早元素产生的任何左侧浮动框的底部外边缘。
  • clear:right 要求盒子的顶部边框边缘低于源文档中较早元素产生的任何右侧浮动框的底部外边缘。
  • clear:both 要求盒子的顶部边框边缘低于源文档中较早元素产生的任何左侧浮动框以及右侧浮动框的底部外边缘。

  clear的计算方法:

  • clear除“none”之外的值可能引入间隙,并阻止边缘折叠,作为元素边缘顶部之上的间隔存在。 它用于将元素在垂直方向推过浮动元素的位置。通过首先确定元素的上边界边缘的假设位置来计算其上设置有“清除”的元素的间隙。 如果元素的'clear'属性为'none',这个位置就是实际上边界的边缘。如果元素的上边界边缘的这个假想位置不超过相关浮动,则引入间隙,并且边缘根据规则折叠。

css文档之盒模型阅读笔记的更多相关文章

  1. 前端开发:css基础知识之盒模型以及浮动布局。

    前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西?  为什么这个浮动没有效果?  这个问题楼主已经回答了n遍.今天则是把 ...

  2. 完美CSS文档的8个最佳实践

      在css的世界,文档没有被得到充分的利用.由于文档对终端用户不可见,因此它的价值常常被忽视.另外,如果你第一次为css编写文档,可能很难确定哪些内容值得记录,以及如何能够高效完成编写. 然而,为C ...

  3. DOM 是什么,Document Object Model,文档对像模型

    #为什么会想起来写这个 在写dynaTrace Ajax的时候,写到这个是个前端性能测试工具,这个工具能记录请求时间,前端页面渲染时间,DOM方法执行时间,以及JavaScript代码解析和执行时间. ...

  4. CSS文档流与块级元素和内联元素

    CSS文档流与块级元素(block).内联元素(inline),之前翻阅不少书籍,看过不少文章, 看到所多的是零碎的CSS布局基本知识,比较表面.看过O'Reilly的<CSS权威指南>, ...

  5. CSS文档流与块级元素和内联元素(文档)

    CSS文档流与块级元素(block).内联元素(inline),之前翻阅不少书籍,看过不 少文章, 看到所多的是零碎的CSS布局基本知识,比较表面.看过O'Reilly的<CSS权威指 南> ...

  6. CSS文档统筹

    一.CSS文档统筹 1.整站里相同的CSS样式提取到一个样式表里,各个页面调用相同的样式文件即可: 2.网站较大的情况下一般会把网站的头部,尾部单独分离出来,包括样式文件: 1)根据页面类型分离文件 ...

  7. CSS文档流、块级元素、内联元素

    CSS文档流与块级元素(block).内联元素(inline),之前翻阅不少书籍,看过不少文章, 看到所多的是零碎的CSS布局基本知识,比较表面.看过O'Reilly的<CSS权威指南>, ...

  8. CSS文档优化

    首先了解下CSS的渲染逻辑,它是从标记的最后一位开始搜索的,例如:.myclass li a,首选它会遍历所有的<a>,然后看哪些<a>之前有<li>,然后再看哪些 ...

  9. 前端学习笔记之CSS文档流

    先引用一段W3C的文档: 9.3 Positioning schemes In CSS 2.1, a box may be laid out according to three positionin ...

随机推荐

  1. HDU 6153 A Secret ( KMP&&DP || 拓展KMP )

    题意 : 给出两个字符串,现在需要求一个和sum,考虑第二个字符串的所有后缀,每个后缀对于这个sum的贡献是这个后缀在第一个字符串出现的次数*后缀的长度,最后输出的答案应当是 sum % 1e9+7 ...

  2. [CSP-S模拟测试]:树(树上上升序列+主席树+线段树)

    题目传送门(内部题78) 输入格式 第一行输入两个整数$n,q$,表示节点数和询问数. 第二行输入$n$个整数$w_i$,表示第$i$个点的智商. 第三行至第$n+1$行每行输入两个数$x,y$,表示 ...

  3. 深入理解BFC和IFC

    1. 为什么会有BFC和IFC 首先要先了解两个概念:Box和formatting context: Box:CSS渲染的时候是以Box作为渲染的基本单位.Box的类型由元素的类型和display属性 ...

  4. ASYNC_NETWORK_IO等待事件和调优

    测试反应测试数据库整体出现hang的情况,检查对应的等待事件,发现大量的resource_semaphore等待事件, 查看内存占用情况: ​SELECT  *  FROM    sys.dm_exe ...

  5. linux中shell变量$#,$@,$0,$1,$2的含义解释<转>

    linux中shell变量$#,$@,$,$,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命 ...

  6. page size

    https://dev.mysql.com/doc/refman/5.7/en/glossary.html#glos_page_size https://dev.mysql.com/doc/refma ...

  7. 用Vue来实现音乐播放器(八):自动轮播图啊

    slider.vue组件的模板部分 <template> <div class="slider" ref="slider"> <d ...

  8. ios 无法安装xxx,请稍后再试

    通过xcode可以用模拟机器运行工程,但是 打出包后: 真机安装提示 无法安装xxx,请稍后再试 已经信任了证书 问题原因:xcode配置的 运行手机上的操作系统太高了是 解决办法:deploymen ...

  9. Powershell指令集_1

    目录 目录 前言 程序进度条 Write-Progress 执行表达式 Invoke-Expression 表格化打印信息 Format-Table 获取系统服务 Get-WmiObject 循环 F ...

  10. 测开之路九十二:css之背景色和背景

    引用css 设置背景色: 背景图片 整个页面的背景图片 图片当局部背景图 也可以简写 css /* css基本样式 */ /* 设置p标签的文字前景色.背景色 */p{ /*字体颜色为蓝色*/ col ...