首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

webkit中BFC元素临近浮动元素时的边距bug

一直以来我们都很熟悉IE的“浮动边距加倍”的bug,并且绝大多数重构人员都已经很擅长在需要浮动时就直接绕过他。...其实以webkit为核心的浏览器,包括但不限于Safari和Chrome,也有一个关于浮动和边距的bug,同样会造成布局错误。...这个BFC元素没有指定宽度值(或者指定width:auto) 当满足触发条件时,该BFC元素的另一侧的边距将不再受css控制(在webkit核心浏览器下),而是由你所指定的与浮动元素相同的边距决定,即使你在...具体来说,可以分为两种情况: 当BFC与浮动方向相同的边距小于或等于浮动元素占据的总宽度(width+margin+padding+border)时,BFC另一侧的边距等于所设定方向上的边距(下图前两种情况...); 当BFC与浮动方向相同的边距大于浮动元素占据的总宽度时,BFC另一侧的边距等于浮动元素占据的总宽度(下图第三种情况)。

1.7K50

【CSS】盒子模型外边距 ④ ( 元素默认的外边距 | 清除元素默认的内外边距 | 行内元素边距设置 )

文章目录 一、元素默认的外边距 1、body 标签的默认外边距 2、p 标签的默认外边距 二、清除元素默认的内外边距 1、清除方式 2、代码示例 三、行内元素边距设置 一、元素默认的外边距 ---...---- 1、清除方式 使用 通配符选择器 设置 清除内外边距 样式 , 将所有的标签元素 的 默认的内外边距 全部设置为 0 ; 清除标签默认的内外边距 样式 : * { /* 清除标签默认的内边距...padding: 0; margin: 0; } 样式 ; 查看 p 标签样式 , 其 上下边距 也消失了 ; 三、行内元素边距设置 ---- 为 行内元素 设置 上下边距 是无效的 , 建议只为...四个方向的边距 , 仅左右边距生效 */ margin: 50px; } 行内元素 ...p 标签 默认外边距 显示效果 : 按下 F12 键 , 进入 调试模式 , 选中 span 行内元素 , 为其设置 四个边距 , 只有 左右边距 50px

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

    由position属性引申的关于css的进阶讨论(包含块、BFC、margin collapse)

    也就是说,上下两个块级盒之间的边距由它们之中边距较大的元素决定,而不是他们的和!...格式化则表明了在这个环境中,元素处于此环境中应当被初始化,即元素在此环境中应当如何布局等。元素如果创建了BF么BFC决定了如何对其内容进行定位,以及它与其他元素的关系和相互作用。...在一个BFC中,两个相邻的块级盒子的垂直外边距会产生折叠。即是在BFC中相邻的块级元素的垂直边距会折叠(collapse)。...名词解释: 边距折叠:在CSS当中,相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距。这种合并外边距的方式被称为折叠,并且因而所结合成的外边距称为折叠外边距。...折叠的结果: 两个相邻的外边距都是正数时,折叠结果是它们两者之间较大的值。 两个相邻的外边距都是负数时,折叠结果是两者绝对值的较大值。 两个外边距一正一负时,折叠结果是两者的相加的和。

    1.1K50

    CSS 面试要点:盒模型

    ,还可以取得相对于视窗的上下左右的距离 # 边距重叠 两个垂直外边距相遇时,会发生折叠,合并后的外边距高度等于两折叠外边距中最高的那个。...只有普通文档流中的垂直外边距才会发生折叠,行内元素、浮动元素或绝对定位之间的外边距不会发生折叠。...,也是浮动元素与其他元素交互的区域。...# BFC 渲染规则 BFC 元素垂直方向的边距会发生重叠,属于不同 BFC 外边距不会发生重叠 BFC 的区域不会与浮动元素的布局重叠 BFC元素是一个独立的容器,外面的元素不会影响里面的元素,里面的元素也不会影响外面的元素...计算BFC高度的时候,浮动元素也会参与计算(清除浮动) # 创建 BFC 的方式 根元素() 浮动元素 (float 值不为 none) 绝对定位元素 (position 值为 absolute

    57960

    理解 Css 布局和 BFC

    BFC 还会导致一些其他有用的行为。 BFC 可以防止 margin 折叠 了解边距合并是另一个被低估的 CSS 技能。在下一个示例中,假设有一个背景颜色为灰色的 div。...这种合并外边距的方式被称为折叠,并且因而所结合成的外边距称为折叠外边距。折叠的结果按照如下规则计算: 两个相邻的外边距都是正数时,折叠结果是它们两者之间较大的值。...两个相邻的外边距都是负数时,折叠结果是两者绝对值的较大值。 两个外边距一正一负时,折叠结果是两者的相加的和。 产生折叠的必备条件:margin必须是邻接的!...如果我们把盒子设为 BFC,它现在包含了标签 p 和它们的边距,这样它们就不会折叠,我们可以看到边距后面容器的灰色背景。...不过无论如何,你现在应该已经理解了什么是 BFC,以及如何使用 overflow 或其他方法来包裹浮动,以及知道了 BFC 可以阻止元素去环绕浮动元素,如果你想使用弹性或网格布局可以在一些不支持他们的浏览器中使用

    1.4K00

    子元素margin-top导致父元素移动的问题

    问题分析 在MDN上面有这么一段文字: 块的上外边距(margin-top)和下外边距(margin-bottom)有时合并(折叠)为单个边距,其大小为单个边距的最大值,这种行为称为边距折叠。...有三种情况会产生边距折叠: 1、同一层相邻元素之间 元素A 元素B .A, .B { width...: 1px 0) 子元素采用浮动float或者定位position 的方式排列。...solid transparent; middle元素设置padding:padding-top: 1px; 注意事项 如果参与折叠的margin中包含负值,折叠后的margin的值为最大的正边距与最小的负边距...如果所有参与折叠的外边距都为负,折叠后的外边距的值为最小的负边距的值。这一规则适用于相邻元素和嵌套元素。

    2.7K20

    理解 CSS 布局和 BFC

    BFC 还会导致一些其他有用的行为。 BFC 可以防止 margin 折叠 了解边距合并是另一个被低估的 CSS 技能。在下一个示例中,假设有一个背景颜色为灰色的 div。...这种合并外边距的方式被称为折叠,并且因而所结合成的外边距称为折叠外边距。折叠的结果按照如下规则计算: 两个相邻的外边距都是正数时,折叠结果是它们两者之间较大的值。...两个相邻的外边距都是负数时,折叠结果是两者绝对值的较大值。 两个外边距一正一负时,折叠结果是两者的相加的和。 产生折叠的必备条件:margin必须是邻接的!...如果我们把盒子设为 BFC,它现在包含了标签 p 和它们的边距,这样它们就不会折叠,我们可以看到边距后面容器的灰色背景。...不过无论如何,你现在应该已经理解了什么是 BFC,以及如何使用 overflow 或其他方法来包裹浮动,以及知道了 BFC 可以阻止元素去环绕浮动元素,如果你想使用弹性或网格布局可以在一些不支持他们的浏览器中使用

    1.2K00

    《精通CSS》第3章 可见格式化模型

    最后,内边距、边框和外边框可以应用于元素的四边,也可以单独用于某一边。外边距甚至可以使用负值,从而使得元素在页面中移动。...包含块并不一定就是父元素,后面我们会介绍。 3.1.3 外边距折叠 前面,我们认识了各种盒子以及如何计算盒子的大小。 其中外边距只会影响元素与元素之间的距离,是一个比较简单的概念。...外边距的折叠有以下几种情况(很重要!)。 当两个元素垂直堆叠时,上方元素的下边距会与下方元素的上边距发生折叠。...甚至同一个元素的外边距也会折叠,如果存在一个空元素,只有外边距没有边框和内边距,此时自身的上下边距接触,发生折叠。 折叠后的外边距又接触其他元素的外边距,还会继续折叠。...而有了外边距折叠就不会这样了。所以外边距折叠是为了排版而生的。 最后,外边距折叠只会发生在常规文档流中块级盒子的垂直方向上。行内盒子、浮动盒子或绝对定位盒子的外边距都不会折叠。

    1.3K20

    CSS 面试要点:BFC(块级格式化上下文)

    HTML 文档中的位置决定 浮动 元素先按照普通流的位置出现,再根据浮动的方向尽可能向左或向右偏移,效果与印刷排版中的文本环绕相似 绝对定位 元素会整体脱离普通流,因此绝对定位元素不会对其兄弟元素造成影响...元素的具体位置由绝对定位的坐标决定 # BFC 格式化上下文(Formatting Context)指页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用...display 属性值为 inline-block | table-cell | flex overflow 属性值为 hidden | scroll | auto # BFC 特性及应用 # 避免外边距折叠...同一个 BFC 下外边距会发生折叠 https://codepen.io/cellinlab/pen/yLvRvEM 如果要避免外边距折叠,可以将其放在不同的 BFC 中 https://codepen.io...所以容器只剩 2px 的边距高度。

    37520

    外边距折叠(Margin collapsing)笔记?

    定义 外边距折叠是指有时候上边距与下边距坍缩成较大的那一个边距的行为。它只会发生在同一BFC的块级元素间,并且永远不会发生在浮动元素或绝对定位元素间。...可能的情况 毗邻的兄弟元素 相邻的兄弟元素垂直边距会发生折叠,但最后一个元素需要清除浮动时例外。...父元素和第一个/最后一个子元素 父元素与第一个子元素的margin-top可能重合,与最后一个子元素的margin-bottom可能重合。...如果要在这种情况下避免外边距折叠,请将两者的margin区分开。区分margin-top的方法有设置border、padding、inline content、清除浮动、避免创建BFC区域。...空区块 如果一个块级元素没有border、padding、inline content(行内内容)、height或者min-height将其与其他元素分开,这个块级元素的margin将会被折叠。

    90730

    CSS margin合并问题

    CSS 外边距合并问题 在CSS当中,相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距。这种合并外边距的方式被称为折叠,并且因而所结合成的外边距称为折叠外边距。...'值为'visible'以外的元素)与它的子元素的外边距不会折叠 浮动元素不与任何元素的外边距产生折叠(包括其父元素和子元素) 绝对定位元素不与任何元素的外边距产生折叠 inline-block元素不与任何元素的外边距产生折叠...注意: 浮动元素和绝对定位元素不与其他盒子产生外边距折叠是因为元素会脱离当前的文档流,违反了上面所述的两个margin是邻接的条件同时,又因为浮动和绝对定位会使元素为它的内容创建新的BFC,因此该元素和子元素所处的...但是浮动元素脱离了当前的BFC并不影响它后面的兄弟元素,后面的兄弟元素与浮动元素前面的元素依然在同一个BFC当中,所以,它们之间的margin还是会折叠的。...使父元素或子元素声明为绝对定位:position:absolute/fixed; 给父元素添加属性 overflow:auto/auto/scroll; 子元素的margin使用父元素的padding

    1.3K30

    那些年,我们被耍过的bug——haslayout

    :1%; IE6 的躲躲猫(peek-a-boo) bug bug 修复: _height:1%; 这里列出触发 hasLayout 元素的一些效果 1.阻止外边距折叠 两个相连的 div 在垂直上的外边距会发生叠加...上图的例子中,三个 div 各包含一个 p 元素,三个 div 及其包含的 p 元素都有顶部和底部的外边距,但只有第三个 div 的边距没有与它的子元素 p 的外边距折叠。...这是因为第三个 div 使用 zoom: 1 触发了 hasLayout ,阻止了它与它的子元素的外边距折叠。...另外,例子中也使用了 overflow: hidden 触发元素的 BFC ,这利用了 BFC 阻止外边距折叠的特性达到元素在 IE 与现代浏览器下的表现统一。...2.可以包含浮动的子元素,即计算高度时包括其浮动子元素 效果如图: ?

    68610

    CSS 布局

    如何形成的?特点是什么?有哪些应用场景?...#如何形成的 根元素() 浮动元素(float 的值不为 none) 绝对定位元素(元素的 position 为 absolute 或 fixed) 行内块元素(元素的 display 是...#BFC 特点 BFC 垂直方向边距(margin)重叠 BFC 是一个独立的容器,外面的元素不会影响到里面的元素 BFC 的区域与会与浮动元素的 box 重叠 计算 BFC 高度的时候浮动元素也会参与计算...#应用场景 防止浮动后导致的父元素高度塌陷 也就是清楚浮动,就是将父元素变为一个 BFC 就可以解决。...如设置:overflow:hidden; 避免外边距折叠 两个块同在一个 BFC 会造成垂直方向的外边距折叠,但如果对这两个块分别设置 BFC,那么边距重叠的问题就不存在了。

    1.1K20

    clearfix改良及overflow:hidden详解

    这篇短文介绍了如何改进clearfix进行增强,同时对overflow:hidden进行了深入的解释。...),尽管这样做我们还需要处理由clearfix造成的边距折叠bug(译者注:指clearfix的盒子内部元素的垂直边距被扩展到盒子之外)。...该页面中最开始的两个盒模型的边距叠加行为(底边距保留在盒子内部,顶边距则到了盒子外部)说明:生成的内容将盒子内部元素的边距保留保留在了盒子内部,而在其它浏览器下边距将被扩展到盒子边缘之外。...,符合w3c关于垂直边距叠加的说明。...更好的选择 如果你可以对包含浮动的元素应用宽度,那么更好的办法是用下面的样式来清除浮动: selector { display: inline-block; width: ; } 引申阅读

    1.3K80

    理解CSS布局和块格式化上下文

    [image.png] 在进行html布局及css编写的时候,你是否遇到过这样的问题: 子元素设置浮动脱离文档流后,父元素无法将其完全包裹 子元素浮动实现两栏布局时,另一个子元素与浮动子元素重叠 垂直方向的外边距...常见应用场景 使父元素包含浮动元素 下面例子解释如何让浮动内容和父元素等高,清楚浮动负面影响 html I am a floated....outer { overflow: auto; } [enter image description here] BFC防止垂直外边距重叠 外边距折叠的规则是:当两个块级元素相邻并且在同一个块级格式化上下文时...div上的边距之间没有内容,因此两者将会合并,因此段落最终与框的顶部和底部齐平。...设置浮动的情况下,我可以通过使右边div成为BFC,使两个兄弟div互相隔离、互不影响,从而达到去除文字环绕的效果。

    2.1K30

    CSS进阶07-浮动Floats

    因此,在之前的例子中, p 盒和 img 浮动盒的垂直外边距不会折叠。...该父块的位置由关于外边距折叠那章的规则定义。 浮动盒的上外边缘不可高于源文档中此前元素生成的块盒或浮动盒的上外边缘。 元素的浮动盒的上外边缘不可高于源文档中此前元素生成的盒所在的行盒的顶部。...空隙阻止外边距折叠并充当元素上外边距margin-top之上的空间。空隙被用于推动元素在垂直方向上越过浮动。...如果元素上边框边缘的假定位置没有越过有关浮动,那么空隙就会产生,并且外边距折叠要根据8.3.1章规则计算。... 说明:要是没有 clear ,首段和末段两个段落的边距将会折叠并且末段的上边框边缘将同浮动段落的顶部齐平。如下: ? 但 clear 使得上边框边缘低于浮动,即下降2em。

    1.5K40
    领券