BFC规范

*学习笔记


    Formatting context(格式化上下文)是W3C CSS2.1规范中的一个概念。它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用。

    BFC即Block  Formatting Contexts(块级格式化上下文),它属于上述中的其中一种规范,是 Web 页面的可视化 CSS 渲染的部分,是块级盒布局发生的区域,也是浮动元素与其他元素交互的区域。具有BFC特性的元素可以看做是隔离了的独立容器,容器里面的元素不会在布局上影响外面的元素,并且BFC具有普通容器所没有的一些特性,可以解决一些布局上的问题。

哪些样式能触发BFC来帮助我们解决哪些问题?

触发BFC的样式:

    浮动元素:float除none以外的值

    绝对定位:position(absolute、fixed)

    display为inline-block、table-cells、flex

    overflow除了visible以外的值(hidden、auto、scroll)

BFC特性及应用

解决margin叠加问题

     <style>

        .div1{width: 100px;height: 100px;background: red;margin-bottom: 30px;}

        .div2{width: 100px;height: 100px;background: blue;margin-top: 30px;}

    </style>

    <div class="div1"></div>

    <div class="div2"></div>

    这里只会显示一个30px的距离,上下的margin进行了重叠。

    采用上述的触发样式可解决问题,如

     .box{overflow: hidden;}

    <!-- .box{display:fixed;}-->

      <div class="box">

            <div class="div1"></div>

        </div>

        <div class="box">

            <div class="div2"></div>

        </div>

解决margin传递问题

    <style>

        #box1{ width: 200px;height: 200px;background:brown;}

        #box2{ width: 100px;height: 100px;background:seagreen;margin-top: 100px; }

    </style>

    <div id="box1">

        <div id="box2"></div>

    </div>

    这里两个div都会向下100px,并不会只是box2向下。

    同样的,给box1加上overflow:hidden等即可

解决浮动问题

     .div1 {width: 200px; border: 1px solid black;

           /* display: inline-block;*/

          /* overflow: hidden;*/

        }

     .div2 {width: 100px;height: 100px;background: blue;float: left;

        }

       <div class="div1 clear">

            <div class="div2"></div>

        </div>

解决覆盖问题

 略

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。