Jak używać jquery do przewijania w dół do dolnej części ramki iframe lub strony?
224
Jeśli chcesz ładnego powolnego przewijania animacji, każda kotwica z href="#bottom"
tym przewinie Cię do dołu:
$("a[href='#bottom']").click(function() {
$("html, body").animate({ scrollTop: $(document).height() }, "slow");
return false;
});
Zmień selektor.
scrollTop () zwraca liczbę pikseli, które są ukryte przed widokiem z przewijanego obszaru, co daje mu:
spowoduje przekroczenie dolnej części strony. Aby przewijanie faktycznie „zatrzymało się” u dołu strony, bieżąca wysokość okna przeglądarki wymaga odjęcia. Pozwoli to na użycie poluzowania, jeśli jest to wymagane, więc staje się:
źródło
easeOutQuint
wymaga wtyczki, sam jQuery ma tylkolinear
iswing
.<!DOCTYPE html>
w Chrome, Chrome zwróci dokładnie tę samą wartość dla wysokości okna i dokumentu, w którym to przypadku$(document).height()-$(window).height()
zawsze zwróci 0. Zobacz tutaj: stackoverflow.com/questions/12103208/...Na przykład:
źródło
Po tym, jak ten wątek nie zadziałał na moją konkretną potrzebę (przewijanie w obrębie konkretnego elementu, w moim przypadku w obszarze tekstowym), znalazłem to w dalszej części, co może okazać się pomocne dla kogoś, kto czyta tę dyskusję:
Alternatywa na planetcloud
Ponieważ miałem już buforowaną wersję mojego obiektu jQuery (
myPanel
w poniższym kodzie jest obiekt jQuery), kod dodany do mojej procedury obsługi zdarzeń był następujący:(dzięki Ben)
źródło
var d = $('#mydiv'); d.scrollTop (d[0].scrollHeight - d.height ());
Prosta funkcja, która przeskakuje (natychmiast przewija) na dół całej strony. Korzysta z wbudowanego
.scrollTop()
. Nie próbowałem dostosowywać tego do pracy z poszczególnymi elementami strony.źródło
$(document).scrollTop($(document).height());
Ten działał dla mnie:
źródło
Jeśli nie zależy ci na animacji, nie musisz uzyskać wysokości elementu. Przynajmniej we wszystkich przeglądarkach, których wypróbowałem, jeśli podasz
scrollTop
liczbę większą niż maksymalna, po prostu przewinie się do dołu. Podaj więc jak największą liczbę:Jeśli chcesz przewijać stronę, a nie jakiś element z paskiem przewijania, po prostu
myScrollingElement
zrównaj z „body, html”.Ponieważ muszę to zrobić w kilku miejscach, napisałem szybką i brudną funkcję jQuery, aby była wygodniejsza, na przykład:
Mogę to zrobić, dodając kilka rzeczy:
źródło
Skrypty wymienione w poprzednich odpowiedziach, takie jak:
lub
$(window).scrollTop($(document).height());
nie będzie działać w Chrome i będzie wzburzony w Safari w przypadku, gdy
html
tag w CSS maoverflow: auto;
ustawioną właściwość. Zrozumienie zajęło mi prawie godzinę.źródło
Używam tego kodu do przewijania czatu, gdy nadchodzą nowe wiadomości.
źródło