美文网首页
[前端]说说你对BFC的理解?

[前端]说说你对BFC的理解?

作者: 半颗糖嘿 | 来源:发表于2022-09-20 21:47 被阅读0次

一、BFC的理解

BFC(即块级格式化上下文),它是指一个独立的块级渲染区域,该区域拥有一套渲染规则来约束块级盒子的布局,且与区域外部无关。

注意:只有块级盒子参与。

二、什么样的情况下,未形成BFC?

例如:

一个盒子不设置height,当内容子元素都浮动时,就无法撑起自身,这个盒子就没有形成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>
        .son {
            width: 200px;
            height: 200px;
            background-color: pink;
            float: left;
            border: 1px solid #000;
        }
    </style>
</head>

<body>
    <div class="father">
        <div class="son"></div>
        <div class="son"></div>
    </div>
</body>

</html>

如何让父盒子有高度呢?

法一:

.father {
    float: left;
}

法二:

.father {
    position: absolute;
}

法三:

.father {
    display: inline-block;
}

法四:

.father {
    overflow: hidden;
}

三、创建BFC的方法

方法一:float的值不是none

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

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

方法四:overflow:hidden;

这四种方式,更推荐使用哪一种?

更推荐使用方法四:overflow:hidden;

<!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>
        .son {
            width: 200px;
            height: 200px;
            background-color: pink;
            float: left;
            border: 1px solid #000;
        }
        .father {
            overflow: hidden;
        }
    </style>
</head>

<body>
    <div class="father">
        <div class="son"></div>
        <div class="son"></div>
    </div>
    <a href="#">123</a>
</body>

</html>

因为其他三种方法都可能影响到其他盒子。
比如说第三种:display:inline-block;会导致a标签的内容与父盒子在同一行。

<!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>
        .son {
            width: 200px;
            height: 200px;
            background-color: pink;
            float: left;
            border: 1px solid #000;
        }

        .father {
            display: inline-block;
        }
    </style>
</head>

<body>
    <div class="father">
        <div class="son"></div>
        <div class="son"></div>
    </div>
    <a href="#">123</a>
</body>

</html>

四、BFC的作用

(1)BFC可以取消盒子margin塌陷;

盒子塌陷时:

<!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>
        .father {
            width: 200px;
            height: 200px;
            background-color: pink;
        }

        .son {
            width: 100px;
            height: 100px;
            background-color: skyblue;
            margin-top: 20px;
        }
    </style>
</head>

<body>
    <div class="father">
        <div class="son"></div>
    </div>
</body>

</html>

取消盒子margin塌陷:


<!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>
        .father {
            width: 200px;
            height: 200px;
            background-color: pink;
            overflow: hidden;
        }

        .son {
            width: 100px;
            height: 100px;
            background-color: skyblue;
            margin-top: 20px;
        }
    </style>
</head>

<body>
    <div class="father">
        <div class="son"></div>
    </div>
</body>

</html>

(2)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>
        .son {
            width: 100px;
            height: 100px;
            background-color: skyblue;
            float: left;
        }

        .son-last {
            width: 100px;
            height: 200px;
            background-color: pink;
        }
    </style>
</head>

<body>
    <div class="father">
        <div class="son"></div>
        <div class="son"></div>
        <div class="son-last"></div>
    </div>
</body>

</html>

阻止元素被浮动元素覆盖:

<!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>
        .son {
            width: 100px;
            height: 100px;
            background-color: skyblue;
            float: left;
        }

        .son-last {
            width: 100px;
            height: 200px;
            background-color: pink;
            overflow: hidden;
        }
    </style>
</head>

<body>
    <div class="father">
        <div class="son"></div>
        <div class="son"></div>
        <div class="son-last"></div>
    </div>
</body>

</html>

相关文章

  • BFC揭秘,其实也不过如此 | CSS

    相信每个前端er多多少少都有接触过BFC这个概念,也有许多人表示对这个概念难以理解。 其实BFC并不是什么神秘莫测...

  • CSS面试题

    谈一谈你对 BFC/IFC 的理解 BFC 全称 Block Formatting Context,即块级格式化上...

  • 对BFC的理解

    FC,即formatting context,格式上下文——————它是W3C CSS2.1规范中的一个概念,定义...

  • 对BFC的理解

    一.什么是BFC? 1、BFC全称Block Formatting Context ,中文直译为块级格式上下文。它...

  • 对 BFC 的理解

    BFC (Block Formatting Context) 是 CSS 中的一个概念,用于解决布局问题。它是一个...

  • BFC?

    BFC是前端面试中CSS部分的一个常考项,但是这个概念却是很不好理解的。 官方的定义 BFC (block for...

  • 2020前端面经知识点汇总

    灵魂拷问:说说你对前端的理解: 大多数人对前端的认识可能是写点简单的 HTML,CSS 样式,制作点网页界面,其实...

  • 我对BFC的理解~

    前端7班+余愿 鉴于我对BFC的理解难度,我觉得有必要把我的理解过程记录并保存下来,以后忘了可以随时来翻翻,也可以...

  • 对BFC的理解,如何创建BFC

    先来看两个相关的概念: Box: Box 是 CSS 布局的对象和基本单位,⼀个⻚⾯是由很多个 Box 组成的,这...

  • BFC,IFC,FFC,GFC的理解与纠错

    在前端学习中,接触到了BFC,IFC,FFC,GFC等这样的概念,在看了无数博客后,发现大家对它们的理解有偏差,...

网友评论

      本文标题:[前端]说说你对BFC的理解?

      本文链接:https://www.haomeiwen.com/subject/lluiortx.html