jQuery Scroll Đến cuối trang


196

Sau khi tải trang của tôi. Tôi muốn jQUery cuộn độc đáo xuống cuối trang, hoạt hình nhanh chóng, không phải là một snap / jolt.

Tôi có cần một plugin như thế ScrollTokhông? hoặc được xây dựng trong jQuery một số cách?

Câu trả lời:


416

Bạn chỉ có thể làm động để cuộn trang xuống bằng cách tạo hiệu ứng thuộc scrollToptính, không yêu cầu plugin, như thế này:

$(window).load(function() {
  $("html, body").animate({ scrollTop: $(document).height() }, 1000);
});

Lưu ý việc sử dụng window.onload(khi hình ảnh được tải ... chiếm chiều cao) chứ không phải document.ready.

Để chính xác về mặt kỹ thuật, bạn cần trừ chiều cao của cửa sổ, nhưng các công việc trên:

$("html, body").animate({ scrollTop: $(document).height()-$(window).height() });

Để cuộn đến một ID cụ thể, sử dụng nó .scrollTop(), như thế này:

$("html, body").animate({ scrollTop: $("#myID").scrollTop() }, 1000);

2
Một vấn đề khác, là khi nó dường như đã được thực hiện, và sau đó người dùng cố gắng kiểm tra, một chút, nó bị khóa và tạo ra một hiệu ứng rất
tưng bừng

1
@AnApprentice - Đó là vì nó xảy ra nhanh chóng (400ms theo mặc định), tôi khuyên bạn chỉ nên cuộn nhanh để giảm bớt vấn đề đó.
Nick Craver

3
Khóa là vì khoảng cách đã tắt. Đó là hoạt hình qua hoạt hình có thể nhìn thấy.
Josiah Ruddell

27
@NickCraver - với phiên bản mới nhất của jQuery .scrollTop () dường như không hoạt động để cuộn đến một ID cụ thể; với .offset (). top nên hoạt động: $("html, body").animate({ scrollTop: $("#myID").offset().top }, 1000);
Paolo Gibellini

3
Câu trả lời này cần được chỉnh sửa. $(document).height()là quá lớn của một giá trị cho scrollToptài sản, bạn có thể nhận thấy rằng bằng cách nới lỏng. Tôi nghĩ $(document).height() - window.innerHeightnên ổn thôi.
silvenon

22

đại loại như thế này:

var $target = $('html,body'); 
$target.animate({scrollTop: $target.height()}, 1000);

Tôi đã thử cập nhật mục tiêu thành .write-comment và nó không hoạt động. Có lẽ bởi vì điều đó đã được đưa vào trang?
AnApprentice

16
$('html,body').animate({ scrollTop: 9999 }, 'slow');

Đơn giản như thế này, chiều cao trang 9999 ... phạm vi lớn để nó có thể chạm tới đáy.


1
Điều này không hoàn hảo, vì trong một số trường hợp, ngay cả khi hiếm, có thể có các trang dài hơn thế, các trang đặc biệt tải nội dung không giới hạn một cách linh hoạt. Điều này sẽ dừng cuộn giữa chừng.
Akhil Gupta

13

Bạn có thể thử cái này

var scroll=$('#scroll');
scroll.animate({scrollTop: scroll.prop("scrollHeight")});

10
$("div").scrollTop(1000);

Làm việc cho tôi. Cuộn xuống phía dưới.


13
Không, nếu trang của bạn dài hơn 1000px.
Volomike

4

Các kịch bản được đề cập trong các câu trả lời trước, như:

$("body, html").animate({
    scrollTop: $(document).height()
}, 400)

sẽ không hoạt động trong Chrome và sẽ tăng vọt trong Safari trong trường hợp html thẻ trong CSSoverflow: auto;bộ thuộc tính. Tôi mất gần một giờ để tìm ra.


3

Sử dụng 'document.body.clientHeight', bạn có thể nhận được chiều cao nhìn thấy của các yếu tố cơ thể

$('html, body').animate({
    scrollTop: $("#particularDivision").offset().top - document.body.clientHeight + $("#particularDivision").height()
}, 1000);

cuộn này ở id 'đặc biệt phân chia'


1

Đối với jQuery 3, vui lòng thay đổi

$ (window) .load (function () {$ ("html, body"). animate ({scrollTop: $ (document) .height ()}, 1000);})

đến:

$ (window) .on ("load", function (e) {$ ("html, body"). animate ({scrollTop: $ (document) .height ()}, 1000);})


1
function scrollToBottom() {
     $("#mContainer").animate({ scrollTop: $("#mContainer")[0].scrollHeight }, 1000);
}

Đây là giải pháp hoạt động từ tôi và bạn thấy, tôi chắc chắn


0

js

var el = document.getElementById("el");
el.scrollTop = el.scrollHeight - el.scrollTop;

Mặc dù mã này có thể giúp giải quyết vấn đề, nhưng nó không giải thích được tại sao và / hoặc cách nó trả lời câu hỏi. Cung cấp bối cảnh bổ sung này sẽ cải thiện đáng kể giá trị giáo dục lâu dài của nó. Vui lòng chỉnh sửa câu trả lời của bạn để thêm giải thích, bao gồm những hạn chế và giả định được áp dụng.
Toby Speight

0
$('#pagedwn').bind("click", function () {
        $('html, body').animate({ scrollTop:3031 },"fast");
        return false;
});

Giải pháp này đã làm việc cho tôi. Nó đang hoạt động trong Page Scroll Down nhanh chóng.


0
var pixelFromTop = 500;     
$('html, body').animate({ scrollTop: pixelFromTop  }, 1);

Vì vậy, khi mở trang, nó sẽ tự động cuộn xuống sau 1 triệu giây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.