资讯专栏INFORMATION COLUMN

学习CSS中的BFC

用户84 / 1916人阅读

摘要:定义全称为,意为块级格式化上下文,是页面中盒模型布局的渲染模式。可能上面的解释看了有点懵逼,通俗的说指的的是一块区域的布局,这个区域的布局有一个显著特点这个区域内的子元素无论使用何种布局何种样式都不会影响外部的元素。

定义

BFC全称为block formatting context,意为块级格式化上下文,是Web页面中盒模型布局的css渲染模式。

可能上面的解释看了有点懵逼,通俗的说BFC指的的是一块区域的布局, 这个区域的布局有一个显著特点:这个区域内的子元素无论使用何种布局、何种样式都不会影响外部的元素。BFC比较常见的用法就是用来清除浮动的影响,正常不清楚浮动影响的情况下,父元素的高度是会坍塌的

那么什么时候会触发BFC呢?满足一下条件中任何一个:

float的值不为none

position的值不为static或者relate

display的值为table-cell、table-caption、inline-block、flex或者inline-flex中的任意一个

overflow的值不为visible

作用 清除浮动

我们经常会遇到这样的情况:当一个容器内包含的子元素包含浮动元素时,会导致容器没有高度,人们常用一个伪类,然后在伪类中用clear属性清除浮动,其实可以通过定义一个BFC来达到同样的目的,举个例子:

.container {
  width: 600px;
  background-color: black;
}
.container div {
  float: left;
  width: 200px;
  height: 200px;
  margin-left: 10px;
  background-color: green;
}

当子元素存在float属性时,父容器没有设置高度,父容器的高度就会塌陷,我们可以通过在父容器中加overflow:hidden创建一个BFC来解决这个问题:

.container {
  width: 600px;
  background-color: black;
  overflow: hidden;  
}
.container div {
  float: left;
  width: 200px;
  height: 200px;
  margin-left: 10px;
  background-color: green;
}

防止文字环绕

test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test

img {
  float: left;
  width: 40px;
  height: 40px;
}

如上面例子所示,正常情况下我们期待的结果是左边显示图片,右边显示文字描述,而不是上面展示的文字环绕在图片周围,此时我们同样可以通过创建一个BFC来解决这个问题:

img {
  float: left;
  width: 40px;
  height: 40px;
  margin-right: 10px;
}
p {
  overflow: hidden;
}
防止外边距折叠

常规文档流中,子元素都是沿着父元素顶部开始一个接着一个垂直摆放的,相邻兄弟间的垂直间距由他们中间距最大的一个元素决定,而不是叠加在一起,这就是边距折叠,举个例子:

one

two

.container {
  width: 200px;
  background-color: black;
}
p {
  width: 150px;
  background-color: green;
}
.one {
  margin: 10px 0;
}
.two {
  margin: 20px 0;
}

这种情况,我们可以通过创建一个新的BFC来解决

one

two

.container {
  width: 200px;
  background-color: black;
}
p {
  width: 150px;
  background-color: green;
}
.one {
  margin: 10px 0;
}
.two {
  margin: 20px 0;
}
.new {
  overflow: hidden;
}

总结

这篇文章简单的介绍了BFC特点和举例了BFC的常用方法,如果有错误或不严谨的地方,欢迎批评指正,如果喜欢,欢迎点赞收藏
最后,打个小广告:阿里云双十一云服务新用户一折优惠车票

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/114071.html

相关文章

  • BFC及应用学习总结

    首先回顾一下普通流,普通流对后面进一步了解BFC有很大的作用 普通流(Normal Flow) 普通流是网页中元素的默认排版,默认情况下 块级元素:以block flow direction排列(每一个块级元素新起一行,即以从上往下以列排列) 行内元素:不会另起一行,一个接一个排布,直到空间不足 脱离普通流 CSS有以下几种方法使元素脱离普通流 float float能够使元素向某一方向偏移,...

    zorpan 评论0 收藏0
  • CSS中重要的BFC

    摘要:中有个重要的概念,搞懂可以让我们理解中某些原本诡异的地方。简介在解释之前,先说一下文档流。我们常说的文档流其实分为定位流浮动流普通流三种。使用包含浮动元素注意,这里触发并不能阻止其它形式的脱离文档流的元素覆盖正常流元素。 CSS中有个重要的概念BFC,搞懂BFC可以让我们理解CSS中某些原本诡异(??)的地方。 1. 简介 在解释BFC之前,先说一下文档流。我们常说的文档流其实分为定位...

    plus2047 评论0 收藏0
  • 理解 CSS 布局和 BFC

    摘要:布局中有一些概念,一旦你理解了它们,就能真正提高你的布局能力。我们通常有两种方法来解决这个布局问题。是布局中的一个迷你布局你可以将看作是页面内的一个迷你布局。理解浏览器如何布置网页是非常基础的。 CSS布局中有一些概念,一旦你理解了它们,就能真正提高你的 CSS 布局能力。本文是关于块格式化上下文(BFC)的。你可能从未听说过这个术语,但是如果你曾经用CSS做过布局,你可能知道它是什么...

    miya 评论0 收藏0
  • 前端-CSS3&H5

    摘要:高度模型浅识为的简写,简称为块级格式化上下文,为浏览器渲染某一区域的机制,中只有和中还增加了和。并非所有的布局都会在开发中使用,但是其中也会涉及一些知识点。然而在不同的纯制作各种图形纯制作各种图形多图预警 一劳永逸的搞定 flex 布局 寻根溯源话布局 一切都始于这样一个问题:怎样通过 CSS 简单而优雅的实现水平、垂直同时居中。记得刚开始学习 CSS 的时候,看到 float 属性不...

    xiaolinbang 评论0 收藏0

发表评论

0条评论

用户84

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<