CSS里的BFC和IFC的用法实例分析

之前一直听到有人提到 css里的bfc,正巧在 ife的练习里遇到了外边距折叠的问题,所以正好弄清楚bfc的机制。 (参考来源 见文末的 reference)

本文主要和大家介绍CSS里的BFC和IFC的用法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。

一 什么是 BFC

和之前所有博文一样,还是先从What的角度开始介绍,由浅入深的理解BFC。

所谓的 Formatting context(格式化上下文), 它是 W3C CSS2.1 规范中的一个概念。

立即学习“前端免费学习笔记(深入)”;

它是页面中的一块渲染区域,并且有一套渲染规则.

它决定了其子元素将如何定位,以及和其他元素的关系和相互作用。

而 Block Formatting Contexts (BFC,块级格式化上下文),就是 一个块级元素 的渲染显示规则。通俗一点讲,可以把 BFC 理解为一个封闭的大箱子,,容器里面的子元素不会影响到外面的元素,反之也如此。

BFC的布局规则如下:

1 内部的盒子会在垂直方向,一个个地放置;
2 BFC是页面上的一个隔离的独立容器;
3 属于同一个BFC的 两个相邻Box的 上下margin会发生重叠 ;
4 计算BFC的高度时,浮动元素也参与计算
5 每个元素的左边,与包含的盒子的左边相接触,即使存在浮动也是如此;
6 BFC的区域不会与float重叠;

那么如何触发 BFC呢?只要元素满足下面任一条件即可触发 BFC 特性:

body 根元素;

浮动元素:float 不为none的属性值;

绝对定位元素:position (absolute、fixed)

display为: inline-block、table-cells、flex

overflow 除了visible以外的值 (hidden、auto、scroll)

二 BFC的特性及应用

接下来介绍BFC常见的特性和应用,这一部分 在解释原因时,会用到上文的布局规则 和 触发条件,所以需要注意一下。

1 两个 相邻的普通流中的 块元素垂直方向上的 margin会折叠

.p {    width:200px;    height:50px;    margin:50px 0;    background-color:red;  }     

登录后复制

效果图是:

CSS里的BFC和IFC的用法实例分析

根据BFC规则的第3条:

盒子垂直方向的距离由margin决定,

属于 同一个BFC的 + 两个相邻Box的 + 上下margin 会发生重叠。

上文的例子 之所以发生外边距折叠,是因为他们 同属于 body这个根元素, 所以我们需要让 它们 不属于同一个BFC,就能避免外边距折叠:

登录后复制

