2010-11-20 3 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

1

Там в scrollHeight свойство, которое говорит вам сумму, которую можно прокручивать. Так что если вы хотите прокрутки 240 точек со дна, используйте scrollHeight - 240, например:

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

Example on JSBin

+0

Это решение не работает для меня. Эта страница каждый раз прокручивается вниз. Когда я использую большее количество, например, 1140 (900 - высота страницы + 240), он работает, но с проблемами, когда я хочу прокрутить назад. Странный. – Thomas

+0

@Thomasz: Это потому, что 'scrollHeight' не учитывает высоту окна, вам нужно вычесть это, если вы хотите прокрутить относительно окна. – casablanca

Смежные вопросы