在处理需要简单排序/过滤系统的大量表格数据列表时,我发现了 Isotope 库,它似乎完全符合我的要求,并提供了许多漂亮的视觉效果和功能。我希望能够使用 Isotope 对表行进行排序和过滤,并且我想出了一个似乎可以工作的基本演示。但是,存在一些错误:
- 我将 <thead> 部分用于过滤器和行标题,因此我将同位素选择器应用于 <tbody>。但是,当使用 tbody 作为容器初始化 Isotope 时,每行中的表格单元格将失去表格格式指定的宽度。这没什么大不了的,因为如果需要,我可以手动设置列宽,但在当前上下文中它相当烦人。
- 这些行被放置在表格之外,在表格容器元素的左上角。tbody 元素上的相对定位似乎不会像普通 div 那样影响行的绝对位置样式规则(由 Isotope 自动应用)。通常,如果容器使用绝对定位或相对定位定位,则绝对定位将相对于其容器元素,但这里的情况似乎并非如此。
表格行被正确过滤,同位素库正在正确应用动画和样式,但有这些例外。如果可能的话,我想继续使用表格,因为维护此页面的人员将通过 CMS 进行操作,并且对 HTML 或 CMS 用于始终生成任何 HTML 的 WYSIWYG 编辑器了解不足一个相当基本的表格之外的结构。有人对解决这两个问题有什么建议吗?谢谢!
编辑:作为附录,我已经解决了我最初遇到的问题。事实证明, tbody 元素不接受 position: relative 或 position: absolute 属性,因此表格行没有正确放置。将整个表格设置为 position: relative 解决了主要的放置问题,尽管这些行随后被移动到表格的左上角。我通过用Javascript中thead元素的高度偏移表格行顶部属性解决了这个问题,因为没有Javascript显示是正常的。
这在 Firefox、Chrome、Opera 和 Safari 中运行良好。但是,IE 7、8 和 9 都有渲染问题——更糟糕的是,它们都是不同的渲染问题。IE9 拒绝以正确的偏移量放置表格单元格,IE8 根本不显示行,而 IE7 似乎将整个情况解释为“爆炸!”。至少我遇到的主要问题解决了!