【发布时间】:2011-05-17 18:02:53
【问题描述】:
有什么方法可以同时设置 div 的 scrollLeft 和 scrollTop 吗?在 Chrome、Safari 和 Opera 中,它可以通过按顺序设置它们立即工作,但在 Firefox(早于 4)和 IE(甚至在 IE9 中!)设置其中一个会导致重排,从而导致丑陋的故障,因为页面将首先向左然后向下移动,像楼梯一样。
我看到那个窗口有一个叫scrollTo(x,y)的方法,有没有普通div的等效方法?
或者,是否可以更改浏览器的行为,以便仅在更改滚动时不会触发重排。我发现的一个消息来源说,只有当我在 div 上注册了 onscroll-event 但我没有任何事件时才会发生这种情况,所以这不会是问题。
【问题讨论】:
-
您可以将焦点设置在该位置的某个元素上,而不是设置 scrollLeft 和 scrollTop - 这样的元素也可以动态创建。
-
@mercator,这是一个完全不同的问题。 “left”和“width”也有同样的问题:我的动画有时看起来很跳跃,因为我需要同时设置这两个属性,或者至少在两者之间没有重排。
-
好像确实和这个问题一样,一两周前才问过:stackoverflow.com/questions/4207505/…
-
@harpo,嗯,你是对的。我认为这个问题的答案会非常相似,但我可能被
return false甩了。我认为滚动事件是可以取消的。 -
如果你这样做会发生什么: var left=20;变量顶部=100; elem.scrollTop = (elem.scrollLeft = left) - left + top;
标签: javascript html css