Відповіді:
Якщо ви хочете приємно повільно прокрутити анімацію, будь-який якір із href="#bottom"
цим прокрутить вас донизу:
$("a[href='#bottom']").click(function() {
$("html, body").animate({ scrollTop: $(document).height() }, "slow");
return false;
});
Не соромтеся змінити селектор.
scrollTop () повертає кількість пікселів, які приховані від перегляду з області прокрутки, таким чином надаючи:
$(document).height()
насправді перевернеться внизу сторінки. Щоб прокрутка фактично "зупинилася" внизу сторінки, потрібно відняти поточну висоту вікна браузера. Це дозволить використати послаблення, якщо потрібно, то це стане:
$('html, body').animate({
scrollTop: $(document).height()-$(window).height()},
1400,
"easeOutQuint"
);
easeOutQuint
потрібен плагін, сам jQuery має linear
і swing
.
<!DOCTYPE html>
Chrome, Chrome поверне таке саме значення для вікна та висоти документа, і в цьому випадку $(document).height()-$(window).height()
завжди буде повертати 0. Дивіться тут: stackoverflow.com/questions/12103208/…
Наприклад:
$('html, body').scrollTop($(document).height());
Після того, як ця тема не вийшла для мене для моєї конкретної потреби (прокручування певного елемента, в моєму випадку текстовий пояс), я виявив це в цілому, що може виявитися корисним для когось іншого, читаючи цю дискусію:
Оскільки у мене вже була кешована версія мого об’єкта jQuery ( myPanel
у наведеному нижче коді - об’єкт jQuery), код, який я додав до свого обробника подій, був просто таким:
myPanel.scrollTop(myPanel[0].scrollHeight - myPanel.height());
(дякую Бену)
var d = $('#mydiv'); d.scrollTop (d[0].scrollHeight - d.height ());
Проста функція, яка стрибає (миттєво прокручує) внизу всієї сторінки. Він використовує вбудований .scrollTop()
. Я не намагався адаптувати це до роботи з окремими елементами сторінки.
function jumpToPageBottom() {
$('html, body').scrollTop( $(document).height() - $(window).height() );
}
$(document).scrollTop($(document).height());
Цей працював на мене:
var elem = $('#box');
if (elem[0].scrollHeight - elem.scrollTop() == elem.outerHeight()) {
// We're at the bottom.
}
Якщо ви не переймаєтесь анімацією, то вам не доведеться отримувати висоту елемента. Принаймні, у всіх браузерах, які я намагався, якщо ви дасте scrollTop
число, яке перевищує максимальне, воно просто прокрутить донизу. Тож дайте це якомога більше:
$(myScrollingElement).scrollTop(Number.MAX_SAFE_INTEGER);
Якщо ви хочете прокрутити сторінку, а не якийсь елемент із смугою прокрутки, просто зробіть myScrollingElement
рівним 'body, html'.
Оскільки мені потрібно зробити це в декількох місцях, я написав швидку і брудну функцію jQuery, щоб зробити її зручнішою, як це:
(function($) {
$.fn.scrollToBottom = function() {
return this.each(function (i, element) {
$(element).scrollTop(Number.MAX_SAFE_INTEGER);
});
};
}(jQuery));
Тож я можу це зробити, коли додаю речі з бунчо:
$(myScrollingElement).append(lotsOfHtml).scrollToBottom();
Сценарії, згадані в попередніх відповідях, такі:
$("body, html").animate({
scrollTop: $(document).height()
}, 400)
або
$(window).scrollTop($(document).height());
не працюватиме в Chrome і буде скакати в Safari у випадку, якщо html
тег у CSS встановлений overflow: auto;
властивістю. На це мені знадобилося майже годину.
$('.block').scrollTop($('.block')[0].scrollHeight);
Я використовую цей код для прокрутки чату, коли надходять нові повідомлення.