BFC解决了什么

BFC(Block Formatting Context),块级格式化上下文。

如果一个元素具有BFC,则内部子元素怎么变化都不会影响外部元素。

怎么触发BFC呢?

  • <html>根元素
  • float值不为none
  • display:inline-block || table-cell || table-caption
  • position:absolute || fixed
  • overflow:auto || scroll || hidden

BFC主要解决了什么?

1. 解决子元素使用float,导致脱离文档流,造成高度塌陷的问题(两栏布局中也存在该问题)

当没使用浮动时,子元素会将父元素的高度撑开

当给子元素添加浮动时,会造成高度塌陷,父元素的高度没有被撑开 

那么就可以给父元素设置BFC,使父元素高度被撑开

<head>
    <style>
        .content{
            background: sandybrown;
            display: inline-block;  /*设置BFC*/
        }
        .box{
            width: 200px;
            height: 200px;
            margin: 20px;
            background: khaki;
            float: left;
        }
    </style>
</head>
<body>
    <div class="content">
        <div class="box"></div>
        <div class="box"></div>
    </div>
</body>

2. 解决外边距塌陷(重叠)的问题

当给子元素设置上边距为50px时,子元素不会距离父元素50px,而是父元素距离页面上部分50px,此为外边距塌陷或叫外边距重叠。

解决此问题有三种方法:

  • 给父元素设置BFC
  • 给父元素设置border
  • 给父元素设置padding
  • <style>
        .content{
            width: 400px;
            height: 200px;
            background: wheat;
            /* float: left; */
            /* border: 1px solid #000; */
            padding: 1px;
        }
        .box{
            width: 200px;
            height: 150px;
            background: gray;
            margin-top: 50px;
        }
    </style>

外边距重叠还存在的问题是当有相邻盒子时,相邻盒子的外边距

当外边距都为正值时,取最大值为两盒子之间的距离;

当外边距一正一负时,取它们的和值为距离;

当都为负值时,取最小值为距离。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值