BFC:块级格式化上下文

理解:BFC属于普通流,相当于一块独立的渲染区域,BFC看成是元素的一种属性, 当元素拥有了BFC属性后,这个元素就可以看做成隔离了的独立容器。容器内的元素不会影响容器外的元素.

BFC的布局规则

一、内部的Box会在垂直方向,一个接一个地放置。
二、Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠(按照最大margin值设置)
三、每个元素的margin box的左边, 与包含块border box的左边相接触
四、BFC的区域不会与float box重叠。
五、BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。
六、计算BFC的高度时,浮动元素也参与计算

BFC的特性与作用
1、可以避免外边距重叠

:如下外边距重叠

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.one,.two{width: 100px;height: 100px;background-color: red;margin: 100px;}<div class="one"></div><div class="two"></div>
</body>
</html>

本应该上面div的margin-bottom和下面div的margin-top都为100px,呈现200px的外边距,但是块的上外边距和下外边距会合并为单个边距,取最大值,如果margin相等,则仅为一个,这就是外边距重叠。

解决方式:
    把两个div包裹在两个不同container容器中,用over-hidden触发container的BFC
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.one,.two{width: 100px;height: 100px;background-color: red;margin: 100px;}.container{overflow: hidden;}</style>
</head>
<body><div class="container"><div class="one"></div></div><div class="container"><div class="two"></div></div>
</body>
</html>
2、清除浮动
    正常我们希望的是看到一圈红色边框包裹着一个黄方块,但是父元素失去了高度支撑;因为我们添加了浮动,使得子元素脱离了文档流,所以只剩下20px边距高度,同样,我们可以通过overflow属性触发父容器的BFC,从而达到清除浮动效果。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.parent {border: 10px solid red; }.child {width: 100px;height: 100px;background-color: yellow;float: left;}</style>
</head>
<body><div class="parent"><div class="child"></div></div>
</body>
</html>

给父元素设置:触发BFC清除浮动

.parent{border: 10px solid red;overflow: hidden;
}
3、阻止元素被浮动元素覆盖
    给一个元素添加浮动属性,覆盖了另一个元素;如果不要覆盖,触发被覆盖元素的BFC属性
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.one{width: 100px;height: 100px;background-color: yellow;float: left;}.two{width: 200px;height: 200px;background-color: red;}</style>
</head>
<body><div class="one"></div><div class="two"></div>
</body>
</html>
解决方法:触发BFC
 .two{width: 200px;height: 200px;background-color: red;overflow: hidden;
}
哪些元素或属性能触发BFC

根元素(html)
float属性不为none
position为absolute或fixed
display为inline-block, table-cell, table-caption, flex,inline-flex
overflow不为visible

什么是BFC,如何触发BFC,BFC的作用相关推荐

  1. 为什么会有BFC?BFC是什么?如何触发?BFC解决了什么问题?

    前端程序员在布局页面时,经常会遇到各种烦人的小问题,比如:每个元素都是一个盒子,盒子外的父元素应该不会受到盒内子的子元素影响,可是事实是这样的吗? 往往,我们会看到子元素浮动后,父元素高度没有了,两栏 ...

  2. 前端CSS必知:BFC及其触发条件

    文章目录 1. bfc的理解(块级格式化上下文) 2. 触发bfc的方式 3. bfc解决的问题:外边距合并,检测浮动高度,制作右侧自适应盒子 4. bfc布局规则特性 5. 两栏布局 6. 块元素高 ...

  3. BFC是什么?BFC可以做什么?

    BFC是什么 一.规范解释:块格式化上下文(Block Formatting Context,BFC)是Web页面的可视化CSS渲染的一部分,是布局过程中生成块级盒子的区域,也是浮动元素与其他元素的交 ...

  4. BFC是什么?如何触发?BFC解决了什么问题?

    1.BFC是指什么? BFC = Block Formatting context 意思是块格式化上下文,BFC 是指浏览器中创建了一个独立的渲染区域,该区域内所有元素无论如何布局,都不会影响到区域外 ...

  5. BFC是什么?BFC的四种理解方式

    一 .BFC的解释:         块级格式化上下文,是一块独立的渲染区域,BFC的特性容器里面的元素不会影响外边元素布局,当然外部的元素也不能影响内部元素的布局 二​​ .原理: ①.内部的box ...

  6. 什么是BFC?以及形成BFC的条件

    BFC(Block Formatting context)块级格式化上下文,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域 形成独立的渲染区域,内部的元素不会影响到外界 形成BFC的常 ...

  7. 在jQuery中,a标签trigger触发click不起作用的原因和解决方法

    最近在项目中发现,用jq的trigger无法触发a标签的click事件.我的代码如下: $('a').trigger('click') 查阅资料发现: jquery trigger把(type === ...

  8. BFC的布局规则以及触发条件

          1   .BFC的含义 :          Block Formatting Contexts(BFC)                                      块级元 ...

  9. 什么是BFC?如何触发BFC

    什么是BFC? BFC(Block formattin context), 直译:"块级格式化上下文".在页面上形成一个隔离的独立容器,容器里面的子元素不会影响外面的元素.反之亦是 ...

  10. 什么是BFC?它的触发条件有哪些?

    1. 什么是BFC? Block Fromatting Context, 即块级格式上下文. W3C对BFC的定义如下: 浮动元素和绝对定位元素,非块级盒子的块级容器,以及overflow值不为&qu ...

最新文章

  1. 怎么判断网络回路_PLC控制回路故障的判断和检修方法与技巧!
  2. Java集合中HashSet的实现原理
  3. 服务器端使用sendRedirect跳转到客户端异常
  4. .NET Core 使用Topshelf方式创建Windows服务
  5. golang防止MySQL注入_mysql – 如何最大限度地降低golang服务中下游服务中SQL注入的风险?...
  6. 微型计算机中 辅助存储器通常包括,第7章 微型计算机存储器习题参考答案
  7. linux下重装mysql_Linux下安装mysql
  8. 1.2.1 计算机网络的分层结构、协议、服务和接口(转载)
  9. bootstrap modal远程加载的两种方式
  10. python图片水印_用python来给图片加水印
  11. [维修案例] 艾美特电风扇(FS4085R)不能调风量维修
  12. 备份文档到云服务器,备份到云服务器
  13. 全民健身时代到来,运动类APP如何秀出肌肉?
  14. cloudreve安装linux教程,Cloudreve云盘系统小白超详细图文安装教程
  15. 如何在win10新建菜单添加新的文件类型
  16. 达梦DM8之使用dmmdf恢复误删除的undo/redo文件
  17. 用计算机打出小星星,怎样打出一个小星星和更多的符号?
  18. IT知识百科:什么是暴力破解?
  19. 已知原函数和导函数的关系_导函数图像和原函数图像关系(我).doc
  20. 电脑换IP后,改虚拟机里的IP

热门文章

  1. java爬虫框架 httpclient_Java爬虫框架简介
  2. ILOG CPLEX求解TSP问题
  3. php中进制转换,php的进制转换
  4. 解决小程序自定义弹窗滚动穿透问题
  5. 印象笔记文章转到kindle上文字显示小的解决办法
  6. 2022-2028年全球与中国射频识别打印机行业深度分析
  7. CASIA-B步态识别数据库
  8. go 发送nats消息提示no response from stream
  9. Saber仿真软件平台下的蔡氏电路验证测试
  10. 什么是 MyBatis?