我对BFC的理解

BFC

BFC 是什么东西

BFC 称为块级格式化上下文,是一个拥有独立渲染区域的盒子,规定内部元素如何布局,并且盒子内部元素与外部元素互不影响

BFC 渲染规则

  • 内部的盒子会在垂直方向,一个接一个的放置
  • 盒子垂直方向的距离由 margin 决定,属于同一个 BFC 的两个相邻的盒子的 margin 会发生重叠
  • 计算 BFC 高度的时,浮动的元素也参与计算
  • BFC 就是页面上一个隔离的独立容器,里面的子元素不会影响到外面的元素

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>使用float脱离文档流,高度塌陷</title>
    <style>
        div {
            width: 200px;
            height: 100px;
            border: 1px solid red;
        }
    </style>
</head>

<body>
    <div style="float: left">两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局</div>
    <div style="width: 300px;overflow: auto">两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局</div>
</body>

清除内部浮动


<!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>高度塌陷</title>
    <style>
        .box {
            margin: 100px;
            width: 100px;
            height: 100px;
            background: red;
            float: left;
        }

        .container {
            overflow: hidden;
            background: #000;
        }
    </style>

</head>

<body>
    <div class="container">
        <div class="box"></div>
        <div class="box"></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>高度塌陷</title>
    <style>
        .a,
        .b {
            width: 100px;
            height: 100px;
            background: red;
            border: 1px solid #999;
            margin: 10px;
        }

        .contain {
            overflow: hidden;
        }
    </style>
</head>

<body>
    <div class="layout">
        <div class="a">a</div>
        <div class="contain">
            <div class="b">b</div>
        </div>
    </div>
</body>

</html>

如何触发BFC

  • 根元素 HTML
  • display为inline-block或者display
  • overflow不为visible
  • float不为none
  • position为fixed或asbolute
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值