zoukankan      html  css  js  c++  java
  • css BFC

    BFC

    参考学习:http://www.cnblogs.com/lhb25/p/inside-block-formatting-ontext.html

    普通流 (normal flow)

    在普通流中,元素按照其在 HTML
    中的先后位置至上而下布局,在这个过程中,行内元素水平排列,直到当行被占满然后换行,块级元素则会被渲染为完整的一个新行,除非另外指定,否则所有元素默认都是普通流定位,也可以说,普通流中元素的位置由该元素在
    HTML 文档中的位置决定。

    浮动 (float)

    在浮动布局中,元素首先按照普通流的位置出现,然后根据浮动的方向尽可能的向左边或右边偏移,其效果与印刷排版中的文本环绕相似。

    绝对定位 (absolute positioning)

    在绝对定位布局中,元素会整体脱离普通流,因此绝对定位元素不会对其兄弟元素造成影响,而元素具体的位置由绝对定位的坐标决定。

    BFC
    用处:

    自适应两栏布局
    清除浮动
    防止外边距重叠
    

    BFC有一下特性:
    1.内部的Box会在垂直方向,从顶部开始一个接一个地放置。
    2.Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生叠加
    3.每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相 反)。即使存在浮动也是如此。
    4.BFC的区域不会与float box叠加。
    5.BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然。
    6. 计算BFC的高度时,浮动元素也参与计算。

    如何产生BFC?
    1.根元素
    2.float的值不为none。
    3.overflow的值不为visible。
    4.position的值不为relative和static。
    5.display的值为table-cell, table-caption, inline-block中的任何一个。

    因为BFC内部的元素和外部的元素绝对不会互相影响,因此, 当BFC外部存在浮动时,它不应该影响BFC内部Box的布局,BFC会通过变窄,而不与浮动有重叠。同样的,当BFC内部有浮动时,为了不影响外部元素的布局,BFC计算高度时会包括浮动的高度。避免margin重叠也是这样的一个道理。

    那BFC一般有什么用呢?比如常见的多栏布局,结合块级别元素浮动,里面的元素则是在一个相对隔离的环境里运行。

  • 相关阅读:
    你的系统需要做系统集成测试么?
    测试驱动 ASP.NET MVC 和构建可测试 ASP.NET MVC 应用程序
    RikMigrations 或 Migrator.NET 进行自动化的数据库升级
    单元测试
    C#反射
    J2EE--Struts2基础开发
    Dynamics CRM 客户端的插件调试
    于快速创建 IEqualityComparer<T> 实例的类 Equality<T>
    ToolBox Analysis & Design
    实现$.fn.extend 和$.extend函数
  • 原文地址:https://www.cnblogs.com/princeness/p/11664994.html
Copyright © 2011-2022 走看看