2012-02-14 151 views
1

我似乎無法滾動到設置變量,我使用正確的語法?scrollTop不滾動到位置

var offset = $(".box", this).offset().top; 
$(window).animate({scrollTop:offset}, 500); 

回答

1

您不能滾動window。你不能動畫滾動窗口(感謝加藤)。試試這個:

var offset = $(".box", this).offset().top; 
$("html,body").animate({scrollTop:offset}, 500); 
+0

$(window).scrollTop()[works fine](http://jsfiddle.net/katowulf/w43T6/)。你的意思是說你不能動畫滾動窗口嗎? – Kato 2012-02-14 16:24:09

+0

@Kato:我糾正了。是的,我的意思是說你不能動畫滾動窗口。固定。 ;) – 2012-02-14 16:59:57

+0

很高興知道,因爲我從來沒有嘗試過動畫方法。我喜歡html,body解決方案(它在真正的瀏覽器中是否有兩次動畫效果?是否值得做一些瀏覽器嗅探以避免雙重調用?) – Kato 2012-02-14 17:22:32

1

以下內容適用於IE瀏覽器和其他瀏覽器。

$('body,html').animate({scrollTop: offset}, 500); 
0

offset()。top是相對於文檔的距離。所以如果文檔已經全部滾動,動畫就不準確了。 ({body})。animate({scrollTop:offset + $(「body」)。scrollTop()},500);

+0

不,jQuery offset()是相對於文件,無論滾動位置如何。 – 2012-02-14 16:06:39

+0

就你而言,這是一回事。偏移+ scrolltop ===位置。但位置更清潔:-) – terjeto 2012-02-15 09:32:33

1

我最終不得不使用位置(),而不是偏移

var offset = item.position().top; 
$("html, body").animate({scrollTop:offset}, 500); 

並通過評論閱讀,建議的文檔最好是使用$(「HTML,身體」)爲跨瀏覽器