Visual formatting model 可视化格式模型

在可视化格式模型里,每个元素都是由一个或者多个盒子组成,这些盒子的布局由下面规则控制:
 
可视化格式模型的官方说法是,它规定了用户端在媒介中如何处理文档树( document tree )。以下是对其中关键词的解释:
用户端:对我们来说一般指浏览器。
媒介:展现页面的介质。例如,纸媒介,听觉浏览器和显示器等3。
文档树( document tree ):源文档中元素树的编码。树中,每一个元素恰好由一个父元素。根元素是例外,它没有父元素。就是 document 和页面上的元素所构成的类似树形的结构。
可视化格式模型,不会规定所有格式的细节(比如,它并不是指字间距)。
 
如果一个块元素容器盒子里面包含了一个块水平(block-level box)的盒子,会强迫该容器里面的所有盒子都成为块水平
<DIV>
  Some text    //这里产生了一个匿名块水平盒子
  <P>More text</P>
</DIV>
 
如果一个行内元素盒子里包含了块水平盒子,那么该容器会被打破:
<body>
<span>
    aa     //这里产生了一个匿名块水平盒子
    <p>bb</p>
    cc      //这里产生了一个匿名块水平盒子
</span>
</body>
结果是一个body 块水平盒子里包含了两个匿名块水平盒子和一个p标签的块水平盒子
 
匿名盒子会继承容器的部分属性,例如上面例子给span加上一个边框
 
匿名盒子不会被相对单位作为参照物,例如
<div>
    "
        <div style=" 30%;"> </div>  //这个时候不会以父元素匿名盒子来计算,而是以上面的非匿名块水平盒子作为参照计算
    "
</div>
 
块元素内不被行内元素包裹的文字会产生匿名行内盒子
<p>
    aa     //由p产生匿名行内盒子,空格不会产生匿名行内盒子
    <em>bb<em>
    cc
</p>
 
 
浮动元素,决定定位元素和相对根元素被称为out of flow,其余元素被称之为in flow ,根元素相对而言,例如:
<p>
    <a><span></span></a>
</p>
p元素是不在这个结构的flow里面的
原文地址:https://www.cnblogs.com/chuangweili/p/5166206.html