块级格式化上下文(Block Formatting Context)
<style>div {width: 100px;height: 100px;background-color: red;margin: 100px;}</style><body><div></div><div></div></body>
可以看到此时两个 div 之间的间距并不是 200px, 而是 100px
此时可以在父节点加上 overflow: hidden
使其变为 BFC 元素, 从而避免重叠。
<style>div {overflow: hidden;}p {width: 100px;height: 100px;background-color: red;margin: 100px;}</style><body><div><p></p></div><div><p></p></div></body>
此时, 可以看到两个 div 之间的距离已变为期望的 200 px;
<style>.border {border: 1px solid #000;}.content {width: 100px;height: 100px;background-color: red;float: left;}</style><body><div class="border"><p class="content"></p></div></body>
子节点加上 float: left
后, 其脱离了文档流, 所以只看到一条 1px 的线条, 如下:
此时在父节点中加上 overflow: hidden
使其变为 BFC 元素从而消除浮动, 代码如下:
<style>.border {border: 1px solid #000;overflow: hidden; // 在此处加上 overflow: hidden; 可以消除浮动}.content {width: 100px;height: 100px;background-color: #ff0000;float: left;}</style><body><div class="border"><p class="content"></p></div></body>
<style>.content1 {width: 100px;height: 100px;background-color: red;float: left;}.content2 {width: 200px;height: 200px;background-color: green;}</style><body><div class="content1"></div><div class="content2"></div></body>
相邻节点中的一个节点使用 float: left
, 其脱离文档流, 从而两个 div 标签发生了重叠,
此时在普通流节点上使用 overflow: hidden
使其变为 BFC 元素从而使 BFC 元素和浮动元素分离:
<style>.content1 {width: 100px;height: 100px;background-color: red;float: left;}.content2 {width: 200px;height: 200px;background-color: green;overflow: hidden;}</style><body><div class="content1"></div><div class="content2"></div></body>
* overflow: 不为 visible;* position: 不为 static 以及 relative;* float: 不为 none;* display: 为 inline-box、table-ceil、flex;