CSS BFC 块级格式化上下文

发布于 2025-01-19 18:35:28 字数 2184 浏览 3 评论 0

BFC 是一个独立的布局环境,其中的元素布局是不受外界的影响 ,并且在一个 BFC 中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列。

BFC 的规则

BFC 就是页面中的一个隔离的 独立容器容器内外的元素互不影响

BFC 就是一个块级元素,块级元素会在垂直方向一个接一个的排列

垂直方向的距离由 margin 决定。 属于同一个 BFC 的两个相邻 Box 的 margin 会发生重叠

<!--属于同一个 BFC 的两个相邻的 Box 会发生 margin 重叠,所以我们可以设置,两个不同的 BFC,也就是我们可以让把第二个 p 用 div 包起来,然后激活它使其成为一个 BFC -->
<style>
    p {
        margin: 30px;
        background: yellow;
        width: 200px;
        line-height: 100px;
        text-align:center;
    }
    div{
        overflow: hidden; /* 激活为 BFC */
    }
</style>
<body>
    <p>1 看看我的 margin 是多少</p>

     <!--<p>2 看看我的 margin 是多少</p>  -->
    <div>
        <p>2 看看我的 margin 是多少</p>
    </div>
</body>

计算 BFC 的高度时,浮动元素也参与计算

<!--当我们不给父节点设置高度,子节点设置浮动的时候,会发生高度塌陷,这个时候我们就要清除浮动。-->
<style>
    .par {
        border: 5px solid rgb(91, 243, 30);
        width: 300px;
        overflow: hidden; /*清除浮动,高度值浮动元素也参与计算*/
    }

    .child {
        border: 5px solid rgb(233, 250, 84);
        width:100px;
        height: 100px;
        float: left;
    }
</style>
<body>
    <div class="par">
        <div class="child"></div>
        <div class="child"></div>
    </div>
</body>

BFC 的区域不会与 float 元素重叠

BFC 触发条件

触发 BFC 条件的 CSS 属性:

  1. overflow: hidden
  2. display: inline-block | flex | table | table-cell | flow-root
  3. position: absolute | fixed
  4. float 不为 none

BFC 解决的问题

1. 两个元素 垂直 margin 外边距重叠问题

  1. 如果是父子元素外边距重叠,在父元素上添加 overflow: hiddendisplay: flow-root 等即可
  2. 如果是相邻元素外边距重叠,在另一个元素上包裹一个 div 即可

2. 使用 float 脱离文档流,高度塌陷问题

在浮动元素的相邻元素上添加触发 BFC 的 css 属性即可

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

合约呢

暂无简介

文章
评论
25 人气
更多

推荐作者

迎风吟唱

文章 0 评论 0

qq_hXErI

文章 0 评论 0

茶底世界

文章 0 评论 0

捎一片雪花

文章 0 评论 0

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文