Chcę umieścić element na dole strony za każdym razem, gdy użytkownik przewinie stronę. To jest jak „fixed position”, ale nie mogę użyć „position: fixed” css, ponieważ wiele przeglądarek moich klientów tego nie obsługuje.
Zauważyłem, że jQuery może uzyskać najwyższą pozycję bieżącej rzutni, ale jak mogę uzyskać dolną część rzutni przewijania?
Więc pytam skąd wiedzieć: $ (okno) .scrollBottom ()
javascript
jquery
Bin Chen
źródło
źródło
Top
to liczba pikseli w pionie od dokumentuTop
do widocznego oknaTop
. W przeciwieństwie do przewijaniaTop
, przewijanieBottom
powinno mierzyć liczbę pikseli w pionie od dokumentuBottom
do widocznego oknaBottom
(tj. Odpowiedź Alfreda poniżej). Co to daje to # pionowych pikseli z dokumentu_top_
do widocznego oknaBottom
. Jest to na pewno przydatne, choć nie można tego nazwać odwrotnie niż ScrollBottom (wiem, że to zaznaczona odpowiedź, ale dla przyszłych czytelników takich jak ja)Powiedziałbym, że scrollBottom jako bezpośrednie przeciwieństwo scrollTop powinno wyglądać następująco:
var scrollBottom = $(document).height() - $(window).height() - $(window).scrollTop();
Oto mały, brzydki test, który działa dla mnie:
// SCROLLTESTER START // $('<h1 id="st" style="position: fixed; right: 25px; bottom: 25px;"></h1>').insertAfter('body'); $(window).scroll(function () { var st = $(window).scrollTop(); var scrollBottom = $(document).height() - $(window).height() - $(window).scrollTop(); $('#st').replaceWith('<h1 id="st" style="position: fixed; right: 25px; bottom: 25px;">scrollTop: ' + st + '<br>scrollBottom: ' + scrollBottom + '</h1>'); }); // SCROLLTESTER END //
źródło
Na przyszłość zrobiłem scrollBottom we wtyczkę jquery, której można używać w ten sam sposób co scrollTop (tj. Możesz ustawić liczbę i przewinie tę ilość od dołu strony i zwróci liczbę pikseli od dołu strony lub zwróć liczbę pikseli od dołu strony, jeśli nie podano liczby)
$.fn.scrollBottom = function(scroll){ if(typeof scroll === 'number'){ window.scrollTo(0,$(document).height() - $(window).height() - scroll); return $(document).height() - $(window).height() - scroll; } else { return $(document).height() - $(window).height() - $(window).scrollTop(); } } //Basic Usage $(window).scrollBottom(500);
źródło
var scrollBottom = $(document).height() - $(window).height() - $(window).scrollTop();
Myślę, że lepiej jest mieć dolne przewijanie.
źródło
Spowoduje to przewinięcie na samą górę:
$(window).animate({scrollTop: 0});
Spowoduje to przewinięcie na sam dół:
$(window).animate({scrollTop: $(document).height() + $(window).height()});
.. w razie potrzeby zmień okno na żądany identyfikator lub klasę kontenera (w cudzysłowach).
źródło
overflow-y: auto
aby faktycznie przewijał się do końca tekstu (który wykracza poza wysokość elementu div)?scrollHeight
- patrz: stackoverflow.com/q/7381817Oto najlepsza opcja przewiń do dołu dla siatki tabeli, zostanie przewinięta do ostatniego wiersza siatki tabeli:
$('.add-row-btn').click(function () { var tempheight = $('#PtsGrid > table').height(); $('#PtsGrid').animate({ scrollTop: tempheight //scrollTop: $(".scroll-bottom").offset().top }, 'slow'); });
źródło
// Back to bottom button $(window).scroll(function () { var scrollBottom = $(this).scrollTop() + $(this).height(); var scrollTop = $(this).scrollTop(); var pageHeight = $('html, body').height();//Fixed if ($(this).scrollTop() > pageHeight - 700) { $('.back-to-bottom').fadeOut('slow'); } else { if ($(this).scrollTop() < 100) { $('.back-to-bottom').fadeOut('slow'); } else { $('.back-to-bottom').fadeIn('slow'); } } }); $('.back-to-bottom').click(function () { var pageHeight = $('html, body').height();//Fixed $('html, body').animate({ scrollTop: pageHeight }, 1500, 'easeInOutExpo'); return false; });
źródło
próbować:
$(window).scrollTop( $('body').height() );
źródło
var scrolltobottom = document.documentElement.scrollHeight - $(this).outerHeight() - $(this).scrollTop();
źródło
To szybki hack: po prostu przypisz wartość przewijania do bardzo dużej liczby. Zapewni to przewinięcie strony do dołu. Używając zwykłego javascript:
document.body.scrollTop = 100000;
źródło