css-BFC

1.FC(Formatting Content)格式上下文

(1)定义:指的是页面中的一块渲染区域,它决定了其子元素如何定位,以及与其他元素的相互关系和作用;

2.BFC(Block Formatting Content)

(1)定义

块级格式上下文,一个独立的块级渲染区域

(2)触发BFC的方式

  • 根元素,body本身就是一个BFC

  • 设置浮动

  • 设置定位(absolute,fixed)

  • 弹性布局

  • overflow:hidden/auto/scroll

  • display:inline-block

(3)BFC块级格式上下文的布局规则

  • 内部的Box会在垂直方向,一个接一个地放置。(不用解释)

  • 属于同一个BFC的两个相邻Box的margin会发生重叠

  • BFC的区域不会与float box重叠

  • BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之如此

  • 计算BFC的高度时浮动元素也参与计算清除浮动

(4)利用BFC解决的事情

1.解决兄弟元素垂直塌陷的问题·;

处于同一个BFC,会产生垂直塌陷;

  • <body>
       <style>
         .box {
           width: 100px;
           height: 100px;
           background-color: green;
           margin: 100px;
         }
         .wraper {
           overflow: hidden;
         }
       </style>
      <!--此时两个box的垂直方法发生了margin塌陷-->   
       <div class="box"></div>
       <div class="box"></div>
     </body>
  •  

解决:给另一个盒子设置一个父盒子,启动父盒子的BFC,此时这两个盒子不处于同一块BFC,因此没有垂直塌陷的问题;

  • <body>
       <style>
         .box {
           width: 100px;
           height: 100px;
           background-color: green;
           margin: 100px;
         }
         // 现在两个盒子不属于同一块BFC,解决了垂直塌陷的问题
         .fa{  
           overflow:hidden;
         }
       </style>
      <!--此时两个box的垂直方法发生了margin塌陷-->   
       <div class="box"></div>
      <div class='fa'>
         <div class="box"></div>
      </div>
     </body>

2.制作右侧自适应的盒子问题

box2为浮动元素,脱标不占位置(注:浮动元素只会影响后面的元素不会影响前面的元素)

  • 由于box2浮动,所以box3会跑到做左边,同时标准流层级比浮动流层级低所以会被box2盖住
    •  <style>
          .box1 {
            background-color: red;
            width: 200px;
            height: 300px;
          }
          .box2 {
            float: left;
            width: 200px;
            height: 200px;
            background-color: green;
          }
          .box3 {
            width: 300px;
            height: 200px;
            background-color: blue;
          }
        </style>
      </head>
      <body>
        <!-- box1为块级元素独占一行 -->
        <div class="box1"></div>
        <!-- box2为浮动元素,脱标不占位置(注:浮动元素只会影响后面的元素不会影响前面的元素) -->
        <div class="box2"></div>
        <!-- 由于box2浮动,所以box3会跑到做左边,同时标准流层级比浮动流层级低所以会被box2盖住(多余部门显示) -->
        <div class="box3"></div>
      </body>

此时给box3设置一个BFC,---由于BFC的盒子不会被外界影响也不会影响外界,所以此时右面盒子不会被覆盖,可以实现右边盒子自适应;

  •  <style>
        .box1 {
          background-color: red;
          width: 200px;
          height: 300px;
        }
        .box2 {
          float: left;
          width: 200px;
          height: 200px;
          background-color: green;
        }
        .box3 {
          width: 300px;
          height: 200px;
          background-color: blue;
          overflow: hidden;
        }
      </style>
    </head>
    <body>
      <!-- box1为块级元素独占一行 -->
      <div class="box1"></div>
      <!-- box2为浮动元素,脱标不占位置(注:浮动元素只会影响后面的元素不会影响前面的元素) -->
      <div class="box2"></div>
      <!--box3设置了bfc,不会被其他盒子所影响 -->
      <div class="box3"></div>

3.清除浮动

传送门

3.IFC(Inline Formatting Contents)

行内块格式上下文

4.GFC(girdLayout Formatting Contents)

网格布局格式上下文;

5.FFC(Flex Formatting Contents)

自适应格式化上下文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值