A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© LittlePrince 中级黑马   /  2020-4-9 11:45  /  1971 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

前言BFC在css的学习中是重要的但不易理解的概念,BFC也牵扯了很多其他问题,如浮动、定位、盒模型等,因此弄懂BFC是很有必要的。本文对BFC进行总结,希望对你有所帮助。
BFC是什么?先看看MDN的定义:
块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。
官方文档的说法很难理解,查阅多方资料后,得到以下的结论:
BFC(block formatting context)块级格式化上下文,它是页面中的一块渲染区域,并且有一套属于自己的渲染规则,它决定了元素如何对齐内容进行布局,以及与其他元素的关系和相互作用。当涉及到可视化布局的时候,BFC提供了一个环境,HTML元素在这个环境中按照一定规则进行布局
简短的总结:BFC是一个独立的布局环境,BFC内部的元素布局与外部互不影响
BFC的布局规则
  • 内部的Box会在垂直方向一个接着一个地放置。
  • Box垂直方向上的距离由margin决定。属于同一个BFC的两个相邻的Box的margin会发生重叠。
  • 每个盒子的左外边框紧挨着包含块的左边框,即使浮动元素也是如此。
  • BFC的区域不会与float box重叠。
  • BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然。
  • 计算BFC的高度时,浮动子元素也参与计算。
如何触发BFC?这里只记录常用方法,想要了解全部触发BFC的方法请点击此链接
元素或属性
属性值

根元素

float
left、right

position
absolute、fixed

overflow
auto、scroll、hidden

display
inline-block、table-cell
BFC可以解决哪些问题?
  • 解决浮动元素令父元素高度坍塌的问题
    方法:给父元素开启BFC
    原理:计算BFC的高度时,浮动子元素也参与计算
    演示:
    ">
  • 非浮动元素被浮动元素覆盖
    方法:给非浮动元素开启BFC
    原理:BFC的区域不会与float box重叠
    演示:


">
  • 两栏自适应布局
    方法:给固定栏设置固定宽度,给不固定栏开启BFC。
    原理:BFC的区域不会与float box重叠
    演示:


">
  • 外边距垂直方向重合的问题
    方法:给上box或者下box任意一个包裹新的box并开启BFC
    原理:属于同一个BFC的两个相邻的Box的margin会发生重叠。
    演示:




文章转载自:https://juejin.im/post/5e8d7e70f265da47f144ace9

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马