BFC 详解

BFC(block-formating-content)

根据W3C官方文档,块格式化上下文(BFC)是CSS正常渲染的一部分,他的定位机制来自于正常流。以下几种情况可以出发BFC::
1. float的值不是none
2. position的值不是static,也不是relative
3. display:table-cell|table-caption| inline-block|flex|inline-flex
4. overflow的值不是visible

BFC 可以显式的被触发。所以,如果我们想创建一个新的BFC,我们只需要添加上述CSS它的任何一个条件。虽然上面提到的条件中的任何一个都可以创建一个块格式化上下文,但也会有一些其他的效果:
display: table 在响应式方面可能会有一些问题
overflow: scroll 多出一个不想要的滚动条
float:元素会有一些增加浮动属性
overflow:hidden 会砍掉一些溢出的元素
因此,每当我们创建一个新的块格式上下文,要根据我们的需求,选择最合适的条件。比如说,我想要在一篇文章中隐藏溢出的部分的时候我选择 overflow:hidden

盒子在块格式化上下文中的排列

在块格式化上下文中,一个块级元素是紧靠在父元素的边缘的。从上到下依次排列开来,即使是浮动元素,也一样。

块格式化上下文会引起边距合并

父子上下外边距合并
就是父元素就没有填充有没有边框,但是子元素具有外边距,就会引起父子元素的外边距合并(上下都会合并)。那如何阻止外父子外边距合并呢?给父元素添加padding:1px;或者border:1px solid;或者overflow:hidden。
兄弟上下外边距合并
看起来父子元素不合并了,但是兄弟元素之间又产生了上下外边距合并?怎么办?只有再给子元素添加一个外包裹层。并且给子元素的包裹层增加overflow:hidden形成新的BFC。这样大家处在不同的BFC中,就不会产生外边距合并了。

使用BFC包裹浮动元素

因为浮动元素是脱离文档流的,所以会引起父元素的高度塌陷。就是所谓的父元素看不见浮动元素了。这个时候我们可以利用BFC重新包裹住浮动元素,给父元素添加 overflow:hidden

使用BFC让文字不再环绕

在一个BFC中,有两个子元素,第一个子元素发生了浮动,第二个子元素中如果有文本的话,那么第二个元素中的文本会环绕浮动元素。但是第二个子元素边框依然会触碰BFC的左边框。即使第一个子元素浮动了。
如果想要改变这种情况,则需要给第二个子元素加overflow:hidden,让第二个元素再次形成BFC。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,630评论 1 92
  • BFC 定义 BFC 全称 Block Formatting Context,块级格式化上下文。 一个 BFC 是...
    shadow123阅读 940评论 1 1
  • 一,浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 浮动模型是一种可视化格式模型,浮动...
    DeeJay_Y阅读 808评论 0 4
  • BFC定义 在解释BFC之前,先说一下文档流。我们常说的文档流其实分为定位流、浮动流和普通流三种。而普通流其实就是...
    枸杞辣条阅读 2,731评论 3 7
  • 一、在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例 在CSS当中,相...
    dengpan阅读 530评论 0 0