我有一堆绝对定位的元素通过javascript生成到一个div中。每个元素的位置在垂直方向上相差 2px。然而,IE 每 3 个元素添加一个额外的垂直像素,然后每 2 个元素添加一个,然后每 3 个元素返回。
等等,一张图片解释了它:
我把后面的行为块涂成红色,正确的涂成绿色。Chrome 正确呈现它(Firefox 也是如此):
当我使用 IE 开发者工具时,我可以看到 CSS 设置正确:
我试过添加zoom:1
元素,但这似乎没有什么区别。
添加元素的代码是这样的:
var element = document.createElement("a");
element.style.fontSize = "6pt";
element.style.width = "20px";
element.style.height = "20px";
element.style.position = "absolute";
element.style.backgroundColor = "red";
element.style.zoom = "1";
element.style.display = "block";
var tofs = (columns * 2 + r * 20 - (c * 2));
var lofs = (c * 14 + (r + offset) * 9);
trace(c + "," + r + ": " + lofs + "," + tofs);
element.style.top = tofs + "px";
element.style.left = lofs + "px";
element.style.textIndent = "-10000px";
element.style.overflow = "hidden";
element.innerText = t;
element.selectable = "no";
setBackgroundForSeat(t, element);
target.append(element);
当检测到 IE 时,我尝试每 3 个然后 2 个元素调整偏移量,但这不起作用:与下一个元素的实际视觉差异变为1px
而不是所需的2px
(没有 hack 的地方3px
)。
我已经没有想法了。有人吗?
更新:这是一个描述行为的 JS fiddle。http://jsfiddle.net/uGHDh/5/