jQuery เลื่อนไปที่ด้านล่างของหน้า


198

หลังจากโหลดหน้าเสร็จแล้ว ฉันต้องการ jQuery เพื่อเลื่อนไปที่ด้านล่างของหน้าเคลื่อนไหวอย่างรวดเร็วไม่ใช่ snap / jolt

ฉันจำเป็นต้องมีโปรแกรมเสริมScrollToหรือไม่? หรือว่าสร้างขึ้นใน jQuery อย่างไร?

คำตอบ:


418

คุณสามารถเคลื่อนไหวเพื่อเลื่อนหน้าลงโดยการเคลื่อนไหวscrollTopคุณสมบัติโดยไม่ต้องใช้ปลั๊กอินเช่นนี้:

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

หมายเหตุการใช้งานwindow.onload(เมื่อมีการโหลดภาพ ... ซึ่งครอบครองสูง) document.readyมากกว่า

เพื่อให้ถูกต้องทางเทคนิคคุณต้องลบความสูงของหน้าต่าง แต่งานด้านบน:

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

หากต้องการเลื่อนไปยัง ID ที่เฉพาะเจาะจงให้ใช้งาน.scrollTop()เช่นนี้:

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

2
อีกปัญหาคือเมื่อดูเหมือนว่าเสร็จแล้วผู้ใช้พยายามที่จะ scoll ขึ้นนิดหน่อยมันถูกล็อคและทำให้เกิดผลกระทบมากการป้องกันผู้ใช้จากการเลื่อนขึ้น
AnApprentice

1
@AnApprentice - นั่นเป็นเพราะมันเกิดขึ้นอย่างรวดเร็ว (400ms โดยค่าเริ่มต้น) ฉันขอแนะนำเพียงแค่เลื่อนอย่างรวดเร็วเพื่อบรรเทาปัญหานั้น
Nick Craver

3
ล็อคเป็นเพราะระยะทางถูกปิด มันเคลื่อนไหวผ่านภาพเคลื่อนไหวที่มองเห็นได้
Josiah Ruddell

28
@NickCraver - ด้วย jQuery .scrollTop รุ่นล่าสุด () ดูเหมือนว่าจะไม่ทำงานเพื่อเลื่อนไปยัง ID เฉพาะ ด้วย. offset (). top ควรทำงาน: $("html, body").animate({ scrollTop: $("#myID").offset().top }, 1000);
Paolo Gibellini

3
คำตอบนี้จะต้องแก้ไข $(document).height()มีค่ามากเกินไปสำหรับscrollTopสถานที่ให้บริการคุณสามารถสังเกตเห็นว่าโดยการผ่อนคลาย ฉันคิดว่า$(document).height() - window.innerHeightควรจะโอเค
silvenon

23

บางสิ่งเช่นนี้

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

ฉันพยายามอัปเดตเป้าหมายเป็น. เขียนความคิดเห็นและไม่ได้ผล อาจเป็นเพราะนั่นคือการถูกฉีดเข้าไปในหน้า?
AnApprentice

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

เรียบง่ายเช่นนี้ความสูงของหน้า 9999 ... ช่วงใหญ่จึงสามารถเข้าถึงด้านล่าง


1
สิ่งนี้ไม่สมบูรณ์แบบในบางกรณีแม้ว่าจะมีน้อย แต่อาจมีหน้าเว็บนานกว่านั้นโดยเฉพาะหน้าเว็บที่โหลดเนื้อหาไม่ จำกัด แบบไดนามิก สิ่งนี้จะหยุดการเลื่อนกลางทาง
Akhil Gupta


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

ได้ผลสำหรับฉัน เลื่อนไปที่ด้านล่าง


13
ไม่ใช่ถ้าหน้าของคุณยาวเกิน 1,000px
Volomike

4

สคริปต์ที่กล่าวถึงในคำตอบก่อนหน้าเช่น:

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

จะไม่ทำงานในChromeและจะน่ากลัวในSafari ในกรณีที่ htmlแท็กในCSSมีoverflow: auto;ชุดคุณสมบัติ ฉันใช้เวลาคิดประมาณหนึ่งชั่วโมง


3

การใช้ 'document.body.clientHeight' คุณจะเห็นความสูงขององค์ประกอบร่างกาย

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

เลื่อนนี้ที่ id 'specificDivision'


1

สำหรับ jQuery 3 โปรดเปลี่ยน

$ (หน้าต่าง) .load (ฟังก์ชั่น () {$ ("html, body"). animate ({scrollTop: $ (เอกสาร) .height ()}, 1000);})

ถึง:

$ (หน้าต่าง) .on ("โหลด", ฟังก์ชัน (e) {$ ("html, body"). เคลื่อนไหว ({scrollTop: $ (เอกสาร) .height ()}, 1000);})


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

นี่เป็นวิธีแก้ปัญหาที่ได้ผลจากฉันและคุณจะพบฉันแน่ใจ


0

js

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

แม้ว่ารหัสนี้อาจช่วยในการแก้ปัญหา แต่ก็ไม่ได้อธิบายว่าทำไมและ / หรือวิธีการตอบคำถาม การให้บริบทเพิ่มเติมนี้จะช่วยเพิ่มมูลค่าทางการศึกษาในระยะยาวอย่างมีนัยสำคัญ โปรดแก้ไขคำตอบของคุณเพื่อเพิ่มคำอธิบายรวมถึงข้อ จำกัด และข้อสมมติฐานที่ใช้
Toby Speight

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

วิธีนี้ใช้ได้ผลสำหรับฉัน มันทำงานใน Page Scroll Down อย่างรวดเร็ว


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

ดังนั้นเมื่อเปิดหน้ามันจะเลื่อนลงโดยอัตโนมัติหลังจาก 1 เสี้ยววินาที

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.