博客
关于我
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编写网络爬虫10-数据存储方式三-CSV文件存储
    查看>>
    python3读取redis返回数据带有'b'的问题
    查看>>
    Python3连接MySQL
    查看>>
    Python关于isinstance函数的解析 | 附Demo(全)
    查看>>
    Python3:setup.py:完成所有任务的PIP安装(Build_ext+Install)
    查看>>
    python4.0 gil_Python 并发编程系列--1、浅谈GIL历史及对多线程的影响
    查看>>
    python60行绘图程序_天底下最简单的QT画图板,就一个类,60行代码
    查看>>
    Python: AES加密与解密
    查看>>
    Python: Range() 最大尺寸;动态的还是静态的?
    查看>>
    Python: Windows下用 multiprocessing 的深坑
    查看>>
    python:Could not find platform independent libraries <prefix>解决方法
    查看>>
    Python:datetime tzinfo 时区名称文档
    查看>>
    Python:deepcopy(list) vs new_list = old_list[:]
    查看>>
    Python:Google API - 从消息中获取 mimeTypes
    查看>>
    Python:Google API - 从消息中获取 mimeTypes
    查看>>
    Python:subprocess.call,stdout to file,stderr to file,在屏幕上实时显示stderr
    查看>>
    Python:TypeError:无法连接“str“和“int“对象
    查看>>
    Python:XPath 在 ElementTree 中不可用
    查看>>
    Python:从 FTP 服务器下载文件
    查看>>
    python:从列表中创建元组列表
    查看>>