关于CSS的BFC

参考:理解CSS布局和BFC
CSS深入理解流体特性和BFC特性下多栏自适应布局

1、概念
BFC(Block Formatting Context):块级格式化上下文。
BFC元素特性的表现原则就是:无论内部元素处于什么状态,都不影响外部元素。
    当盒子里的某一个元素设置为浮动时,盒子元素的高度可能会低于浮动元素的高度。可以将BFC看作页面中的一个迷你布局。一旦创建,它其中的所有元素都被包裹,盒子不会因为内部元素浮动而坍塌。

2、触发情况
(1) float的值不为none;
(2) overflow的值为auto, scroll, 或hidden;
(3) display的值为table-cell, table-caption, 或者inline-block;
(4) display:flow-root; (兼容性不高)
(5) position不为relative和static。

3、优点
(1) 自适应内容由于封闭,更健壮,容错性强。比方说,内部clear:both不会与兄弟float产生矛盾。而纯流体布局,clear:both会让后面内容无法和float元素在一个水平上,产生布局问题;
(2) 自适应内容自动填满浮动以为区域,无需关心浮动元素宽度,可以整站大规模应用。而纯流体布局,需要大小不确定的margin/padding等值撑开合适间距,无法CSS组件化。

4、一些缺陷
(1) float:left 浮动元素本身BFC化,然而浮动元素有破坏性和包裹性,失去了元素本身的流体自适应性,因此,无法用来实现自动填满容器的自适应布局;
(2) position: absolute; 脱离文档流;
(3) display:table-cell 让元素表现得像单元格一样,IE8+以上浏览器才支持。

5、自适应布局可用方法:
(1) overflow:auto/hidden IE7+
(2) display:inline-block IE6/IE7
(3) display:table-cell IE8+

6、BFC一些有用的功能
(1) 阻止外边距叠加
(2) 停止去围绕浮动元素

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,786评论 1 92
  • 一、BFC是什么? 它是 Block Formatting Context (块级格式化上下文) 的简称,接下来通...
    07120665a058阅读 3,814评论 15 40
  • 一、常用css定位流描述 1、文档流定位 position: static(默认方式) 页面元素的默认定位方式 块...
    EdmundChen阅读 1,853评论 0 8
  • 遇见 是一场预知的离别 我仍然微笑 和着你的脚步 听海誓山盟 从远处飘来 那是这个冬季的温暖 饮一杯5度的伏特加 ...
    嵇游心阅读 332评论 10 3
  • 微信朋友圈占据着我的大部分生活,无论是学习还是工作休息时,都会习惯性的拿起来刷一下,粘在手上胶力可持续数小时。但因...
    钰渤BoBo阅读 1,073评论 0 0