BFC(Block formatting context)直译为"块级格式化上下文"。它是一个独立的渲染区域,它规定了内部如何布局,是决定块盒子的布局及浮动相互影响范围的一个区域,而且与这个区域外部绝不相干。html
将父元素设置一个能让其变为BFC区域的属性,不如overflow:auto布局
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #one{ background:green; width: 100px; height: 50px; float: left; } #two{ background: red; width: 200px; height: 50px; float: left; } #box{ border: 2px solid salmon; width: 400px; overflow: auto; } </style> </head> <body> <div id="box"> <div id="one">one</div> <div id="two">two</div> </div> </body> </html>
在CSS中,两个或多个毗邻的普通流中的盒子(多是父子元素,也多是兄弟元素)在垂直方向上的外边距会发生叠加,这种造成的外边距称之为外边距叠加。这里讲解父子元素,兄弟元素同理。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{ margin: 0; padding: 0; } p{ padding: 0; margin: 20px 0 20px 0; height: 20px; background-color: burlywood; color: #fff; } div{ overflow: auto;//先后的区别取决于这句话,加上就能让父级生成BFC区域包含它们 width: 250px; background-color: #ccc; } </style> </head> <body> <div> <p>aaaaaaaaaaaaaa</p> <p>bbbbbbbbbbbbbb</p> </div> </body> </html>
BFC改造后flex