你知道CSS中的BFC是什么吗?

一、什么是BFC首先引用一下WC3对BFC的专业解释BFC(BlockFormattingContext):翻译成中文叫做块级格式化上下文,它决定了元素如何对其内容进行定位,以及与其它元素的关系和相互作用,当涉及到可视化布局时,其提供了一个环境,元素在这个环境中按照一定的规则进行布局排列…

一、什么是BFC

首先引用一下WC3对BFC的专业解释

BFC(Block Formatting Context):翻译成中文叫做块级格式化上下文,它决定了元素如何对其内容进行定位,以及与其它元素的关系和相互作用,当涉及到可视化布局时,其提供了一个环境,元素在这个环境中按照一定的规则进行布局排列

换句话说,BFC就是为元素提供一个独立的容器,在该容器里按照一定的规则进行布局排列,该容器内的元素不会影响外部的元素,同理,外部的元素也不会影响内部的元素

二、如何触发BFC

先来了解一下有哪些条件可以触发BFC:

  1. float 不为 none
  2. positionabsolutefixed
  3. overflow 不为 visible
  4. displayinline-blocktableflow-root

后续的案例中,但凡遇到需要触发BFC的,都可以按照这四个条件来使用

三、BFC的相关案例

官方的解释非常的难以理解,那么我们就用几个例子来详细了解BFC的使用

(1)清除浮动

首先来看一个例子

该html文档在浏览器中的样式如下图所示

很明显,这是一个子元素浮动无法撑开父元素的例子

产生这种情况的原因很简单,有以下两点:

  1. 父元素没有设置 height
  2. 子元素设置了 float 浮动,脱离了文档流

因子元素脱离了文档流,父元素无法统计到子元素的大小,因此子元素无法将父元素撑开,所以我们就要将浮动清除

那么我们平时是如何清除浮动的呢?最常见的可能就是给父元素添加样式 overflow: hidden了,其实这种方法就触发了BFC,在父元素内部形成了一个独立的环境,按照BFC的布局规则,该容器内的元素都会被统计到,因此浮动就被清除了

清除浮动后的效果如下图所示

其实通过我们上述说到的触发BFC的条件都可以实现上述效果,这里就不做过多的展示了

既然讲到了清除浮动,我们就来看一下除了上述说到的方法,还会用到什么办法呢?

  1. 在最后一个子元素后面添加一个空元素,并给予样式 clear: both
  2. 给父元素设置一定的高度

(2)margin-top塌陷

另一个例子就是margin-top塌陷,如图

当前子元素在父元素框内,并且上面紧贴父元素上边缘,此时我们想让子元素的上边缘与父元素的上边缘拉开一段距离,实现如下图所示的效果

因此我们第一个想到的就是给子元素添加 margin-top,可结果却不如人意,效果如下图所示

实际效果就是,我们给子元素添加了 margin-top,但却是父元素整体与上一个元素拉开了距离,这就是我们常见的 margin-top塌陷 的问题

很明显,对子元素进行布局时影响到了其它元素的布局,因此我们可以通过给父元素添加一定的样式来触发BFC,使其内部形成一个独立的环境,这样就不会影响到其它元素的布局了

这里再做一个补充,针对 margin-top塌陷,我们还可以对父元素设置一个大小不为0的边框 border,这样也能解决问题

(3)垂直方向的margin重叠

先来看一段代码

效果如图所示

根据代码,按道理来说子元素1与子元素2之间应该相隔 20 + 50 = 70px,但实际却只有 50px;同理,子元素2与子元素3之间应该相隔 70 + 50 = 120px,但实际却只有 70px

这是因为在垂直方向上,相邻两个元素若都设置了 margin 值,则按照较大的那个值来布局,这就是典型的垂直方向上的margin重叠问题

若此时为了避免margin重叠,我们可以给每一个子元素的外部添加一个父元素,并对父元素设置样式来触发BFC,那么就不会有上述的问题了

具体的代码:

效果如下图所示:

补充: 该案例中,我们通过给每个子元素套上了个父元素,并且都触发了BFC,从而实现了避免 margin 重叠,即我们创建了多个BFC才实现这样的效果。但是如果在一个BFC环境中,仍有多个子元素,那么这些子元素垂直方向的 margin 仍会出现重叠

(4)自适应布局

相比大家都有做过文字绕图这样的效果,其实现原理就非常的简单,只需一个 float 就可实现

效果如下图所示

按道理来说,浮动的元素脱离了正常的文档流,应该会覆盖住别的元素的内容,但为什么这里实现了文字绕图的效果呢?

其实css最初设计浮动就是为了实现文字绕图的效果,虽然浮动会覆盖别的元素,但不会覆盖住文字

此时我们为了不让浮动的元素覆盖住别的元素,我们可以触发别的元素的BFC环境,因此可以给文本元素添加 overflow: hidden 样式,效果如下图所示

看到这里,不禁想起这几年非常流行的页面布局,那就是两栏布局,如下图所示

一般像这样的布局,都是左侧宽度固定了,右侧的宽度是自适应的

因此我们就可以通过刚才避免文字绕图的方式来实现这种布局

代码如下:

效果如图所示

四、结束语

官方对于BFC的讲解,我感觉是有点难以理解,因此我在本文中也没有将BFC环境中的布局规则列举出来,但其实BFC的布局规则大致可以理解为与正常的布局规则一样,只不过有些特殊的规则我在案例中也特地强调出来了,希望大家可以把每个案例好好看一看,这样应该能对BFC有个大致的了解了。

