ฉันจะกำหนดความสูงและตำแหน่งการเลื่อนของหน้าต่างใน jQuery ได้อย่างไร


179

ฉันต้องการคว้าความสูงของหน้าต่างและการเลื่อนออฟเซ็ตใน jQuery แต่ฉันไม่มีโชคในการค้นหาสิ่งนี้ใน jQuery docs หรือ Google

ฉันแน่ใจว่า 90% มีวิธีการเข้าถึงความสูงและ scrollTop สำหรับองค์ประกอบ (สมมุติรวมถึงหน้าต่าง) แต่ฉันไม่พบการอ้างอิงที่เฉพาะเจาะจง


2
แล้วถ้าไม่มี jQuery ล่ะ
Costa

@Costa ที่น่าจะถูกถามจากที่อื่นใน StackOverflow และถ้าไม่ใช่มันก็สมควรที่จะเป็นคำถามของตัวเอง
วัน Crayon

คำตอบ:


296

จาก jQuery Docs:

const height = $(window).height();
const scrollTop = $(window).scrollTop();

http://api.jquery.com/scrollTop/
http://api.jquery.com/height/


1
ตัวเลขที่ฉันเพิ่งพลาดไปในเอกสาร ค้นหาพวกเขา แต่องค์กรของพวกเขาตรงไปตรงมาทำให้รู้สึกไม่ถึงฉัน (ยังคงคิดใน Mootools ฉันคิดว่า) ขอบคุณ!
วัน Crayon

สิ่งนี้ไม่ทำงานในเบราว์เซอร์ใด ๆ สำหรับ jQuery 1.3.2 แม้ว่ามันจะถูกเพิ่มเข้ามาในเวอร์ชั่นก่อนหน้านี้ อาจเป็นเพราะฉันมีบางอย่างผิดปกติกับรหัสของฉันที่นี่
Philluminati

11
$ (หน้าต่าง) .height () ให้ความสูงวิวพอร์ตไม่ใช่ความสูงเลื่อน $ (เอกสาร) .height () ให้ความสูงการเลื่อนจริงตามที่ Aidamina แนะนำ
Jonathan

ฉันมักจะประหลาดใจที่จำนวน upvotes สิ่งที่เรียบง่ายเช่นดึงดูดนี้ แต่เนื่องจากฉันได้ดูสองครั้งในสัปดาห์นี้มี +1 อีก
Neil


8

เพียว JS

window.innerHeight
window.scrollY

เร็วกว่า jquery มากกว่า 10 เท่า (และรหัสมีขนาดใกล้เคียงกัน):

ป้อนคำอธิบายรูปภาพที่นี่

ที่นี่คุณสามารถทำการทดสอบบนเครื่องของคุณ: https://jsperf.com/window-height-width


window.scrollYรับส่วนสูงเลื่อน
xgqfrms

6
$(window).height()

$(window).width()

นอกจากนี้ยังมีปลั๊กอินสำหรับ jquery เพื่อกำหนดตำแหน่งขององค์ประกอบและออฟเซ็ต

http://plugins.jquery.com/project/dimensions

scrolling offset = offsetHeight คุณสมบัติขององค์ประกอบ


1
ขอบคุณโจเซฟ มันไม่ใช่สิ่งที่ฉันกำลังมองหาในขณะที่ฉันพยายามหลีกเลี่ยงการใช้ปลั๊กอินอื่น แต่คุณทำให้ฉันค้นหาในทิศทางที่ถูกต้อง ในตอนท้ายมันกลับกลายเป็นว่าสิ่งที่ฉันต้องการจริงๆคือ '$ (หน้าต่าง) .scrollTop ()' เพื่อหาว่าหน้าเว็บเลื่อนผ่านวิวพอร์ตไปเท่าใดเพื่อปรับองค์ประกอบให้เหมาะสม
ดา

0

หากคุณต้องการเลื่อนไปยังจุดขององค์ประกอบ คุณสามารถใช้ฟังก์ชั่น Jquery เพื่อเลื่อนขึ้น / ลง

$('html, body').animate({
                scrollTop: $("#div1").offset().top
            }, 'slow');
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.