如何理解BFC-块格式化上下文(图文)

本篇文章分享给大家的内容是关于如何理解bfc-块格式化上下文(图文),内容很详细,接下来我们就来看看具体的内容,希望可以帮助到大家。

BFC概念

BFC(block formatting context)块格式化上下文, 是Web页面块级元素布局及浮动元素彼此交互的区域。BFC是一个独立的布局环境,(实际页面渲染时是不可见的),由BFC构建的区域其内部元素的布局是不受外界的影响的,利用这个特性可用来消除浮动元素对其非浮动的兄弟元素和其子元素带来的影响。在BFC中元素从顶端开始垂直地一个接一个地排列,两个元素之间的垂直的间隙是由他们的margin 值所决定的。在一个BFC中,两个相邻的块级元素的垂直外边距会产生折叠。(后面详细解释)

形成BFC的条件:

1.浮动、绝对定位、fixed定位,这些方式都能让元素脱离文档流形成独立的BFC。
2.display:inline-block/table-cells/table-captions/inline-flex(非块级元素的块容器元素)
3.overflow:auto/hidden/scroll
overflow属性本身并没有什么特别之处,但是是会产生BFC创造独立布局环境,使元素不受浮动元素的影响。

使用BFC清除浮动效果示例:

2094519353-5b57ddb1b95a3_articlex.png

BFC的作用:

1.清除浮动带来的副作用(将浮动限定在BFC区域中)
2.撑开父元素(包住浮动元素) 清除浮动就是撑开父元素
3.阻止外边距合并
4.BFC独立性可用来布局

关于margin合并

margin合并出现的三个场景:

1.同一个BFC环境中,处于普通文档流中的垂直相邻元素的外边距合并。
3543052828-5b57dbbc19da2_articlex.png

2.父子元素的外边距合并。

4184429788-5b57dbe4c801e_articlex.png

3.空元素自身的外边距合并。
1366600456-5b57df1c89894_articlex.png
如果这个外边距遇到另一个元素的外边距,它还会发生合并

4280546886-5b57dbfeec2a0_articlex.png

margin合并规则:

1.两个margin都是正值的时候,取两者的最大值;
2.当 margin 都是负值的时候,取的是其中绝对值较大的,然后,从0位置,负向位移;
3.当有正有负的时候,先取出负 margin 中绝对值中最大的,然后和正 margin 值中最大的 margin 相加。
所有毗邻的margin要一起参与运算,不能分步进行。

阻止相邻元素外边距合并的方法:

1.被非空内容、padding、border 或 clear 分隔开。
2.不在一个普通流中或用BFC分割开。
3.让margin在垂直方向上不毗邻。

相关推荐:

css关于浏览器兼容问题的解析

关于css响应式的实现代码及效果

以上就是如何理解BFC-块格式化上下文(图文)的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 01:48:05
下一篇 2025年12月24日 01:48:10

