博客
关于我
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/

    你可能感兴趣的文章
    postgres--vacuum
    查看>>
    postgres--wal
    查看>>
    postgres--流复制
    查看>>
    postgres10配置huge_pages
    查看>>
    PostgreSQL 10.0 preview 变化 - pg_xlog,pg_clog,pg_log目录更名为pg_wal,pg_xact,log
    查看>>
    PostgreSQL 10.1 手册_部分 II. SQL 语言_第 15章 并行查询_15.2. 何时会用到并行查询?...
    查看>>
    PostgreSQL 10.1 手册_部分 II. SQL 语言_第 9 章 函数和操作符_9.23. 行和数组比较
    查看>>
    PostgreSQL 10.1 手册_部分 III. 服务器管理_第 21 章 数据库角色
    查看>>
    Postgresql 12.9如何配置允许远程连接
    查看>>
    PostgreSQL 9.6 同步多副本 与 remote_apply事务同步级别 应用场景分析
    查看>>
    Postgresql CopyManager 流式批量数据入库
    查看>>
    PostgreSQL cube 插件 - 多维空间对象
    查看>>
    PostgreSQL Daily Maintenance - cluster table
    查看>>
    PostgreSQL on Linux 最佳部署手册
    查看>>
    PostgreSQL Oracle 兼容性之 - pipelined
    查看>>
    PostgreSQL Point-In-Time Recovery (Incremental Backup)
    查看>>
    postgresql Streaming Replication监控与注意事项
    查看>>
    postgresql 不需要付费_使用数据传输在PostgreSQL执行 外部连接运算符
    查看>>
    postgresql 主从配置_生产环境postgresql主从环境配置
    查看>>
    postgresql 函数&存储过程 ; 递归查询
    查看>>