首页
学习
活动
专区
圈层
工具
发布

《BFC:CSS布局中掌控浮动与margin的核心机制》

理解BFC,即是理解CSS如何在看似自由的布局中植入隐性的约束,让元素的排列既保持灵活,又不失可控。BFC的本质,是浏览器为元素创建的一个封闭的渲染空间。...在常规布局中,浮动元素如同脱离轨道的星体,会向上漂浮并脱离正常的文档流,导致父元素失去支撑而高度坍塌,相邻元素也可能被其覆盖,整个布局如同多米诺骨牌般陷入连锁混乱。...margin的折叠如同两个相邻空间的引力相互作用,当两个元素的margin相遇时,它们不会简单叠加,而是相互抵消取其最大值,这种特性常导致预期的间距与实际呈现出现偏差,尤其在垂直方向上,这种混乱更为突出...这种划分不是对空间的割裂,而是对秩序的重构,让开发者能够通过创建BFC,精确控制元素间的距离,从被动接受折叠变为主动设计空间关系。BFC的深层价值,在于它为CSS布局提供了一种“模块化”的思维方式。...复杂页面的布局挑战,往往源于元素间无边界的相互影响——一个元素的浮动可能引发连锁反应,一段margin的折叠可能破坏整体节奏。

5600

理解 Css 布局和 BFC

块格式化上下文(BFC)的行为通过一个简单的float示例很容易理解。在下面的示例中,我有一个框,其中包含向左浮动的图像和一些文本。...我们在 p 的上方和下方看不到任何灰色。 ? 防止 margin 折叠 在CSS当中,相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距。...这种合并外边距的方式被称为折叠,并且因而所结合成的外边距称为折叠外边距。折叠的结果按照如下规则计算: 两个相邻的外边距都是正数时,折叠结果是它们两者之间较大的值。...两个相邻的外边距都是负数时,折叠结果是两者绝对值的较大值。 两个外边距一正一负时,折叠结果是两者的相加的和。 产生折叠的必备条件:margin必须是邻接的!...但如果我们在多列布局中的最后一列里创建一个新的BFC,它将总是占据其他列先占位完毕后剩下的空间。

