0

我有 2 个具有相同行数的表并排保存,以实现固定第一列(左侧第一个表)和可水平滚动的其余列(右侧第二个表)的要求。在加载时,根据这些表格行高中的内容 [label、image、textArea & etc] 大小正在调整为左右对齐。

这是通过将行的更高值 offsetHeight 与同一表行和其他表行的 style.height 进行比较和分配来实现的。

for (x.rows) {
    if(x.rows[i].offsetHeight > y.rows[i].offsetHeight) {
        y.rows[i].style.height = x.rows[i].offsetHeight;
    }
}

这在 IE6 到 IE10 中工作了很多年,在 IE11 中我们开始看到未对齐问题。我仍然没有转向标准投诉[仍然 IE8 兼容性]。

进一步的研究和以下类似表明的 offsetHeight 计算会有所不同。 https://msdn.microsoft.com/en-us/library/ms534199(v=vs.85).aspx

所以我必须将代码更改为下面并在我的本地机器 IE11/Windows 8 中修复问题。x.rows[i].style.height = y.rows[i].style.height = x.rows[i]。偏移高度;

但是,VDI [虚拟桌面基础架构] 机器 IE11 中仍然存在问题。我打算尝试使用 clientHeight 而不是 offsetHeight。我还需要尝试/寻找什么来解决这个问题?

注意:上面的代码只是解释问题的示例,在实际查找和分配行的高度时,将其分离到不同的循环中,以避免回流(提高响应时间)。

4

1 回答 1

0

我已经解决了这个问题。问题仅出现在 Win 7 SP1 / 与 IE11 - 11.0.9600.17959 或更低次要版本的组合中。问题是 x 表布局固定在末尾(循环外),但 Y 不是。因此添加了代码来修复 y 布局并对齐。还分配了第一个 TD/cell 高度而不是 TR/row。

这是工作代码:

for (x.rows) {
if(x.rows[i].offsetHeight > y.rows[i].offsetHeight) {
    y.rows[i].cells[0].style.height = heights[i];
    x.rows[i].cells[0].style.height = heights[i]
}
}
y.style.tableLayout = "fixed";
x.rows[0].cells[0].style.width = x.rows[0].cells[0].clientWidth;
x.style.tableLayout = "fixed";
于 2015-12-11T16:56:42.467 回答