jquery: $(окно).scrollTop() а не $(окно).scrollBottom()
Я хочу, чтобы разместить элемент в нижней части страницы, когда пользователь прокручивает страницу. Это похоже на" фиксированную позицию", но я не могу использовать" position: fixed " css, поскольку многие из браузеров моих клиентов не могут это поддерживать.
Я заметил, что jquery может получить верхнюю позицию текущего окна просмотра, но как я могу получить нижнюю часть окна просмотра прокрутки?
поэтому я спрашиваю, Как узнать: $(окно).scrollBottom ()
8 ответов:
Я бы сказал, что scrollBottom как прямая противоположность scrollTop должен быть:
var scrollBottom = $(document).height() - $(window).height() - $(window).scrollTop();вот небольшой уродливый тест, который работает для меня:
// 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 //
в будущем я сделал scrollBottom в плагин jquery, который можно использовать так же, как scrollTop (т. е. вы можете установить номер, и он будет прокручивать эту сумму снизу страницы и возвращать количество пикселей снизу страницы или возвращать количество пикселей снизу страницы, если номер не указан)
$.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);
var scrollBottom = $(document).height() - $(window).height() - $(window).scrollTop();Я думаю, что лучше получить нижнюю прокрутку.
это будет прокручиваться до самого верха:
$(window).animate({scrollTop: 0});это будет прокручиваться до самого низа:
$(window).animate({scrollTop: $(document).height() + $(window).height()});.. при необходимости измените окно на нужный идентификатор контейнера или класс (в кавычках).
вот лучший вариант прокрутки вниз для таблицы сетки, это будет прокрутка до последней строки таблицы сетки:
$('.add-row-btn').click(function () { var tempheight = $('#PtsGrid > table').height(); $('#PtsGrid').animate({ scrollTop: tempheight //scrollTop: $(".scroll-bottom").offset().top }, 'slow'); });
// 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; });
Это быстрый Хак: просто назначьте значение прокрутки на очень большое число. Это будет гарантировать, что страница прокручивается до самого низа. Использование простого javascript:
document.body.scrollTop = 100000;
Comments