0

我需要在 x 和 y 轴上都有一个滚动表。

我通过使用 jQuery 将现有的表头克隆到一个新表中来实现这一点。

我在这里嘲笑了这个问题:

http://jsfiddle.net/PaQne/1/

在 IE7 中,即使 CSS 相同,克隆的 thead 单元格的边框也不与父 thbody 单元格对齐。

有解决办法吗?

我明白这不是最佳实践,IE7 是一个垂死的浏览器,但它是客户端的要求。

4

1 回答 1

2

删除此规则:

.grid-cntr .data-grid thead {
    display: none;
}

使边界对齐。但显然你也想在 IE7 上隐藏标题,所以让我们使用一个 hack!

.grid-cntr .data-grid thead {
    display: none;
    *display:block; /* target IE7 and below only */
}

然后,添加此规则:

.grid-cntr .data-grid {
    *margin-top:-32px;
}

工作演示

否则,如果你想保持你的代码“干净”,你可以使用条件注释

将此代码添加到您的 head 部分,普通 css 之后:

<!--[if lte IE 8]>
<style>
.grid-cntr .data-grid thead { display:block; }
grid-cntr .data-grid { margin-top:-32px; }
</style>
<![endif]-->

无论如何,您正在使用:first-child:last-child选择器,但请检查此兼容性表

  1. last-child根本无法在 IE7 和 8上运行
  2. first-child仅适用于静态元素,不适用于生成的内容

如果您需要与 IE7+ 完全兼容,请尝试使用类。

还有ie9.js,它对旧 IE 版本上的 CSS3 选择器做得很好。


那么你有这个规则:

.data-grid td:first-child {
    border-width: 1px 0 0 0;
}

你知道这条规则会覆盖最后一行吗?

.data-grid tr:last-child td {
    border-width: 1px 1px 0 1px;
}

也许你想使用

.data-grid td:first-child {
    border-width: 1px 0 0 0 !important;
}
于 2012-09-26T14:27:51.520 回答