JSFiddle - React, Tailwind, and code Playground
by nokey
HTML
<!-- BFC清除浮动 -->
<div class="par">
<div class="child1"></div>
<div class="child2"></div>
</div>
<!-- BFC两栏布局 -->
<div class="wrap">
<div class="aside"></div>
<div class="main"></div>
</div>
CSS
<!-- BFC清除浮动 -->
.par{
background-color: #000;
border: 2px solid #0f0;
/*
计算BFC的高度时,浮动元素也参与计算;
触发BFC
*/
overflow: hidden;
}
.par:after{
content: '';
display: table;
clear: both;
*zoom: 1;
}
.child1, .child2{
float: left;
width: 100px;
height: 100px;
background-color: #741902;
border: 2px solid #f00;
}
<!-- BFC两栏布局 -->
.wrap{
width: 300px;
position: relative;
overflow: hidden;
}
.aside{
width: 100px;
height: 150px;
float: left;
background: #f66;
}
.main{
height: 200px;
background: #fcc;
/*
BFC的区域不会与float box重叠。
触发BFC
*/
overflow: hidden;
}
JavaScript
/*
一、BFC布局规则:
> 内部的Box会在垂直方向,一个接一个地放置。
> Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠
> 每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
> BFC的区域不会与float box重叠。
> BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
> 计算BFC的高度时,浮动元素也参与计算。
二、哪些元素会生成BFC:
> 根元素
> float属性不为none
> position为absolute或fixed
> display为inline-block, table-cell, table-caption, flex, inline-flex
> overflow不为visible
*/