zoukankan      html  css  js  c++  java
  • IFC,BFC

    自然流(Normal flow)

    在自然流中的盒子,属于某种格式化上下文。CSS2.2中。块级盒子参与块格式化上下文,行内盒子参与行内格式化上下文。未来可能有其他的。

    块格式化上下文

    浮动、绝对定位、不是块盒子的块容器(例如,inline-block,table-cells,table-captions)和 'overflow'除了'visible'的块盒子为内容创建新的块格式化上下文。

    在块格式化上下文中,盒子一个一个从上到下竖直的一个一个堆叠。兄弟盒子间的竖直距离由margin决定。块级格式化下文中临界的两个块级盒子的margin会合并。

    行内格式化上下文

    块包含盒子里面没有块级元素的情况,就会创建行内格式化上下文。

    在行内格式化上下文中,盒子一个接着一个,从上面开始水平排布。水平margin,border,padding在盒子中间排布。盒子竖直方向有多个方式来对齐:顶部、底部、文字基线对齐。包含盒子的矩形区域叫做行框

    行框的宽又包含块和float决定。行框的高又行高的计算规则决定。

    行框总是足够高来包含所有的盒子。当盒子B的高度低于行框高度的时候,竖直方向的对齐可以通过'vertical-align'来指定。当若干行内盒子的宽度超过一行的宽度的时候,这些盒子拆分为竖直堆叠的多个行框。这样,一个段落就是一组竖直堆叠的行框。行框堆叠没有竖直间隔(除非特别指定)并且,不会重合。

    一般来说,行框的左边界触碰包含块的左边界,右边触碰包含块的右边。然后,浮动盒子在包含块的边和行框边中间。这样,尽管在同一个行内格式化上下文中,行框有相同的宽(等于包含块的宽),因为float框的存在,他们可用宽是变化的。同一个行内格式化上下文中,行框的高度也是会变好的(例如,一行包含一个更高的图片)

    当行内级别盒子的总和少于行框宽度的时候,他们的水平分布通过'text-align'决定。

    当一个行内盒子的宽超过行框宽的时候,会拆分为若干盒子,并且这些盒子分布在若干行框中。如果,这个行内框不能拆分(例如,一个行内框包含单个字符,行内框被white-space的 nowarp 或者pre影像。)

    当行内框拆分的时候,marign,border,padding在拆分的地方是没有视觉效果的。

    行框是作为包含行内格式化上下文中的行内级别的内容来创建的。行框不包含文本,没有保留空格,没有行内元素(非0marign,border,padding),没有其他流内的内容(例如,image,inline block 或者 inline table),没有用保留的新行结束 应该看作0高度的行框来为里面的元素定位,其他情况下当作不存在。

  • 相关阅读:
    LeetCode 350. Intersection of Two Arrays II (两个数组的相交之二)
    LeetCode 349. Intersection of Two Arrays (两个数组的相交)
    LeetCode 290. Word Pattern (词语模式)
    LeetCode 266. Palindrome Permutation (回文排列)$
    34.Search for a Range
    spark连接mongodb
    NLPIR中文分词器的使用
    scala和maven整合实践
    Spark中的键值对操作-scala
    301.Remove Invalid Parentheses
  • 原文地址:https://www.cnblogs.com/diaoxiong/p/5685255.html
Copyright © 2011-2022 走看看