你知道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)
小仓的头像小仓

相关推荐

  • 中国十大机油品牌(中国十大品牌机油)

    大家好,假如你对中国十大机油品牌,以及中国十大品牌机油不是很明白,今天小编给大家解答一下你们心中的疑问。希望可以帮助到有需要的朋友,下面就来解答关于中国十大机油品牌的问题,下面我们就来开始吧!文章目录1、中国十大机油品牌2、中国国产机油十大名牌排行榜3、中国十大机油排名性能特征…

    2023年12月17日
    0
  • 行测各部分得分,行测各部分怎么算分

      行测各部分得分,行测各部分怎么算分是行测是100分的。  关于行测各部分得分,行测各部分怎么算分以及行测各部分得分,行测分为几个部分,行测各部分怎么算分,行测各个部分多少分,行测分几个部分等问题,小编将为你整理以下知识:行测各部分得分,行测各部分怎么算分  行测是100分。 …

    网络快讯 2023年11月26日
    0
  • 枫香印染具体制作流程 需要在老枫香树脂中加入什么牛油

    枫香印染是贵州一种独特的民间手工技艺,而在制作过程中,有些材料是很重要的,比如枫香油,那么,枫香印染需要在老枫香树脂中加入什么?下面小编就带来介绍。蚂蚁新村枫香印染需要在老枫香树脂中加入什么5月22日答案:牛油解析:枫香印染工艺流程是先在老枫香树脂中加入适量牛油,用文火煎熬后过滤形成…

    网络快讯 2023年12月16日
    0
  • 三天如何瘦10斤 : 选对减肥方法很重要

      1、下趴提臀  脸部朝下,趴在无把手的座椅上,保持腿部悬空状态。做动作时手掌必须贴合地面,再将双腿来回往上抬,记住你的膝盖需要感觉被伸展、脚趾头也得用力。  2、半蹲抬腿  半蹲于椅子前方,双手往后摆在座椅上,与臀部同宽,记得手指方向要朝自己的身体。弯曲手肘的同时往地板放低臀部,…

    网络快讯 2023年11月13日
    0
  • 3dmax arnold渲染器正常参数设置 3ds Max Arnold渲染器

    在3D建模和渲染过程中,选择适合的渲染器非常重要。3dsMax中的Arnold渲染器是一种强大而受欢迎的渲染器,他能够提供高质量的渲染结果。本文将详细介绍如何通过合理设置Arnold渲染器的参数,来实现理想的渲染效果。首先,我们需要了解Arnold渲染器的基本概念和工作原理。Arnold…

    网络快讯 2023年12月18日
    0
  • 玉林北流高铁什么时候开通(玉林高铁开通了吗?)

    玉林兴业、北流、容县将步入高铁时代,陆川和博白该怎么办?,谢谢你的邀请。It很高兴回答你的问题。原创写作!全国每个村都通了硬化路,每个村都通了广播电视。现在未来的梦想实现了。对农民和普通人来说很方便?尤其是农民工,以前交通不方便,回家的路那么长。家里的老人都在等着过年,眼…

    2023年10月21日
    0
  • 今天语音搜索了吗?WPS2019版本格式分开显示设置方法

    大家在使用办公软件时,可能会选择常见的Office套件或者WPS来处理文档。对于WPS用户来说,升级到2019版本后可能会发现一个让人困扰的问题:各种格式混合在一个窗口中显示。在这…

    网络快讯 2024年3月25日
    0
  • 典当行回收什么(典当行黄金回收到底是怎么回事,)

    典当行回收什么(典当行黄金回收到底是怎么回事,)众所周知黄金作为最“硬通”的贵金属,即可做首饰又可有闲钱的时候作为投资储备之用。黄金的灵活就在于可回收的特性,大家可以关注行情择机进行买卖。但是价格看不好,一直是很多朋友头疼的地方。那么今天咱们就来聊聊,在典当行如何避免上述情况以及黄金回收到底是怎…

    网络快讯 2023年12月2日
    0
  • 美食大战老鼠视频(美食大战老鼠中热狗大炮好吗?)

    美食大战老鼠怎么评级的?美食大战老鼠评级的,普通关卡的话首先要4分30秒(貌似是)之内打爆BOSS最好02损SSS评,这么评级的。美食大战老鼠公会维持费多少进入游戏之后,我们打开个人技能和个人钱包,然后花费1万金币就可以维持美食大战老鼠的公会。5?美食大战老鼠章…

    2023年10月20日
    0
  • 色料是什么?你真的懂色料吗?

    色料如香水,一样分前调、中调和后调,你所看到的刚挤出的颜色,未必是皮肤上显现的颜色,更不一定是久经考验的后期留色。明星纹绣师对后期成功着色提出建议,使用的针头材质是关键、入深的深浅、使用的纹绣技巧方法、恢复期保养等因素都会影响色料的留色、显色与返色,更别提同一瓶色料在不同人的手里,做出来的效果也…

    网络快讯 2023年11月15日
    0

发表回复

登录后才能评论