资讯专栏INFORMATION COLUMN

BFC(块级格式化范围)

coordinate35 / 2916人阅读

摘要:中文翻译块级格式化范围。解决包含框高度塌陷,防止浮动子元素越界。规范第部分的高度计算规则,在计算生成了的元素的高度时,其浮动子元素应该参与计算。根据第三条,生成的元素不会和在流中的子元素发生空白边折叠。

BFC(block formatting contexts),中文翻译块级格式化范围。默认产生BFC的元素只有html,默认产生HASLAYOUT=true的元素则不止html。

通过代码来感受一下BFC到底是用来干什么的(主要根据css对于BFC的一系列规范)
首先是可以产生BFC的方法
1.float的值不为none。
2.overflow的值不为visible。
3.display的值为table-cell, table-caption, inline-block中的任何一个。
4.position的值不为relative和static。
最常用的是overflow:hidden;理由和zoom一样,这样一般不会影响到其他属性。
1.解决包含框高度塌陷,防止浮动子元素越界。

    
    
        

我们可以看到div高度塌陷,浮动元素img超出了div的边界

CSS2.1 规范第 10.6.3 部分的高度计算规则,在进行普通流中的块级非替换元素的高度计算时,浮动子元素不参与计算。

CSS2.1 规范第10.6.7部分的高度计算规则,在计算生成了 block formatting context 的元素的高度时,其浮动子元素应该参与计算。

所以我们给box设置overflow:hidden;是其产生BFC从而使其内部的浮动元素参与自生高度的计算

    
    
        


父元素被撑开
2.防止与浮动元素重叠

    
    
        

你好啊


p元素与浮动img元素发生了重叠
由于BFC本身不会与浮动元素叠加,所以只需让p元素产生BFC即刻解决重叠问题,所以我们给p元素添加一个overflow:hidden;(当然还可以添加clear:both来清除图片浮动带来影响)

    
    
        

你好啊

3.解决上下相邻两个元素外边距重叠

    
    
        

间距只有20px,而不是希望得到的40px

根据 CSS 2.1 8.3.1 Collapsing margins 第一条,两个相邻的普通流中的块框在垂直位置的空白边会发生折叠现象。也就是处于同一个BFC中的两个垂直窗口的margin会重叠。

根据 CSS 2.1 8.3.1 Collapsing margins 第三条,生成 block formatting context 的元素不会和在流中的子元素发生空白边折叠。所以解决这种问题的办法是要为两个容器添加具有BFC的包裹容器。

    
    
        

参考文章:
http://www.cnblogs.com/xinghh...
http://www.cnblogs.com/pigtai...
http://www.cnblogs.com/fsjohn...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/115508.html

相关文章

  • BFC块级式化范围

    摘要:中文翻译块级格式化范围。解决包含框高度塌陷,防止浮动子元素越界。规范第部分的高度计算规则,在计算生成了的元素的高度时,其浮动子元素应该参与计算。根据第三条,生成的元素不会和在流中的子元素发生空白边折叠。 BFC(block formatting contexts),中文翻译块级格式化范围。默认产生BFC的元素只有html,默认产生HASLAYOUT=true的元素则不止html。 通过...

    WilsonLiu95 评论0 收藏0
  • CSS中重要的BFC

    摘要:中有个重要的概念,搞懂可以让我们理解中某些原本诡异的地方。简介在解释之前,先说一下文档流。我们常说的文档流其实分为定位流浮动流普通流三种。使用包含浮动元素注意,这里触发并不能阻止其它形式的脱离文档流的元素覆盖正常流元素。 CSS中有个重要的概念BFC,搞懂BFC可以让我们理解CSS中某些原本诡异(??)的地方。 1. 简介 在解释BFC之前,先说一下文档流。我们常说的文档流其实分为定位...

    plus2047 评论0 收藏0
  • BFC块级格式上下文详解

    摘要:简要定义直译为块级格式化上下文。它是一个独立的渲染区域,它规定了内部如何布局,是决定块盒子的布局及浮动相互影响范围的一个区域,并且与这个区域外部毫不相干。 1.BFC简要定义 BFC(Block formatting context)直译为块级格式化上下文。它是一个独立的渲染区域,它规定了内部如何布局,是决定块盒子的布局及浮动相互影响范围的一个区域,并且与这个区域外部毫不相干。 2.B...

    wyk1184 评论0 收藏0
  • BFC块级格式上下文详解

    摘要:简要定义直译为块级格式化上下文。它是一个独立的渲染区域,它规定了内部如何布局,是决定块盒子的布局及浮动相互影响范围的一个区域,并且与这个区域外部毫不相干。 1.BFC简要定义 BFC(Block formatting context)直译为块级格式化上下文。它是一个独立的渲染区域,它规定了内部如何布局,是决定块盒子的布局及浮动相互影响范围的一个区域,并且与这个区域外部毫不相干。 2.B...

    HelKyle 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<