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

    你可能感兴趣的文章
    Nginx 反向代理配置去除前缀
    查看>>
    nginx 后端获取真实ip
    查看>>
    Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
    查看>>
    nginx 常用配置记录
    查看>>
    Nginx 我们必须知道的那些事
    查看>>
    Nginx 的 proxy_pass 使用简介
    查看>>
    Nginx 的配置文件中的 keepalive 介绍
    查看>>
    Nginx 负载均衡与权重配置解析
    查看>>
    Nginx 负载均衡详解
    查看>>
    nginx 配置 单页面应用的解决方案
    查看>>
    nginx 配置https(一)—— 自签名证书
    查看>>
    nginx 配置~~~本身就是一个静态资源的服务器
    查看>>
    Nginx 配置解析:从基础到高级应用指南
    查看>>
    Nginx下配置codeigniter框架方法
    查看>>
    nginx添加模块与https支持
    查看>>
    Nginx用户认证
    查看>>
    Nginx的Rewrite正则表达式,匹配非某单词
    查看>>
    Nginx的使用总结(一)
    查看>>
    Nginx的可视化神器nginx-gui的下载配置和使用
    查看>>
    Nginx的是什么?干什么用的?
    查看>>