前端面试题---对BFC规范的理解

9 篇文章 0 订阅
3 篇文章 0 订阅

BFC有点晦涩难懂,建议通过例子进行理解,理解他有什么具体的作用

定义

BFC 全称为 块格式化上下文 (Block Formatting Context) 。

官方定义:一个块格式化上下文(block formatting context) 是Web页面的可视化CSS渲染出的一部分。它是块级盒布局出现的区域,也是浮动层元素进行交互的区域。

元素变为BFC的条件

  1. 根元素或其它包含它的元素
  2. 浮动元素 (left,right)
  3. 绝对定位元素 (absolute 或 fixed)
  4. 内联块 (元素具有 display: inline-block)
  5. 表格单元格 (元素具有 display: table-cell,HTML表格单元格默认属性)
  6. 表格标题 (元素具有 display: table-caption, HTML表格标题默认属性)
  7. 具有overflow 且值不是 visible 的块元素(hidden | auto 或 scroll)
  8. display: flow-root
  9. column-span: all 应当总是会创建一个新的格式化上下文,即便具有 column-span: all
    的元素并不被包裹在一个多列容器中。

添加后的作用有啥
主要有两个作用

1.使 BFC 内部浮动元素不会到处乱跑

<style>
        .out{
         border: 3px solid palevioletred;
         min-height: 20px; 
        }
        .in{
            height: 200px;
            background-color: #9c2b2b;
            width: 50px;
            margin-left: 20px;
            float: left;
        }
    </style>
</head>
<body>
    <div class="parent">
        <div class="child"></div>
    </div>
</body>

效果图如下

通过让父元素parent,满足上面成为BFC元素的其他一个条件,就可以撑开父元素的高度。效果图如下
在这里插入图片描述

2.和浮动元素产生边界

<style>
        div{
            border:2px solid saddlebrown;
            height: 100px;
        }
        .left{
            min-width: 200px;
            float: left;
            margin-right: 20px;
        }
        .right{
            border-color: salmon;
        }
    </style>
</head>
<body>
    <div class="left"></div>
    <div class="right"></div>
</body>

效果图如下,左边div并没有和右边产生边距
在这里插入图片描述
当对右边的元素添加overFlow:hidden/auto,则可以产生边距,效果图如下
在这里插入图片描述

3. margin叠加的问题

但我们必须记住的是外边距折叠(Margin collapsing)只会发生在属于同一BFC的块级元素之间。如果它们属于不同的 BFC,它们之间的外边距则不会折叠。所以通过创建一个不同的 BFC ,就可以避免外边距折叠。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值