Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 为什么Chrome和Firefox在边距上表现不同?_Css - Fatal编程技术网

Css 为什么Chrome和Firefox在边距上表现不同?

Css 为什么Chrome和Firefox在边距上表现不同?,css,Css,我试图理解Chrome和Firefox之间的行为差异。我发表了一篇文章来说明这一点 在Firefox中,页脚元素由于应用了margintop:-50px而固定在包装器div的底部。这就是我所期待的 对于Chrome(和IE),p元素的页边距底部向下推动页脚,使其溢出。为什么呢 html,正文{ 边际:0px; 身高:100% } 标题{ 背景色:淡蓝色; 不透明度:0.5; } #包装纸{ 背景色:番茄; 位置:相对位置; 最小高度:100%; } #容器p{ 背景颜色:浅绿色; 宽度:500

我试图理解Chrome和Firefox之间的行为差异。我发表了一篇文章来说明这一点

在Firefox中,页脚元素由于应用了
margintop:-50px
而固定在包装器div的底部。这就是我所期待的

对于Chrome(和IE),p元素的
页边距底部
向下推动页脚,使其溢出。为什么呢

html,正文{
边际:0px;
身高:100%
}
标题{
背景色:淡蓝色;
不透明度:0.5;
}
#包装纸{
背景色:番茄;
位置:相对位置;
最小高度:100%;
}
#容器p{
背景颜色:浅绿色;
宽度:500px;
/*边缘底部:0px*/
}
页脚{
高度:50px;
背景色:淡蓝色;
利润上限:-50px;
不透明度:0.5;
}

.


如果在包装上放置100%的高度,它将修复它。我不能100%确定为什么firefox做得对而其他人做得不对。我研究了一个小时,因为它快把我逼疯了,没有答案。这就是说,就Chrome而言,这是有道理的,因为本质上你说你希望包装的最小高度为100%……但它可以更高……因此,当你添加页脚时,它会更高……从而将其向下推

minheight: 100%;   -->   height: 100%;
但再一次,我不知道为什么它在不同的浏览器中是不同的


我注意到的一件事是,如果你在firefox中去掉-50px的页边空白,它会放在包装器后面(没有空格),但是如果你在IE和Chrome中也这样做,页脚的顶部会有一种填充物……大概10 px左右(没有测量)。这种“间距”或“间距”在firefox中没有出现,但在chrome和IE上有,这让我认为这种间距与它的行为不同的原因有关,因为这种间距与页脚底部(通过包装器的部分)显示的大小相同

这是因为
#wrapper
中的
p
元素有一些空白,可能会崩溃

保证金崩溃简介

css2.1规范说

在CSS中,两个或多个框的相邻边距[…]可以合并 形成一个空白。以这种方式合并的利润称为 崩溃[……]

相邻的垂直边缘塌陷[…]

你的风格

您的
#wrapper
元素具有

#包装器{
高度:自动;
最小高度:100%;
}
旧行为(Firefox)

安说

具有 为“自动”且小于元素的 已使用高度和大于元素的已使用高度 高度与流块级别子对象底部的最后一个相邻 如果元素没有底部填充或边框,则为边距

#包装器
具有
高度:自动
。但是,如果窗口比其内容高,
min height
将是使用的高度(不小于)。因此,利润率不会崩溃

这是在Firefox上观察到的行为

新行为(Chrome)

但是,规格以及现在的
min height
值并不重要:

重新表述相邻页边距的规则,以便“最小高度”和 元素的“最大高度”不会影响 元素的底部边距与其最后一个子元素的底部相邻 保证金

新规则是

最后一个流入子流的[底部边缘]和子流的[底部边缘] 如果父项具有“自动”计算高度,则其父项[相邻]

因此,由于
height
auto
,所以边距应该折叠

这是在铬上观察到的行为

注意

在这里,当前规范似乎暗示
最小高度:0
是一项要求:

上述规则意味着流内阻塞框的底部边缘 “自动”和“零”的值 使用流块级别子级的最后一个底部边距折叠 [……]

但事实并非如此。CSS 2.2中的句子

插图

下面的片段为
minheight
制作动画,以说明Chrome和Firefox之间的行为差异:

  • min height
    小于内容的高度时,
    • 使用的
      高度
      是内容的高度
    • Chrome和Firefox上的利润率都崩溃了
  • 否则,,
    • 使用的
      高度
      最小高度
    • 在Chrome上,但在Firefox上,页边距会崩溃
因此,当
minheight
达到内容的高度时,Firefox上会突然出现空白塌陷造成的空间幻影

#包装器{
背景:橙色;
边缘:0 1米;
-webkit动画:设置1s线性无限交替动画;
动画:设置1s线性无限交替动画;
}
页脚{
背景:红色;
}
p{
利润率:1米0;
高度:1.75em;
背景:绿色;
}
@-webkit关键帧动画{
从{最小高度:4em;}
至{最小高度:6em;}
}
@关键帧设置动画{
从{最小高度:4em;}
至{最小高度:6em;}
}
/*内容为4.5em高*/

第1行

第2行


页脚
最小高度:100%
将是您的问题,因为您的包装器div不包含页脚元素。您的一种颜色中也有一个拼写错误,dogerblue而不是dodgerblue。@BrianDriscoll无法解释浏览器之间的差异;
margin
的行为应该是定义良好的。@MrLister考虑到提供的CSS,我相信它在Chrome和IE中的行为符合预期。嗯,我没有一个真正的答案(它可能有一些