版权声明:本文内容由网友提供,该文观点仅代表作者本人。本站(http://www.kuojiu.com/)仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 3933150@qq.com 举报,一经查实,本站将立刻删除。

版权声明:本文内容由作者小仓提供,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至907991599@qq.com 举报,一经查实,本站将立刻删除。如若转载,请注明出处:http://www.cangchou.com/176492.html

(0)
小仓的头像小仓

相关推荐

  • 杭州河坊街不好玩?那是你没有玩明白!来看看这个攻略吧!

    河坊街一号线到定安路一口出来,直走50米,就能看到中国四大寺庙之一的凤凰寺。凤凰寺踩着宋代的砖瓦,沿着岳飞秦桧走过的青石板路到完南宋绿街。羊汤饭店中午到老爷爷老奶奶都爱吃的羊汤饭店,羊肉烧麦膻味比较重,好这口的可以试试。九如楼走到九如楼,想学书法挑选字帖的小伙…

    网络快讯 2023年11月16日
    0
  • 电子芯片厂家(全球最大的芯片公司排名)

    第十个,NXP恩智浦半导体公司。第九个,ST意法半导体。第八个,AMD超威半导体。第七个,德州仪器。第六个,博通公司。第五个,英伟达。第四个,联发科。第三个,海思半导体。第二个,高通。第一个,英特尔。,你知道全球都有哪些实力雄厚的芯片公司吗?这些公司的产品很有可能就搭载在你使用的产品…

    2023年10月25日
    0
  • 面包机做面包方法及配料表,柔韧到极致,操作简单零失败

    做一次就迷上的面包,柔韧到极致,操作简单零失败,方子收藏吧。好长一段时间、做面包一直用的是液种法,因为用液种法做的面包成品太暄软,软乎乎的感觉吃起来绝对是享受,口味可甜可咸、更可以选择低油无添加,很健康,对于喜欢吃软面包的妹子们,是一定不能错过的。这几天在群内有小伙伴说到了波兰种面包,这个也…

    网络快讯 2023年11月15日
    0
  • 什么叫大二度,小二度,啥叫大二度,小二度

      什么叫大二度,小二度,啥叫大二度,小二度是大二度是音乐理论中关于“音程”的一个术语的。  关于什么叫大二度,小二度,啥叫大二度,小二度以及什么叫大二度,小二度,什么叫大二度,小二度,小二度,啥叫大二度,小二度,什么叫大二度和小二度,大二度和小二度区别等问题,小编将为你整理以下知识:什…

    网络快讯 2023年11月27日
    0
  • 苹果禁忌人群

    摘要这个内容将告诉你苹果禁忌人群,答案:苹果禁忌人群有生理期痛经者、糖尿病患者、便秘者和溃疡性结肠炎患者,因为苹果质地较硬,不利于肠壁溃疡面的愈合,而且苹苹果禁忌人群有生理期痛经者、糖尿病患者、便秘者和溃疡性结肠炎患者,因为苹果质地较硬,不利于肠壁溃疡面的愈合,而且苹果含有有机酸和糖类…

    2023年12月1日
    0
  • 水果西米露怎么做好吃 水果西米露怎么做

    准备西米、牛奶、香蕉、菠萝、哈密瓜、黄瓜、西瓜、草莓、苹果适量、蜂蜜一勺、葡萄干适量;凉水煮沸后加入西米;将锅中水倒出,留下西米,加入凉水淘洗;将香蕉、菠萝、哈密瓜、黄瓜、西瓜、草莓切成小块放入盛有西米的碗中;将酸牛奶倒入碗中,加入适量蜂蜜和葡萄干,搅拌均匀即可食用。水果西米露是一道甜点名称,味…

    网络快讯 2023年12月15日
    0
  • 北京去烟台怎么走(北京到烟台坐缘绿皮火车还有吗?)

    北京到烟台经停站点?北京到烟台有高铁或者动车。火车从北京站或北京南站出发,停靠站会略有不同。一般大都市停靠廊坊西站、天津站、沧州站、德州东站、济南西站、济南站、章丘站、淄博北站、青州站、潍坊站、高密站、胶州站、莱西站、莱阳站、即墨北站,然后到达烟台站或烟台南站。北京到烟…

    2023年10月22日
    0
  • 蟒蛇渡劫事件 ,为什么上天不让蛇渡劫?

    蟒蛇渡劫事件为什么上天不让蛇渡劫?蟒蛇渡劫是一个民间的传说,据说渡劫成功的巨蟒,就可以化身龙形,成为真正的龙!所以我们有时候听到有人说看到蟒蛇渡劫事件,一般都被雷劈死!用迷信思想来说,天上对化身龙形的巨蟒要求极高,不是随便都可以成仙的。所以,天上不让蟒蛇渡劫成功!飞天真实的渡劫事件:…

    网络快讯 2023年11月14日
    0
  • 买车、买房时不会砍价,可以向哪种职业寻求帮助 蚂蚁新村今日答案10.27

    10.27蚂蚁新村答案是什么?10.27答对蚂蚁新村职业小课堂的题目就可以获得木兰币产速+3/时的奖励,那么买车、买房时不会砍价,可以向哪种职业寻求帮助的答案是什么呢?接下来就让我们一起了解一下10.27蚂蚁新村的答案吧。10.27蚂蚁新村答案1.10.27答案买车、买房时不会砍价,…

    2023年11月5日
    0
  • 海信电视质量测评 海信电视机质量怎么样

    之前在商场做家电导购,很多朋友问我,买电视是买老品牌海信还是追求性价比买小米或者荣耀?我另一个账号发过电视挑选教程的文章,有网友给出很专业的评论。有的网友认为,电视这种东西,主要还是要看品牌吧,感觉还是要选一个靠谱的牌子才行。有的网友认为,一个手机品牌和一个专业电视品牌的产品相比还是会选择…

    网络快讯 2023年12月13日
    0

发表回复

登录后才能评论