2010-11-20 161 views
0

我們都知道的解決方案,從視口頂部滾動到一個位置:有沒有辦法,從底部滾動類似於scrollTop?

$("html, body").animate({scrollTop:240}, 'fast'); 

有沒有辦法來滾動類似scrollTop的,剛剛從視口的底部?

我想要做的事情:在點擊事件時,頁面應該滾動到正文中任何位置的div,當div到達視口底部時,應該停止滾動,完全可見。那可能嗎?

回答

2

您需要使用的.offset().top組合,這是從頂部位置的元素的該文檔,$(window).height(),這是視口的高度:

var b = $('myEle'); 
$('html').animate({scrollTop: b.offset().top - $(window).height() + b.outerHeight()}); 

滾動到經常使用.offset().top位置將獲得移動到屏幕的頂部塊,所以我們只需減去視口的高度並添加對象的高度以使其移動到用戶視口底部的位置。

看到一個簡單的演示在這裏:http://www.jsfiddle.net/yijiang/Xkj9s/

+0

非常感謝,這正是我正在尋找的! – Thomas 2010-11-20 18:27:01

1

有一個scrollHeight屬性,告訴你,你可以滾動的數量。所以,如果你想從底部盤240像素,使用scrollHeight - 240,例如:

var elem = $('html'); 
elem.animate({ scrollTop: elem[0].scrollHeight - 240 }, 'fast'); 

Example on JSBin

+0

這個方案並沒有爲我工作。該頁面每次都滾動到底部。當我使用更大的數量,例如 - 1140(900是頁面高度+ 240)時,它可以工作,但當我想要回滾時遇到麻煩。奇怪。 – Thomas 2010-11-20 18:44:49

+0

@Thomasz:這是因爲'scrollHeight'沒有考慮窗口高度,如果你想相對於窗口滾動,你需要減去這個值。 – casablanca 2010-11-20 19:03:54

相關問題