1.7K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    理解 CSS 布局和 BFC

    块格式化上下文(BFC)的行为通过一个简单的float示例很容易理解。在下面的示例中,我有一个框,其中包含向左浮动的图像和一些文本。...我们在 p 的上方和下方看不到任何灰色。 ? 在CSS当中,相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距。...这种合并外边距的方式被称为折叠,并且因而所结合成的外边距称为折叠外边距。折叠的结果按照如下规则计算: 两个相邻的外边距都是正数时,折叠结果是它们两者之间较大的值。...两个相邻的外边距都是负数时,折叠结果是两者绝对值的较大值。 两个外边距一正一负时,折叠结果是两者的相加的和。 产生折叠的必备条件:margin必须是邻接的!...但如果我们在多列布局中的最后一列里创建一个新的BFC,它将总是占据其他列先占位完毕后剩下的空间。

    1.4K00

    CSS(三)

    CSS 将 HTML 文档中的每个元素视为一个”框”或”盒”,其中包含一系列不同的属性,用于确定它在页面上的显示位置。...在以后的章节中,我们将更多地了解 HTML 结构和 CSS 框模型如何组合以形成各种复杂的页面布局。...Border Border 就是围绕内容和填充绘制的线,注意边框如何在填充旁边碰撞,两者之间没有空隙。...但是,它不会影响周围盒子的垂直布局。 垂直边距折叠 盒子模型的另一个怪癖是”垂直边距折叠”。当你有两个垂直边距彼此相邻的盒子时,它们会折叠。不是将边距加到一起,而是仅显示最大的边距。...垂直外边距折叠最可能发生的两种简单情况: 两个紧邻的兄弟元素的外边距发生折叠 父子元素的外边距发生折叠 首子元素与父元素的上外边距发生折叠 尾子元素与父元素的下外边距发生折叠 预防边距折叠 有时我们确实希望防止边距折叠

    2.4K20

    59道CSS面试题(附答案)

    很多应试者认为CSS很简单,没多少内容,面试就是面试 JavaScript部分的内容,这些观点是错误的,面试的第一关往往会考察应试者对CSS的掌握情况。因此,CSS也常常是应试者掉入的第一个陷阱。...在同一个BFC中,两个毗邻的块级盒在垂直方向(和布局方向有关系)的 margin会发生折叠。 BFC决定元素如何对其内容进行布局,也决定与其他元素的关系和相互作用。 40、谈谈你对C规范的理解。...伸缩容器中的每一个子元素都是一个伸缩单元。伸缩单元可以是任意数量的。伸缩单元内和伸缩容器外的一切元素都不受影响。简单地说, Flexbox定义了伸缩容器内伸缩单元的布局。...重叠的结果是什么? 外边距重叠就是 margin- collapse在CSS中,相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距。...(1)当两个相邻的外边距都是正数时,折叠的结果是它们两者中较大的值 (2)当两个相邻的外边距都是负数时,折叠的结果是两者中绝对值较大的值。 (3)当两个外边距一正一负时,折叠的结果是两者相加的和。

    5.8K50

    Web前端最全面试宝典- CSS篇

    在CSS当中,相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距。这种合并外边距的方式被称为折叠,并且因而所结合成的外边距称为折叠外边距。...折叠结果遵循下列计算规则: 1)两个相邻的外边距都是正数时,折叠结果是它们两者之间较大的值。 2)两个相邻的外边距都是负数时,折叠结果是两者绝对值的较大值。...3)两个外边距一正一负时,折叠结果是两者的相加的和。 7. Sass、LESS是什么?大家为什么要使用他们? 他们是CSS预处理器。他是CSS上的一种抽象层。...新增各种CSS选择器 (: not(.input):所有 class 不是“input”的节点) 圆角 (border-radius:8px) 多列布局 (multi-column layout) 阴影和反射...一个用于页面布局的全新CSS3功能,Flexbox可以把列表放在同一个方向(从上到下排列,从左到右),并让列表能延伸到占用可用的空间。

    1.4K10

    盒模型

    可以将侧边栏改为宽26%,两列能够并排放下,但是这种方式不可靠。 魔术数值不是一个理想的值,而是通过改样式试出来的值。在编程中不推荐魔术数值,因为往往难以解释一个魔术数值生效的原因。...负外边距并不常用,但是在某些场景下很实用,尤其是当创建列布局的时候。不过应当避免频繁使用,不然网页的样式就会失控。 # 外边距折叠 当顶部和/或底部的外边距相邻时,就会重叠,产生单个外边距。...这是用户代理的样式表添加的,但当前后叠放两个段落时,它们的外边距不会相加产生一个 2em 的间距,而会折叠,只产生 1em 的间隔。 折叠外边距的大小等于相邻外边距中的最大值。...# 多个外边距折叠 即使两个元素不是相邻的兄弟节点也会产生外边距折叠。在没有其他 CSS 的影响下,所有相邻的顶部和底部外边距都会折叠。 可以给任何元素加上外边距,而不必担心它们前后的元素是什么。...# 容器外部折叠 想要在容器内元素不与容器外元素外边距折叠,有下面方法可以处理: 当使用 Flexbox 布局时,弹性布局内的元素之间不会发生外边距折叠,网格布局也是 在两个外边距之间加上边框或者内边距

    2.3K20

    深入学习下 CSS 间距相关的知识

    因此,在本文中,我将分享关于 CSS 中的间距、实现该间距的不同方法以及何时使用填充或边距的所有信息。 现在,让我们开始吧。 间距类型 CSS 中的间距有两种类型,一种在元素外,另一种在元素内。...边距折叠 简而言之,当两个垂直元素有一个边距,并且其中一个的边距大于另一个时,就会发生边距折叠。 在这种情况下,将使用较大的边距,而忽略另一个边距。...在 CSS 网格中,可以使用 grid-gap 属性轻松地在列和行之间添加间距。...如果设计有多于一列,它将不起作用,见下图。 关于解决方案 #2,它没有 CSS 特异性问题。 但是,它仅适用于一个列堆栈。 更好的解决方案是通过向父元素添加负边距来取消不需要的间距。...以下是我想到的一些问题: 间隔组件如何在父组件中获取其宽度或高度?它将如何在水平和垂直布局中工作?例如:堆栈内的间隔符与添加左侧空间的间隔符。

    14.7K40

    HTMLCSS 常见面试题汇总

    9、请写出多种等高布局 假等高布局:使用背景图片,在列的父元素上使用这个背景图进行Y轴的铺放,从而实现一种等高列的假象 给容器div使用单独的背景色(固定布局、流体布局):用元素中的最大高度撑大其他的容器高度...创建带边框的两列等高布局:用border-left来做,只能使用两列 使用正padding和负margin对冲实现多列布局方法:在所有列中使用正的上下padding和负的上下margin,并在所有列外面加上一个容器...重叠的结果是什么? 外边距重叠就是margin-collapse; 在CSS当中,相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距。...这种合并外边距的方式称为折叠,并且因而所结合成的外边距称为折叠外边距; 折叠结果计算规则: 两个相邻的外边距都是正数时,折叠结果是他们两者之间较大的值; 两个相邻的外边距都是负数时,折叠结果是两者绝对值的较大值...; 两个外边距一正一负时,折叠结果是两者的相加的和 25、rgba() 和 opacity 的透明效果有什么不同?

    1.9K20

    BootStrap 前端框架简介

    还是使用以前的固定单位去布局,会引发两个问题: (1)分辨率太大,网页两边留白太多 (2)分辨率太小,页面显示不完全 概念:设备无关性布局方式;在css的发展过程中,逐渐出现了许多的响应式布局方式,今天将介绍的...使用行样式row来创建水平的列组。 内容需要放置在列中,并且只有列可以是行的直接子节点。 预定义的类如 .row 和 .col-sm-4 可用于快速制作网格布局。...> 列排序 col-md-push-8 推向右侧 2.2.2 CSS全局样式 ​ 是CSS最基础、最简单的语法组合而成的,通过这些基础而又核心的布局语法,不需要太多时间就能制作出来比较精美的页面。...翻页(Pager) 如果您想要创建一个简单的分页链接为用户提供导航,可通过翻页来实现。与分页链接一样,翻页也是无序列表。默认情况下,链接是居中显示。...站点引用 Bootstrap 插件的方式有两种: 单独引用:使用 Bootstrap 的个别的 *.js 文件。一些插件和 CSS 组件依赖于其他插件。

    2.1K10

    译|CSS中的间距,前端开发中各种设置间距的优点缺点及实例

    在本文中,我将介绍有关CSS中的间距,实现此间距的不同方法以及何时使用 padding 或 margin 所需的所有知识。 间距类型 CSS中的间距有两种类型,一种在元素外部,另一种在元素内部。...margin 折叠 简而言之,当两个垂直元素具有margin,并且其中一个元素的margin大于另一个元素时,发生边距折叠。在这种情况下,将使用更大的margin,而另一个将被忽略。 ?...需要解决的是中间设计状态,即两件物品仍然相邻,但两件物品之间的间距为零的设计状态。...在水平布局和垂直布局中,它将如何工作? 我们是否应该根据其父项的显示类型(Flex,Grid)对它们进行样式设置 让我们一一解决上述问题。 调整间隔组件的大小 可以创建一个接受不同变化和设置的间隔。...拥有这样的灵活性确实令人惊讶,并且为我们提供了构建更多动态和灵活布局的许多可能性。

    13.2K10

    浅析CSS里的 BFC 和 IFC

    所谓的 Formatting context(格式化上下文), 它是 W3C CSS2.1 规范中的一个概念。 它是页面中的一块渲染区域,并且有一套渲染规则....BFC的布局规则如下: 1、内部的盒子会在垂直方向,一个个地放置; 2、 BFC是页面上的一个隔离的独立容器; 3、属于同一个BFC的两个相邻Box的上下margin会发生重叠 ; 4、 计算BFC的高度时...1、两个相邻的普通流中的块元素垂直方向上的 margin会折叠 ? 效果图是: ?...根据BFC规则的第3条: 盒子垂直方向的距离由margin决定,属于同一个BFC的 + 两个相邻Box的 + 上下margin 会发生重叠。...通过这种方法,就能用来实现两列的自适应布局。 三、简要介绍IFC ---- IFC布局规则: 1 框会从包含块的顶部开始,一个接一个地水平摆放。

    1.5K110

    知识整理之CSS篇

    使用两个冒号::是为了和伪类(CSS2中并没有区别)做区分。考虑兼容性CSS2中已存在的伪元素仍可以使用单引号:语法。但是CSS3中新增的伪元素必须以使用::。...此元素会作为一个或多个行的分组来显示(类似 ) table-column 此元素会作为一个单元格列显示(类似 ) table-column-group 此元素会作为一个或多个列的分组来显示...当涉及到可视化布局的时候,Block Formatting Context提供了一个环境,HTML元素在这个环境中按照一定规则进行布局。一个环境中的元素不会影响到其它环境中的布局。...什么是外边距重叠 外边距重叠: margin-collapse 垂直相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距。...以上例子中,A 和 B 之间的 margin 折叠产生的 margin,是6个相邻 margin 折叠的结果。

    2K20

    FAQ | 为大屏幕设备构建应用的常见问题解答

    是时候为各式设备适配完善的输入支持了 Android 与 Chrome OS 中针对大屏幕设备的更新 我们在后台和社区等各渠道收到了很多来自开发者们的反馈,也把一些开发者们常见的问题进行了简单的收集和梳理...数据显示,因为更大的屏幕空间,可折叠设备的多任务处理量增加了 7 倍,开发者有必要平衡布局的简单性与灵活性以优化应用,例如开发者在使用新的窗口尺寸类别和视口断点时,如果要优化断点的布局,可以将其视为 3...此外开发者还需要考虑可折叠设备的形态,如高级布局支持等。...如需了解更多,请参阅: Navigation 组件使用入门 问: 为大屏幕构建应用的时候,平板和桌面设备这两种类型有哪些需要注意的?...这些都是需要考虑的非常重要的事项,如何在不同折叠形态下操作起来符合人体工学设计。

    4K10

    BFC 的形成和作用

    block container box(块容器):在 CSS2.2 中,除了 tabel box 或替换元素的主要盒子,一个块级盒子也是块容器,但不是所有的块容器都是块级盒子(如非替换内联块盒子)。...在 BFC 中,盒子从包含块的顶部开始,在垂直方向上一个接一个的排列。相邻盒子之间的垂直间隙由它们的 margin 值决定。...在同一个 BFC 中,相邻块级盒子的垂直外边距会合并(注:参与 BFC 布局的都是块级元素)。 在 BFC 中,每一个盒子的左外边缘(margin-left)会触碰到包含块的左边缘。...各自创建了 BFC 的兄弟元素互不影响(注:在水平方向上多个浮动元素加一个或零个触发 BFC 的元素可以形成多列布局)。...通过 BFC 可以实现灵活健壮的自适应布局,在一行中达到类似 flexbox 的效果,示例如下: 两栏自适应布局 1.gif 多列自适应布局 2.gif 参考资料 块级格式化上下文 包含块:MDN

    33411

    CSS进阶11-表格table

    行,列,行组,列组和单元格可以在它们周围绘制边框(CSS 2.2中有两个边框模型)。开发者可以在单元格中垂直或水平对齐数据,并可以将一行或者一列的所有单元格数据对齐。...如下,是一个简单的三行,三列的HTML 4中描述的表格: This is a simple 3x3 table ...该值导致整个行或列从显示中移除,并且由行或列正常占据的空间将用于其他内容。与折叠的列或行相交的跨行和列的内容会被剪切。但是,对行或列的抑制不会影响表格的布局。...这允许动态效果删除表格行或列而不强制对表格进行重新布局,以考虑列约束中的潜在变化。 6. 边框 borders 为CSS中的表单元格设置边界有两种不同的模式。...UA必须通过检查表格第一行中的第一个和最后一个单元格来计算表格的初始左边界和右边界宽度。表格的左边框宽度是第一个单元格的折叠左边框的一半,并且该表格的右边框宽度是最后一个单元格的折叠右边框的一半。

    8.1K30

    【面试篇】金九银十面试季,这些面试题你都会了吗?

    ,如何在即保证不破坏现有页面,又提供新的渲染机制呢?...在CSS当中,相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距。这种合并外边距的方式被称为折叠,并且因而所结合成的外边距称为折叠外边距。...折叠结果遵循下列计算规则: 两个相邻的外边距都是正数时,折叠结果是它们两者之间较大的值。 两个相邻的外边距都是负数时,折叠结果是两者绝对值的较大值。 两个外边距一正一负时,折叠结果是两者的相加的和。...他们是CSS预处理器。他是CSS上的一种抽象层。他们是一种特殊的语法/语言编译成CSS。 例如Less是一种动态样式语言. 将CSS赋予了动态语言的特性,如变量,继承,运算, 函数....在同一个BFC中的两个相邻的盒子在垂直方向发生margin重叠的问题 BFC是指浏览器中创建了一个独立的渲染区域,该区域内所有元素的布局不会影响到区域外元素的布局,这个渲染区域只对块级元素起作用 HTML

    1K30

    前端入门24-响应式布局(BootStrap)声明正文-响应式布局(BootStrap)

    那么,当屏幕尺寸发生变化时,在不同屏幕规格上,应该呈现怎样的布局,一般是通过媒体查询 @Media 来实现,但自己在 CSS 中书写的话,需要处理较多工作。...将 BootStrap 引入项目中使用有两种方式: 直接使用网上资源 将相关资源下载至本地使用 使用网上资源 第一种方式最简单,直接在 HTML 文档中声明 css 和 js 文件来源即可,如: 部分是作为导航栏,并且存在两种状态,折叠和展开,所以两种状态对应着两个 , 儿子标签里刚好两个 ; 看第一个 的 class...首先,container 来设定区域的大小,row 用来设置这个容器作为 flex 布局,而弹性布局中,一行会被划分成 12 列,看张图: ?...-4 生效,那么此时加起来一共 13 列,超过了 12 列,一行里已经不足够放这两个 了,根据 flex 的弹性布局,此时超过的会自动换行。

    4.1K20
    领券