<td>
元素的宽度。在Firefox 4中结果是我所期望的,但在IE9 / Safari 5中,我得到的结果少了1像素。这让我疯狂。更新: 我的最终目标是从ROWS表中获取单元格的宽度,并将其应用于HEADER表的单元格,以便每个表的单元格都能完美对齐。让这个适用于所有浏览器是我的问题。 这是一个简单的示例: http://jsfiddle.net/XwNEj/16/ 只在Firefox 4中有效。我非常感谢在所有现代浏览器上让它工作的任何帮助。
<td>
元素的宽度。在Firefox 4中结果是我所期望的,但在IE9 / Safari 5中,我得到的结果少了1像素。这让我疯狂。202 = 200px + 1px + 1px
(对于边框),对吗? - c-smile我不会说这是错误的,更多的是表格单元格与div不具有相同的盒模型。您可以通过尝试以下操作来了解此问题:
.outerWidth()
并与.width()
进行比较th,td
添加display:block;
到您的CSS中,并将其与默认表格单元格呈现的宽度进行比较。我想你会明白我的意思。这也在http://blog.anofsinger.com/2008/03/table-cell-box-model.html中有所记录。
如果您在此处查看示例http://codepen.io/morewry/pen/pqGhv,我的意图是展示表格单元格的内部宽度与div
的内部宽度不同,即使两者都设置为width:200px
。
然而,尽管它可能不是您所期望的宽度,并且在每个浏览器中宽度可能会有所不同,但单元格应该在每个浏览器中保持一致。
(至少我是这样期望的。)我期望如下:
th
,只要它具有相同的边框和填充宽度,它将以与td
相同的宽度呈现。但是今天再次查看示例后,我发现使用JavaScript自动将每个th
的宽度设置为与其对应的td
相同,或者使用CSS将两者都设置为相同的宽度,有时在同一浏览器中th
的宽度会与td
不同。(我对此有一些难以言喻的想法,但可以说当出现(和消失)这种差异时,这确实很有趣。我比较了设置width
与min-width
与给整个表格设置width:100%
等方法。)
我理解你的目标是固定表头。为此,我认为最好像Mike所示,将所有内容放在一个表格中,使用和。如果使用两个不同的表格,则会破坏“语义”-th
除了视觉上没有与td
任何关系。
display:table-cell;
替换为 display:block;
?目的是什么? - c-smile看起来除了进行浏览器测试,可能没有其他修复方法:
将非Mozilla浏览器的宽度增加1像素似乎可以解决问题。 if(!$.browser.mozilla) { w++; }
我对这种修复方法并不满意,但还没有看到更好的解决方案。希望浏览器能尽快达成关于如何测量表格单元格的共识。
更好的解决方案是为什么CSS不支持固定表头表格的概念?!