.wrap {    overflow:hidden;  .p {    width:200px;    height:50px;    margin:50px 0;    background-color:red;

登录后复制

效果图是:

CSS里的BFC和IFC的用法实例分析

2 BFC可以包含浮动的元素(清除浮动)

正常情况下,浮动的元素会脱离普通文档流,所以下面的代码里:

登录后复制

外层的p会无法包含 内部浮动的p,效果见下图:

CSS里的BFC和IFC的用法实例分析

但如果我们 触发外部容器的BFC,根据BFC规范中的第4条:计算BFC的高度时,浮动元素也参与计算,那么外部p容器就可以包裹着浮动元素,所以只要把代码修改如下:

登录后复制

就可以完成以下效果:

CSS里的BFC和IFC的用法实例分析

3 BFC可以阻止元素被浮动元素覆盖

先看一个例子:

p { width:300px; } .aside { width: 100px; height: 150px; float: left; background: black; } .main { height:200px; background-color:red; }

登录后复制

效果图是:

CSS里的BFC和IFC的用法实例分析

之所以是这样,是因为上文的 规则5: 每个元素的左边,与包含的盒子的左边相接触,即使存在浮动也是如此;

所以要想改变效果,使其互补干扰,就得利用规则6 :BFC的区域不会与float重叠,让

也能触发BFC的性质,即:

.main {    overflow:hidden;    height:200px;    background-color:red;  }

登录后复制

通过这种方法,就能 用来实现 两列的自适应布局。

三 简要介绍IFC

IFC布局规则:

1 框会从包含块的顶部开始,一个接一个地水平摆放。

2 摆放这些框时,它们在水平方向的 内外边距+边框 所占用的空间都会被考虑;在垂直方向上,这些框可能会以不同形式来对齐:水平的margin、padding、border有效,垂直无效。不能指定宽高;

3 行框的宽度是 由包含块和存在的浮动来决定;行框的高度 由行高来决定。

相关推荐:

关于CSS中重要的BFC详解

关于CSS中重要的BFC详解

关于CSS中重要的BFC详解

以上就是CSS里的BFC和IFC的用法实例分析的详细内容,更多请关注【创想鸟】其它相关文章!

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

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2900288.html

(0)
上一篇 2025年3月10日 23:55:56
下一篇 2025年3月10日 23:56:05

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • CSS使用position:sticky实现粘性布局实例详解

    本文主要和大家介绍css使用position:sticky 实现粘性布局的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 简介 前面写了一篇文章讲解了position常用的几个…

    2025年3月10日
    000
  • CSS定位实例讲解

    本文主要和大家介绍css定位的教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 1.文档流 简单说就是元素按照其在 HTML 中的位置顺序决定排布的过程。HTML的布局机制就是用文档流模型…

    编程技术 2025年3月10日
    200
  • CSS圆形缩放动画实现代码分享

    最近在做公司的登录页,ue同学希望第三方登录的图标在hover的时候有一个圆形的缩放效果(原话是波纹效果-_-||),效果参考腾讯新闻和网易新闻的分享按钮。 本文主要和大家介绍CSS圆形缩放动画简单实现的相关资料,小编觉得挺不错的,现在分享…

    2025年3月10日
    200
  • 三种css方法实现DIV居中

    本文主要和大家分享css实现p居中的方法,css代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下,希望能帮助到大家。 下面给大家分享p居中的实现代码,具体代码如下所示: demo .p1{ width: 100px; height…

    2025年3月10日 编程技术
    200
  • 关于Css3的inline-block遇到的坑

    关于inline-block可能很多人都不熟悉,布局这方面很多人用的都是flex或者浮动,flex很强大毋庸置疑的可是关于兼容性就不是很让人满意,而浮动虽然很兼容可是觉得清除浮动就很麻烦,于此我在一些大型网站,例如我们的segmentfau…

    2025年3月10日 编程技术
    200
  • CSS BFC原理及其应用详解

    本文主要和大家介绍10分钟理解bfc原理及其应用的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 一、常见定位方案 在讲 BFC 之前,我们先来了解一下常见的定位方案,定位方案是控制…

    2025年3月10日 编程技术
    200
  • CSS选择器的新用法详解

    现在,预处理器(如sass)似乎已经成为开发css的标配,正如几年前jquery是开发js的标配一样。js的queryselector借鉴了jquery的选择器思想,css选择器也借鉴了预处理器的变量定义、选择器嵌套、代码块重用等常用功能。…

    编程技术 2025年3月10日
    200
  • CSS实现网页背景图片自适应全屏详解

    本文主要和大家介绍css实现网页背景图片自适应全屏的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 网页背景自适应全屏.PNG 一张清晰漂亮的背景图片能给网页加分不少,设计师也…

    2025年3月10日
    200
  • css实现爱心版加载效果

    本文主要和大家介绍纯css写出爱心版加载效果的示例代码的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 爱心等待效果如下: 现在互联网时代网站何其多,各有各得风格,但是什么样的风格能…

    2025年3月10日
    200
  • css3实现鼠标跟随导航效果

    本文主要和大家介绍了css3动画过渡实现鼠标跟随导航效果的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 效果知识点:html/css布局思维, p+css讲解,css3动画,盒子模…

    编程技术 2025年3月10日
    200

发表回复

登录后才能评论