2010-09-23 68 views
1

我有以下工作代碼,使我的滾動框可見的元素:如何做一個平滑滾動?

var next = elements.item(i+1); 
var xpcomInterface = scroll.boxObject.QueryInterface(
Components.interfaces.nsIScrollBoxObject); 
xpcomInterface.ensureElementIsVisible(elements); 

但我想提出一個平滑滾動(緩慢或不能)。任何想法如何做到這一點?

更新

順便說一句,這是Mozilla的環境。

+0

你在關於xpcomInterface的評論中提到過,它是針對Mozilla的,所以這是針對Firefox的擴展? – 2010-09-24 15:27:01

+0

@Jame Black是爲XUL應用程序 – 2010-09-24 16:36:08

回答

0

最簡單的方法是僅使用setTimeout函數,並將元素的div上的topleft值繼續移動一小部分,直到找到想要的位置。

您可能想要試驗移動的速度有多快,因爲存在平滑的折衷,並且它應該在合理的時間內到達終點。

更新:

我忘了,你會想保持調用setTimeout直到到達最終目的地,否則它不會重繪瀏覽器窗口。

+0

會更容易,如果xpcomInterface有一個isVisible()方法..我正在尋找如何檢查它.. – 2010-09-24 13:01:36

+0

必須有一種方法來獲得按鈕[xy]內滾動框,然後使用超時滾動到[xy] .. – 2010-09-24 13:03:48

+0

是的,有一個scrollTo(x,y)方法= D 我會試試它.. – 2010-09-24 13:21:02

0

我不知道該怎麼做,但這裏有一個名爲「Smooth Scroll」的Chrome擴展,您可以在其中挑選代碼來查看它們的功能,也許可以幫助您找到正確的方向。

PS我喜歡這個擴展。

0

jQuery .animate()加速運動can be kind of smooth(請參閱演示動畫相對移動)。還有其他的緩解方程式可以使用。