Firefox 3.6.12 vs CSS box
自从我更新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; }
将box-model明确地设置为content-box不起作用,就好像border-box在内部设置为!important
...(有点像Chrome自动填充表单字段背景的做法)
这1个像素的差异不会让我的风格分开(我没有让它像素完美),但我仍然对我的FF改变其行为感到非常不安。 所以,我的问题是:
OK,用户代理样式表阿尔卡纳以您的方式出现:
出于某种原因,FF在其默认样式表中设置了table { -moz-box-sizing: border-box }
。 IE8(但不是7)。 其他浏览器使用默认的box-sizing: box-content
。 我不知道为什么FF做到这一点,违背了W3C的默认价值。 这里有一个很长的讨论:为什么在Firefox中将表格框设置为边框?
要覆盖它,请使用-moz前缀:ie table { -moz-box-sizing: content-box }
也许反过来解决这个问题将是一个很好的解决方案:只要在任何情况下尝试border-box
!
table tr th
{
height: 40px;
border-bottom: 1px solid red;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
好,所以我对此做了一些测试,在Chrome 8,Opera 11和Firefox 4中,TR的高度都一样。
Firefox 4pre8
Chrome 8
歌剧11
在Opera和Firefox中,TH的高度为38px,而不是39px,似乎WebKit在这里有一个错误,它报告TH上的高度不正确,同时仍然应用与其他两个浏览器相同的规则。
快速叠加3种不同的效果图证明,除了文本渲染和宽度外,没有任何区别:
你真的做过图形测试吗? 只是盲目信任这些工具可能会产生误导。
链接地址: http://www.djcxy.com/p/75577.html