相关推荐

  • css关于浏览器兼容问题的解析

    这篇文章分享给大家的内容是关于css关于浏览器兼容问题的解析,内容很有参考价值,希望可以帮到有需要的小伙伴。 一、火狐1. 失效hack:采用jquery UI:datepicker插件。(1)下载插件,放置在项目文件夹中;(2)在所需页面引入,如: 此script与页面所需的对应的js位置不分先后…

    好文分享 2025年12月24日
    000
  • 如何用纯CSS实现动态行驶的火车

    这篇文章给大家介绍的文章内容是关于如何用纯css实现正在行驶中的火车,有很好的参考价值,希望可以帮助到有需要的朋友。 效果预览 代码解读 定义 dom,容器中包含 2 个元素,train 代表火车,track 代表铁轨,其中包含的 3 个 代表 3 根枕木。 居中显示: body{ margin: …

    2025年12月24日
    000
  • 如何使用CSS实现单元素点阵loader的效果

    这篇文章主要介绍了关于如何使用css实现单元素点阵loader的效果,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 源代码下载 每日前端实战系列的全部源代码请从 github 下载: https://github.com/comehope/front-end-daily-challe…

    2025年12月24日
    000
  • 如何使用纯CSS实现一台咖啡机的效果

    这篇文章主要介绍了关于如何使用纯css实现一台咖啡机的效果,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 源代码下载 每日前端实战系列的全部源代码请从 github 下载: https://github.com/comehope/front-end-daily-challenges …

    2025年12月24日
    000
  • 如何用纯CSS实现卡通鹦鹉的效果

    这篇文章主要介绍了关于如何用纯css实现卡通鹦鹉的效果,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 源代码下载 每日前端实战系列的全部源代码请从 github 下载: https://github.com/comehope/front-end-daily-challenges 代码…

    2025年12月24日
    000
  • 如何用纯CSS实现一副国际象棋

    这篇文章主要介绍了关于如何用纯css实现一副国际象棋 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 源代码下载 每日前端实战系列的全部源代码请从 github 下载: https://github.com/comehope/front-end-daily-challenges 代码…

    2025年12月24日
    000
  • 教你如何用CSS来追踪用户

    我们可以用它来做什么 我们可以收集关于用户的一些基本信息,例如 屏幕分辨率(当浏览器最大化时)以及用户使用的什么浏览器(引擎) 此外,我们可以监测用户是否点击某个链接或鼠标悬停在某个元素上,用来 追踪用户悬停的链接,甚至可以 追踪用户如何移动鼠标(在页面使用不可见的字段),然而,使用目前我的方法只能…

    好文分享 2025年12月24日
    000
  • CSS教程之深入浅析CSS 选择器分组

    这篇文章主要介绍了css 选择器分组的相关资料,需要的朋友可以参考下 选择器分组 假设希望 h2 元素和段落都有灰色。为达到这个目的,最容易的做法是使用以下声明: h2, p {color:gray;} 将 h2 和 p 选择器放在规则左边,然后用逗号分隔,就定义了一个规则。其右边的样式(color…

    好文分享 2025年12月24日
    000
  • CSS 设置滚动条样式的实例代码

    这篇文章主要介绍了css 设置滚动条样式的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧 CSS 设置滚动条样式的实现代码如下所示: •::-webkit-scrollbar 滚动条整体部分•::-webkit-scrollbar-thumb  滚动条里面的小方块,能向上向下移动(或…

    好文分享 2025年12月24日
    000
  • CSS制作Web页面条纹背景样式的介绍

    这篇文章主要介绍了关于css制作web页面条纹背景样式的介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 通过CSS中的linear-gradient主要就能显示出不同方向的条纹效果,这里我们就来详解CSS制作Web页面条纹背景样式的技巧,需要的朋友可以参考下 一、横向条纹如下代码…

    2025年12月24日
    000
  • 如何使用CSS实现一个按钮文字滑动的效果

    这篇文章主要介绍了关于如何使用css实现一个按钮文字滑动的特效 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下源代码下载 请从 github 下载。 https://github.com/comehope/front-end-daily-challenges/tree/master/…

    好文分享 2025年12月24日
    000
  • 如何用纯CSS 实现一个颜色卡的效果

    这篇文章主要介绍了关于如何用纯CSS 实现一个颜色卡的效果,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 源代码下载 每日前端实战系列的全部源代码请从 github 下载: https://github.com/comehope/front-end-daily-challenges …

    2025年12月24日
    000
  • css相对定位

    定位的四种模式:static,relative,absolute,fixed 定位的四个位置:left,right,top,bottom 定位属性:position,有四种状态值 1.static:静态定位,按元素在文档流中的顺序排列,这是默认值,四个位置无效 2.relative:相对定位,元素相…

    好文分享 2025年12月24日
    000
  • css绝对定位

    定位的四种模式:static,relative,absolute,fixed 定位的四个位置:left,right,top,bottom 定位属性:position,有四种状态值 1.static:静态定位,按元素在文档流中的顺序排列,这是默认值,四个位置无效 2.relative:相对定位,元素相…

    好文分享 2025年12月24日
    000
  • css固定定位

    定位的四种模式:static,relative,absolute,fixed 定位的四个位置:left,right,top,bottom 定位属性:position,有四种状态值 1.static:静态定位,按元素在文档流中的顺序排列,这是默认值,四个位置无效 2.relative:相对定位,元素相…

    好文分享 2025年12月24日
    000
  • css浮动的原理

    一、浮动与绝对定位的相同之处: 1. 浮动元素也脱离了文档流 2. 元素浮动之后都支持了宽高,变成了块元素, 二、浮动的特点:只能沿着水平方向进行; 5.浮动的原理 .box1 { width:200px; height: 200px; background-color: lightskyblue;…

    好文分享 2025年12月24日
    000
  • css同级元素之间的清除浮动的技巧

    清除左浮动:该元素的左边不允许出现浮动元素而当前它的左边有浮动元素,而自己本身又是块元素,只能掉到下一行首开始显示 clear: left; 清除右浮动:与上面相同,不允许元素的右边出现浮动元素,同样它只能在右浮动元素下面另起一行显示,当然,它也只能沿着右浮动的最下面的底边为起始点,开始显示 cle…

    好文分享 2025年12月24日
    000
  • css层次元素之间的清除浮动的技巧

    如果让父元素包住浮动的子元素?主要有以下几种方法: 1:让父元素也一起浮动:经测试该方法可行,而且四周全部包住,非常严实.但是如果当前的子元素有多个父级的话, 那么每个父级元素都要设置浮动,甚至要一直写到 ,所以该方法pass。 2.给父元素设置溢出隐藏属性:同样也可实现要求,但这种方法有很多兼容性…

    好文分享 2025年12月24日
    000
  • 关于CSS更改鼠标为手状样式的介绍

    这篇文章主要介绍了css更改鼠标为手状样式的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在自行设置的p或者其他标签中,为了更好的体验效果,会将在滑动过程中,将鼠标变为手势 简单总结下css对应的样式。 所在的p中,添加cursor:pointer即可。 示例: 立即学习“前端免费学习…

    好文分享 2025年12月24日
    000
  • 关于CSS中的position:relative;的作用介绍

    这篇文章主要介绍了关于css中的position:relative;的作用介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 CSS中的position:relative是控制元素相对定位的,relative 不脱离文档流而absolute 脱离文档流,relative 的元素尽管表…

    好文分享 2025年12月24日
    000

发表回复

登录后才能评论
关注微信