• css之BFC和IFC


    BFC

    BFC(Block Formatting Context)  ------ 块级格式化上下文

    w3c规范定义:浮动元素和绝对定位元素,非块级盒子的块级容器(inline-blocks,table-cells,table-captions),以及overflow的值不为visiable的块级盒子,都会为它们的内容创建新的BFC

    相关定义:

    block-level boxes(块级盒)------  一个 block-level element块级元素 ('display' 属性值为 'block', 'list-item' 或是 ‘table’) 会生成一个 block-level box,这样的盒子会参与到 block-formatting context (一种布局的方式) 中

    block-formatting context(BFC) ------ 在这种布局下,盒子所在的containing block顶部起一个接一个垂直排列,水平方向上撑满整个宽度。

    containing block(包含块)------ 盒子本身为其子孙建立containing block,用于计算内部盒子的位置、大小。

    哪些元素会触发BFC:

      1.根元素;

      2.float属性不为none;

      3.position为absolute或者fixed

      4.display:inline-block,table-cell,table-caption,flex

      5.overflow不为visible

    BFC布局准则:

      1.内部盒子在垂直方向上,一个个垂直放置

      2.其不会和float(浮动元素)重叠

      3.其垂直方向由margin决定,同一BFC布局下的元素的margin会重叠

      4.在其布局下,子元素的内容不管怎么变化都不会影响到其外部元素

      5.其高度会把float浮动元素的高度也算进去

      6.元素的左边会和其包含的盒子的左边想接触,存在浮动也是如此

    BFC的用途:

      1.由于不会和浮动元素进行重叠,所以在自适应的两栏布局上起到了很好的作用。

      2.可以清除内部的浮动

      3.可以去margin重叠,因为不同BFC布局下的元素margin不会重叠

    样例分析:

      自适应两栏布局

     <div>
              <img class="leftbox" src="../images/none_new.png">
              <div class="rightbox">
                 <h3>开发商</h3>
                 <span>sdfsdfsdfsdfs士大夫撒旦法</span>
              </div>
         </div>

      左边图片左浮动,右边内容可以设置BFC布局,不会和浮动元素进行重叠。

      广为流传的俩种两栏自适应布局:

    .rightbox{overflow: hidden;*display:inline-block;} //缺点是hidden可能会隐藏溢出部分
    .rightbox{display: table-cell;width:2000px;*display: inline-block;*width: auto}

    IFC

    IFC( Inline Formatting Contex)  ------  内联格式化上下文

    w3c规范定义:从父元素的顶部开始,盒子一个接着一个横向排列,横向的margin/border/padding在这些盒子中都是有效的。盒子间可能通过不同的方式垂直对齐(底部、顶部、文字基线对齐)。

    相关定义:

    line box (行盒模型)  -----  根据块状容器内,每一行的多个内联元素共同生成一个行盒模型。当内联盒子的宽度超过line box,内联盒子会被分解成几个盒子,然后分布在几个line box里面,如果内联盒子不能被分解(例如:单词或者white-space:nowrap),它就会超过line-box。

    影响布局的css:

      1.font-size

      2.line-height

      3.height

      4.vertical-align

  • 相关阅读:
    Java删除文件夹下所有文件
    Java写入文件的几种方法小结
    字符串String数据类型的探讨
    Java把数字格式化为货币字符串
    java.utilDate和java.sql.Date
    Java最小二乘法线性回归函数编码实现
    寄存器
    GCC
    linux zip
    缓存
  • 原文地址:https://www.cnblogs.com/wjmm/p/8400387.html
Copyright © 2020-2023  润新知