自从我将FF更新到3.6.12(或者至少是我注意到这个问题的时候),我正处理一个不寻常的情况.虽然Chrome和Opera使用的是content-box盒子模型,但Firefox似乎已经开始使用了border-box.现在我正在设计一些表头,其高度为39px,底部为1px边框(总高度:40px).
它在任何地方都显示OK,除了FF,内容框高38px.
如果有任何用处,我使用的是Windows 7 Professional 32位,但在我的同事的电脑(Windows XP Professional)上也注意到了这一点.
我的CSS(简化了可读性)只是这个,没什么特别的:
table { border-spacing: 3px; }
table tr th { height: 39px; border-bottom: 1px solid red; }
Run Code Online (Sandbox Code Playgroud)
将box-model明确地设置为content-box没有任何效果,就好像border-box是在内部设置的!important......(有点像Chrome对自动填充表单字段背景的处理方式)
这个1像素的差异不会让我的造型分开(我不是让它像素完美),但我仍然对我的FF改变其行为感到不安.所以,我的问题是:
好的,用户代理样式表奥秘来了你的方式:
由于某种原因,FF设置 table { -moz-box-sizing: border-box }在其默认样式表中.和IE8一样(但不是7).其他浏览器使用默认值box-sizing: box-content.我不知道为什么FF这样做,反对W3C默认值.这里有一个很长的讨论:为什么在Firefox中将框大小设置为边框?.
要覆盖它,请使用-moz前缀:ie table { -moz-box-sizing: content-box }