美文网首页
BFC 学习笔记

BFC 学习笔记

作者: JosephScript | 来源:发表于2020-12-02 17:31 被阅读0次

BFC - Block formatting context - 块级上下文
说实话其实光看文字蛮抽象的,所以我就举一些例子吧:

先上图!


规则图

比如:

  • 对于外围具有float元素影响到本身的:

代码(修改前):

<style>
  .left {
    width: 100px;
    height: 100px;
    float: left;
    background-color: lightblue;
  }
  .right {
    height: 200px;
    width: 200px;
    background-color: lightseagreen;
  }
</style>
<body>
  <div class="left">left</div>
  <div class="right">right</div>
</body>

效果:


1-1

此时,你希望两个元素不要重叠,可以使用 overflow: hidden 附加在 "right" 元素上,使其成为一个 BFC元素,这样 “left” 元素作为外围元素,就不会再对其有任何威胁。

代码(修改后):

<style>
  .left {
    width: 100px;
    height: 100px;
    float: left;
    background-color: lightblue;
  }
  .right {
    height: 200px;
    width: 200px;
    background-color: lightseagreen;
    overflow: hidden;  /*区别点,符合BFC规则就行,不记得的看上面的规则图*/
  }
</style>
<body>
  <div class="left">left</div>
  <div class="right">right</div>
</body>

效果:


1-2
  • 对于内部具有float元素超出元素的:

代码(修改前):

<style>
  .A {
    width: 100px;
    height: 100px;
    float: left;
    background-color: lightblue;
  }
  .B {
    background-color: lightseagreen;
  }
</style>
<body>
  <div class="B">B<div class="A">A </div></div>
</body>

效果:


2-1

A元素没有固定高度,子元素A是浮动元素,可能会影响到外部元素。所以给 B元素 增加一个 overflow: hidden 使其成为一个 BFC 元素,就不会影响到外部元素了。

代码(修改后):

<style>
  .A {
    width: 100px;
    height: 100px;
    float: left;
    background-color: lightblue;
  }
  .B {
    background-color: lightseagreen;
    overflow: hidden; /*修改点*/
  }
</style>
<body>
  <div class="B">B<div class="A">A </div></div>
</body>

效果:


2-2
  • 对于两个元素margin合并的:

代码(修改前):

<style>
  .A {
    width: 100px;
    height: 100px;
    line-height: 100px;
    text-align: center;
    color: #fff;
    background-color: lightblue;
    margin: 20px;
  }
  .B {
    width: 100px;
    height: 100px;
    line-height: 100px;
    text-align: center;
    color: #fff;
    background-color: lightseagreen;
    margin: 20px;
  }
</style>
<body>
  <div class="B">B</div>
  <div class="A">A </div>
</body>

效果:


3-1

看到黄色部分了么 ?那个是 B元素 的 margin,完全贴着 A元素 的边边



这个时候,我们就可以给 A 或者 B 元素加一点东西,让他成为 BFC 元素,就可以巧妙的解决这个问题~

代码(修改后):

/*样式部分就不抄了,省空间*/
<body>
/*这个地方换成任何符合 BFC 规则(看上面的规则图)的元素 也是可以的咧*/
  <div style="overflow: hidden;"> /*这个场景 overflow: hidden 和 display: inline-block 比较好*/
    <div class="B">B</div>
  </div>
  <div class="A">A </div>
</body>

效果:


3-2

就是给 B元素 找了个符合 BFC 规则(看上面的规则图)的父元素包起来。

总结:
如果出现了子元素影响外围元素或者是外围元素影响内部元素之类的问题,都可以使自身变成一个 BFC 元素来修复此类的问题。可以把 BFC 理解成一个锁上门的房子,谁也进不去,谁也出不来,在里面干啥都行~

相关文章

  • BFC 学习笔记

    BFC - Block formatting context - 块级上下文说实话其实光看文字蛮抽象的,所以我就举...

  • BFC,IFC学习笔记

    概念 Formatting context Formatting context 是 W3C CSS2.1 规范中...

  • BFC与IFC学习笔记

    BFC是什么 BFC全称是Block Formatting Context,即块格式化上下文。它是CSS2.1规范...

  • CSS 中的 BFC 是什么?

    大家好,我是前端西瓜哥。今天来学习 BFC。 BFC,为 Block Formatting Context 的缩写...

  • 学习BFC

    BFC全称是Block Formatting Context,即块格式化上下文。它是CSS2.1规范定义的,关于C...

  • 学习BFC

    什么是BFC BFC全称是Block Formatting Context,即块格式化上下文。它是CSS2.1规范...

  • CSS常用知识点

    1.BFC 参考:学习 BFC (Block Formatting Context) 块级格式化上下文,是一个独立...

  • BFC及其应用

    前言 本文包括以下内容: 什么是BFC 如何产生BFC BFC的特点 应用BFC 1、什么是BFC BFC (Bl...

  • 【CSS】BFC、简单布局、浏览器兼容及常见居中方式

    作业地址 BFC 是什么?如何生成 BFC?BFC 有什么作用? BFC是什么? BFC 全称 Block For...

  • BFC &边距合并& 浏览器兼容

    BFC 是什么?如何生成 BFC?BFC 有什么作用?举例说明。 BFC 全称 Block Formatting ...

网友评论

      本文标题:BFC 学习笔记

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