如何理解CSS中的BFC特性

栏目: CSS · 发布时间: 5年前

内容简介:css中的BFC是

css中的 BFC 特性是在css2.1规范中引入的块渲染规则,利用这些规则可以帮助我们处理页面中的布局等问题。比如:在清除浮动方案中我们可以在父容器中加入 overflow:hidden ,这就是利用了 BFC 特性。同时也是面试中一个常问的知识点,所以深入理解 BFC 很重要。

什么是BFC

BFC是 (Block Formatting context) 的简称,即块格式化上下文。可以理解为它是运用一些渲染规则的块渲染区域,它是css世界中的结界。为何说是结界,因为在触发了 BFC 特性的容器下元素和容器外部元素完全隔离,子元素的布局不会影响外部元素,反之依然。

BFC 元素有如下一些特征:

  • BFC的块不会和浮动块重叠

  • 计算BFC元素的高度时,会包括浮动元素

  • 在一个BFC下的块 margin 会发生重叠,不在同一个则不会

  • BFC元素是一个独立的容器,使得里面的元素和外部元素隔离开,互补影响

触发BFC

通过以下设置可以触发一个块元素的BFC特性:

  • float 的值不为 none

  • overflow 的值为 auto , scrollhidden

  • display 的值为 table-cell , table-captioninline-block

  • position 设置为 absolutefixed

除此之外, html 元素本身默认就是一个 BFC 元素

应用场景

清除浮动

<div class="box">
    <div class="left"></div>
    <div class="right"></div>
</div>
复制代码
.box {
    background: #eee;
}
.left {
    width: 200px;
    height: 200px;
    float: left;
    border: 1px solid pink;
}
.right {
    height: 100px;
    border: 1px solid greenyellow;
}
复制代码

效果如下:

如何理解CSS中的BFC特性

可见,浮动元素 .left 脱离了正常流,和元素 .right 发生了重叠。而且父容器的高度不包含浮动元素,发生了坍塌。

利用 BFC 元素的特征2,在包含浮动元素的容器触发 BFC 特性,防止容器的高度发生坍塌。一般是设置 overflow:hidden 来触发,如下:

.box {
    background: #eee;
    /* 触发bfc */
    overflow: hidden;
}
复制代码

效果如下:

如何理解CSS中的BFC特性

自适应布局

利用特征1,我们可以对 .right 触发 BFC 特性,让他不和左边的浮动元素重叠,确保子元素不受到外部影响。同时因为 .right 是一个块元素,具有流体的特性,会随着视口宽度变化发生自适应,从而实现两栏自适应,甚至多栏也是如此。

.right {
    height: 100px;
    border: 1px solid greenyellow;
    overflow: hidden;
}
复制代码

效果如下:

如何理解CSS中的BFC特性

但是对于超出 .right 区域需要显示内容的场景,这种方案就不适用了。可以利用 table-cellinline-block 触发 BFC 特性。

.right {
    display: table-cell;
    width: 9999px;
    height: 100px;
    border: 1px solid greenyellow;
    /* 利用 css hack 兼容IE7 的情况 */
    *display: inline-block;
    *width: auto;
}
复制代码

对于单元格的盒子有一个特点,就是设置的宽度超过父容器时,实际宽度也是不会超过父容器的,这就和自适应效果一样。所以我们给宽度设置了一个超大值。但是 table-cell 只使用于IE8+的浏览器,对于需要考虑IE7的情况,可以利用设置 inline-block ,它在IE7上表现的和 block 盒一样,也是会自适应的。

其他触发 BFC 特性的条件都有自己的约束,所以常用的就是上面两种方案来触发


以上所述就是小编给大家介绍的《如何理解CSS中的BFC特性》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Hadoop in Action

Hadoop in Action

Chuck Lam / Manning Publications / 2010-12-22 / USD 44.99

HIGHLIGHT Hadoop in Action is an example-rich tutorial that shows developers how to implement data-intensive distributed computing using Hadoop and the Map- Reduce framework. DESCRIPTION Hadoop i......一起来看看 《Hadoop in Action》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具