博客
关于我
10分钟了解什么是BFC
阅读量:418 次
发布时间:2019-03-06

本文共 1156 字,大约阅读时间需要 3 分钟。

什么是BFC?

块级格式化上下文 (Block Formatting Context, 简称 BFC) 是 W3C CSS2.1 规范中的一个核心概念。它定义了网页渲染时的一个独立的区域,决定了该区域内子元素的定位方式以及与其他元素的关系与相互作用。简单来说,BFC 就像一个封闭的大容器,容器内的元素不会影响到容器外的元素,同时容器内的子元素之间也有一套独特的布局规则。

BFC 具有隔离性,容器内的元素可以独立进行布局,不会干扰到容器外的其他元素。这一点在前端开发中非常有用,尤其是在处理浮动元素和绝对定位布局时。

如何触发BFC?

要使元素具备 BFC 的特性,只需满足以下任一条件即可:

  • 浮动元素:float 属性的值不是 none(如 left、right、absolute、fixed)。
  • 绝对定位元素:position 属性为 absolute 或 fixed。
  • display 属性:设置为 inline-block、table-cell、flex、inline-flex 或 table-caption。
  • overflow 属性:值为 hidden、auto 或 scroll(不包括 visible)。
  • 根元素:body 的 display 为 block(默认情况下)。
  • BFC 的渲染规则

    BFC 具有以下渲染规则:

  • 外边距折叠:

    • 在同一个 BFC 中,垂直方向上的相邻块元素的外边距会发生重叠。
    • 重叠后,显示的边距会是最大值。例如,两个 p 元素的外边距分别为 5px 和 25px,最终显示为 25px。
  • 包含浮动元素:

    • 浮动元素会脱离文档流,但仍然属于其父 BFC。
    • 在布局时,浮动元素会影响其父容器的高度计算。
  • 计算高度时的浮动元素参与:

    • 父容器的高度计算会考虑浮动元素的总高度。
    • 如果父容器设置为 BFC 并且 overflow: hidden,则浮动元素的高度会被包含在父容器中。
  • 示例与解决方案

    以下是实际开发中的典型案例:

  • 外边距折叠问题:

    • 当两个 p 元素在同一个 BFC 中时,它们的外边距会折叠。
    • 解决方法:将这两个 p 元素放入不同的 BFC 中。例如,添加一个父容器并设置 overflow: hidden。
  • 浮动元素扩展问题:

    • 右侧容器的高度高于左侧容器时,右侧容器会扩展到左侧。
    • 解决方法:将右侧容器设置为 BFC 并添加 overflow: auto。
  • 浮动元素影响父容器高度:

    • 当浮动元素存在时,父容器的高度计算会考虑浮动元素的高度。
    • 解决方法:将父容器设置为 BFC 并且 overflow: hidden。
  • BFC 的设计理念帮助开发者更好地控制布局,特别是在处理复杂布局和跨浏览器兼容性时。理解 BFC 的特性和规则,是前端开发中不可或缺的一部分。

    转载地址:http://dszuz.baihongyu.com/

    你可能感兴趣的文章
    Python3.5中协程和未来/任务之间的区别?
    查看>>
    python3.5实现socket通讯(TCP)
    查看>>
    python3.6 ubuntu部署nginx、 uwsgi、 django
    查看>>
    Python3.6.3中,functools似乎不能用
    查看>>
    python3.6.5+cuda9+cudnn7.1+win10+tensorflow-gpu1.9.0下载配置
    查看>>
    python3.6使用pickle序列化class
    查看>>
    python3.6入门到高阶(全栈) day027 网络通信协议 osi七层模型
    查看>>
    Python3.6属性错误:模块‘;异步没有属性‘;运行‘;
    查看>>
    python3.6版本中的python-weka-wrapper安装失败,错误代码为%1
    查看>>
    Python3.7安装cv2踩过的坑
    查看>>
    python写txt文件
    查看>>
    python关于sorted排序函数详细解析 附实战代码(全)
    查看>>
    python3.8调用m文件,调用matlab
    查看>>
    python3.9新特性_Python 3.9 新特性速览
    查看>>
    Python3.x:遍历select下拉框获取value值
    查看>>
    python360百科_11月编程排行榜:Python超过Java成第二
    查看>>
    Python关于Paginator分页函数详细解析 附实战代码
    查看>>
    python3、ipython3、setup-tools、pip等环境搭建详细总结
    查看>>
    python3下使用cv2.imwrite存储带有中文路径图片或者绝对路径图片
    查看>>
    python3与django中@property详解
    查看>>