请查看此fiddle。代码很重要。
我正在努力使两个DIVS坚持到顶部并留在动态更新的DIV内部。它正在工作,但在DIV内部正在发生闪烁。如何消除闪烁。
请帮我解决这个问题。
编写的代码用于修复:
colFix.style.left = (holder.scrollLeft - view.offsetLeft) + "px";
heaF.style.top = (holder.scrollTop - view.offsetTop) + "px";
答案 0 :(得分:7)
您看到的闪烁是因为您的元素被重新插入DOM。在这种情况下,特别是在IE10中,它们从底部到顶部闪烁,因为您使用.appendChild
,因此它会在页面底部呈现,然后在CSS应用后闪烁到顶部。
可以使用.insertBefore
:
view.insertBefore(colFix, view.firstChild);
这并不能完全解决问题,因为它会在每次重新插入时继续闪烁 - 现在就在顶部。
停止闪烁的一种方法是停止重新插入整个块,但保留一个已重新填充其内容的包装器。这可能仍会引起明显的跳跃,但我会留给您进行实验。
以下的实验,为了可能尝试回答的其他人而保留。上面提供了“如何消除闪烁”这一核心问题的答案 - 即停止不断重新插入布局元素。
这已将#col-fixed
和#head-fixed
更改为position: fixed;
,然后在javascript中我更改了appendChild的行,以便在第一个子项之前插入 - 这可能与{{1}之后没有任何关联已被应用。
position: fixed
我也评论说:
view.appendChild(heaF);
view.insertBefore(colFix, view.firstChild);
答案 1 :(得分:1)