分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

CSS 之 BFC

发布时间:2023-09-06 01:10责任编辑:郭大石关键词:CSS

BFC 的概念:

            BFC 直译为“块级格式化上下文”,它是一个独立的渲染区域,只有 Block-level-box 参与,它规定了独立的渲染区域内 Block-level-box 是如何布局的,并且这个独立区域与外部区域互不影响。


以下元素会触发 BFC:

            1、根元素

            2、float 属性不为 none 的元素

            3、position 属性为 absolute 或 fixed 的元素

            4、display 属性为 inline-block,table-cell,table-caption,flex,inline-flex 的元素

            5、overflow 属性不为 visible 的元素

 BFC 的布局规则:

            1、独立渲染区域内的 Block-level-box 会在垂直方向上,一个接一个的排列;

            2、Block-level-box 在垂直方向上的距离由 margin 决定,属于同一个 BFC 的两个相邻 Block-level-box 的 margin 会发生重叠;

            3、每个 Block-level-box 的左外边距都会与独立渲染区域的左边框相重叠;

            4、BFC 生成的独立渲染区域不会与 float box 相重叠;

            5、计算独立渲染区域高度时,浮动元素也参与计算;

BFC 的作用:

            1、清除浮动

            2、防止 margin 重叠

            3、多栏布局

1、清除浮动

具体示例:
<div id="container">
       <div class="item"></div>
       <div class="item"></div>
</div>

#container {
       border: 1px solid red;
       width: 500px;
}
#container .item {
       width: 200px;
       height: 200px;
       float: left;
       border: 1px solid blue;
}
PS:在这种情况下 container 的高度不会被自动撑开;我们可以通过触发 container 生成 BFC,当 container 生成 BFC 后,浮动元素会参与高度的计算从而使 container 的高度自动撑开。
#container {
       width: 500px;
       overflow: hidden;
       border: 1px solid red;
}

2、防止 margin 重叠

具体示例:
<div class="item"></div>
<div class="item"></div>

.item {
       width: 200px;
       height: 200px;
       margin: 20px;
       background: #000;
}
PS:两个块级元素垂直方向上的距离为 20px,即在垂直方向上块级元素的 margin 会发生重叠。属于同一个 BFC 的两个相邻 Block-level-box 的 margin 发生了重叠。我们可以在其中一个 div 的外面再包裹一层容器,并触发该容器生成一个 BFC。那么这两个 div 便不属于同一个 BFC 就不会发生 margin 重叠了。

<div id="container">
       <div class="item"></div>
</div>
<div class="item"></div>
#container {
       overflow: hidden;
       border: 1px solid red;
}
.item {
       width: 200px;
       height: 200px;
       margin: 20px;
       background: #000;
}

3、多栏布局

具体示例:
<div id="container">
       <div class="left"></div>
       <div class="right"></div>
</div>

#container {
       width: 600px;
       position: relative;
}
#container .left {
       width: 200px;
       height: 300px;
       float: left;
       background: red;
}
#container .right {
       height: 400px;
       background: bule;
}
PS:根据 BFC 布局规则:BFC 的区域不会与 float box 相重叠。所以我们可以通过触发右侧的 div 生成 BFC,来实现自适应两栏布局,即左栏宽度固定,右栏可以根据浏览器宽度自适应。
#container .right {
       height: 400px;
       background: bule;
       overflow: hidden;
}

PS:在 CSS2 中有 BFC 和 IFC 的概念,CSS3 中新增了 FFC 和 GFC。 




本文出自 “珞辰的博客” 博客,转载请与作者联系!

CSS 之 BFC

原文地址:http://luochen2015.blog.51cto.com/9772274/1964463

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved