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