美文网首页
BFC 块级格式化上下文

BFC 块级格式化上下文

作者: my木子 | 来源:发表于2021-05-09 20:08 被阅读0次

BFC

  • BFC 是一个独立的渲染区域,内部元素的渲染不会影响外界

创建 BFC

  • float 属性不是 none
  • position 为 absolute 或者 fixed
  • display 为 inline-block、table-cell、flex、table-caption或者inline-flex
  • 块级元素 overflow 属性不是 visible

1. margin 重叠

  • 属于同一个BFC的两个相邻的盒子会发生 margin 重叠,我们可以设置两个不同的BFC


    边距重叠
// html
    <p></p>
    <p></p>
// css
   html,body,div,p{
        margin: 0;
        padding: 0;
    }
    p {
        width: 100px;
        height: 100px;
        background: #eee;
    }

    p:nth-child(1) {
        margin-bottom: 100px;
    }

    p:nth-child(2) {
        margin-top: 50px;
    }
// 创建 BFC ------------------------
// html
    <div>
        <p></p>
    </div>
    <div>
        <p></p>
    </div>
// css
    html,body,div,p{
        margin: 0;
        padding: 0;
    }
    div{
        overflow: hidden; // 创建 BFC
    }
    p {
        width: 100px;
        height: 100px;
        background: #eee;
    }

    div:nth-child(1) p{
        margin-bottom: 100px;
    }

    div:nth-child(2) p{
        margin-top: 50px;
    }

2. 盒子塌陷,子元素设置 margin 值时,会影响父元素

盒子塌陷
// html
  <div class="box">
        <div></div>
  </div>
// css
    html,body,div,p{
        margin: 0;
        padding: 0;
    }
    .box {
        width: 200px;
        height: 200px;
        background: #000;
        /* overflow: hidden;    // 防止盒子塌陷 */
    }

    .box div {
        width: 100px;
        height: 100px;
        background: #eee;
        margin-top: 100px;
    }

3. 浮动的子元素无法撑开父元素问题

问题3
// html
  <div class="box">
        <div></div>
  </div>
// css
    html,body,div,p{
        margin: 0;
        padding: 0;
    }
    .box{
        border: 1px solid #000;
        /* overflow: hidden; */ 
    }
    .box div{
        width: 100px;
        height: 100px;
        background: #eee;
        float: left;
    }

4. 同级元素环绕问题

问题4
// html
    <div>我是一个左浮动的元素</div>
    <div>我是一个没有设置浮动, 也没有触发 BFC 元素!我是一个没有设置浮动, 也没有触发 BFC 元素!我是一个没有设置浮动, 也没有触发 BFC 元素!</div>
// css
    html,body,div,p{
        margin: 0;
        padding: 0;
    }
    div:nth-child(1){
        width: 100px;
        height: 100px;
        float: left;
        background: #333;
        color: #fff;
    }
    div:nth-child(2){
        width: 200px; 
        height: 200px;
        background: #eee;
        /* overflow: hidden; */    // 创建 BFC
    }

5. 清除浮动

问题5
// html 
   <div>
       <p>1-1</p>
       <p>1-2</p>
   </div>
   <div>2</div>
// css
      html,body,div,p{
        margin: 0;
        padding: 0;
    }
    div:nth-child(1) p {
        width: 100px;
        height: 100px;
        float: left;
        background: #333;
        color: #fff;
    }

    div:nth-child(1) p:nth-child(1) {
        background: #666;
    }

    div:nth-child(2) {
        width: 200px;
        height: 200px;
        background: #eee;
        /* overflow: hidden; */
    }

相关文章

  • css

    描述BFC(块格式化上下文)及其工作原理。 BFC 即 Block Formatting Contexts (块级...

  • BFC

    什么是 BFC Block Formatting Contexts(BFC):块级元素格式化上下文 BFC布局规则...

  • web前端入门到实战:CSS里的BFC和IFC的用法

    一、BFC Block Formatting Contexts (BFC,块级格式化上下文),就是 一个块级元素 ...

  • CSS知识点----BFC

    BFC(块级格式化上下文) 块格式化上下文(Block Formatting Context,BFC) 是Web页...

  • 学习BFC格式化上下文笔记

    BFC格式化上下文 块级格式化上下文(Block Fromatting Context)是按照块级盒子布局的。 B...

  • BFC / IFC

    BFC(Block Formatting Context)块级格式化上下文 定义:一个块格式化上下文 ( BFC ...

  • 3分钟理解BFC

    BFC的简介 BFC(Block Formatting Context) 块级格式化上下文,是用于布局块级盒子的一...

  • BFC和IFC

    BFC 块级格式化上下文 哪些元素会生产BFC? IFC 行内格式化上下文

  • BFC属性

    BFC(Block formatting context)直译为"块级格式化上下文"。BFC它是指一个独立的块级渲...

  • BFC和IFC

    BFC 块级格式化上下文 IFC 行内格式化上下文

网友评论

      本文标题:BFC 块级格式化上下文

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