jquery - 奇怪的表格布局 :fixed; "bug" on WebKit

标签 jquery css webkit css-tables

我正在根据自己的需要构建网格组件,其中包含可排序的列、行等。现有的组件要么不适合我的需要,要么太重。我刚开始使用可调整大小的列时,WebKit 确实出乎意料地给我带来了无法解释的异常现象。虽然 table-layout:fixed; 在所有其他浏览器(甚至 IE)上都能完美运行 Safari/Chrome 让我头疼。

这是我到目前为止写的:TSort Embriyo

如您所见,它创建了两个表 - 一个用于标题,一个用于正文以及它们周围的一些包装器。然后它尝试使用 table-layout:fixed,因为它更适合动态网格概念。对于 table-layout:fixed ,除了我所有的单元格 (td/th) 都有 overflow:hidden 之外,表格的宽度很重要, white-space:nowraptext-overflow:ellipsis 以更好地模拟网格外观。

现在 “错误” - 两个表格的构建方式相同,单元格和表格的宽度由相同的函数计算和设置。 “错误”是无法解释的,因为我使用的方法对顶层表按预期工作但对底部表失败。基本上它就像我没有分配宽度一样。但是您可以在 Web Inspector 中看到它确实具有宽度……所以……嗯?

我尝试了所有方法,我交换了函数,我删除了顶层表,我尝试以构建顶层表的方式构建底层表。但它一直在失败。但是,当我将生成的表格代码直接复制/粘贴到页面中时,它就开始工作了。所以我的猜测是它具有表的动态特性。但为什么它在顶层表上起作用呢?

我能够通过创建具有预分配宽度的表格元素来摆脱这个“错误”。但这并不能解释奇怪的行为,对吗?

最佳答案

我找到了一个修复 - 仍然不确定到底发生了什么。

移动:

self._addColElements(self.bd);

到您的construct 函数的底部(当然还有从populate 中删除它)。

您可能已经注意到在我的 previous test 中我添加了一个“数据”选项。我发现使用该数据从 _init 调用 populate 工作正常 - 除非我使用 setTimeout 来延迟调用 - 就像 ajax get 一样 - 并且然后它也扭曲了 table 。所以它与时间相关 - 也许 WebKit 正在做一些有趣的事情来优化渲染。

编辑

好吧,我有一个理论;)

当创建表格并在同一个函数中添加行时,css 将在函数调用结束时应用 - 此时 table-layout:fixed 项将仅应用如果表格有宽度。

如果创建了表格,并对其应用了 css(即因为控件已通过 ajax 或 setTimeout 等返回到浏览器),当它没有宽度时,则固定布局无效。随后添加元素甚至设置宽度 都不会导致重新评估 css。

关于jquery - 奇怪的表格布局 :fixed; "bug" on WebKit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3715325/

相关文章:

javascript - 使用javascript添加税率时如何显示售价?

javascript - 使用另一个元素的 x 和 y 偏移定位一个 div 元素

javascript - 无法弄清楚如何在 block 之间添加一点空间

css - jQuery UI 在 Bootstrap 之前加载,但仍然覆盖 Bootstrap 样式?

ios - UIWeb View iOS 5 : WebKit/JavaScriptCore crash

javascript - 如何在当前文档中加载DOM文档?

jquery - 如何为跨平台Web应用程序实现推送通知服务?

javascript - onBlur 事件覆盖 jQuery UI 事件

javascript - 无法访问 3d 立方体内部的对象

html - CSS 下拉菜单不适用于 IE 和 Chrome