18 BFC的理解及作用

理解

块级格式化上下文,它是指一个独立的块级渲染区域,只有Block-level BOX参与,该区域拥有一套渲染规则来约束块级盒子的布局,且与区域外部无关。一句话:保证各个盒子之间的布局样式互不影响

从一个现象开始说起

一个盒子不设置height。当内容子元素都浮动时,无法撑起自身,这个盒子没有形成BFC

如何创建BFC

方法①:float的值不是none

方法②: position的值不是static或者relative

方法③: display的值是inline-block、flex或者inline-flex

方法④:overflow:hidden;

BFC的其他作用

BFC可以取消盒子margin塌陷
BFC可以可以阻止元素被浮动元素覆盖

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .a{
            /*float: left;*/
            /*position: absolute;*/
            /*a从块级元素变成行内元素*/
            /*display: inline-block;*/
            overflow: hidden;/*最佳不影响外部元素*/
        }
        .b{
            width: 100px;
            height: 100px;
            background-color: skyblue;
            float: left;
        }
        .b-last{
            width: 100px;
            height: 200px;
            background-color: greenyellow;
            /*浮动元素会脱离文档流,不写b-last会走到b的前面*/
            overflow:hidden;
        }
        .c{
            width: 300px;
            height: 300px;
            background-color: blueviolet;
            overflow: hidden;
        }
        .d{
            width: 100px;
            height: 100px;
            background-color: skyblue;
            margin-top: 30px;
        }
    </style>
</head>
<body>
<!--父节点继承子节点高度-->
<!--<div class="a">-->
<!--    <div class="b"></div>-->
<!--    <div class="b"></div>-->
<!--    <div class="b"></div>-->
<!--</div>-->
<!--<a href="">ssssssssssssss</a>-->
<!--<a href="">ssssssssssssss</a>-->
<!--<a href="">ssssssssssssss</a>-->
<!--<a href="">ssssssssssssss</a>-->
<!--<a href="">ssssssssssssss</a>-->
<!--<ol>-->
<!--    <li>szfc</li>-->
<!--    <li>szfc</li>-->
<!--    <li>szfc</li>-->
<!--    <li>szfc</li>-->
<!--    <li>szfc</li>-->
<!--</ol>-->
<hr>
<!--margin高度塌陷-->
<div class="c">
    <div class="d"></div>
</div>
<hr>
    
<!--阻止覆盖-->
<div class="a">
    <div class="b"></div>
    <div class="b"></div>
    <div class="b-last"></div>
</div>
</body>
<script>

</script>
</html>