มีวิธีการหาตำแหน่งที่แน่นอนขององค์ประกอบคือเมื่อเทียบกับจุดเริ่มต้นของหน้าต่างโดยใช้ jQuery?
มีวิธีการหาตำแหน่งที่แน่นอนขององค์ประกอบคือเมื่อเทียบกับจุดเริ่มต้นของหน้าต่างโดยใช้ jQuery?
คำตอบ:
.offset()
จะส่งคืนตำแหน่งออฟเซ็ตขององค์ประกอบเป็นวัตถุอย่างง่ายเช่น:
var position = $(element).offset(); // position = { left: 42, top: 567 }
คุณสามารถใช้ค่าส่งคืนนี้เพื่อจัดวางองค์ประกอบอื่น ๆ ที่จุดเดียวกัน:
$(anotherElement).css(position)
offset()
ไม่คืนพิกัดที่เหมาะสม มันส่งคืนประมาณ 300 พิกเซลมากกว่าพิกัดด้านบนสุดขององค์ประกอบในเอกสารแทน ทำไม??
โปรดทราบว่า$(element).offset()
จะบอกคุณตำแหน่งขององค์ประกอบที่สัมพันธ์กับเอกสาร วิธีนี้ใช้งานได้ดีในสถานการณ์ส่วนใหญ่ แต่ในกรณีที่position:fixed
คุณสามารถรับผลลัพธ์ที่ไม่คาดคิด
หากเอกสารของคุณยาวกว่าวิวพอร์ตและคุณเลื่อนแนวตั้งไปทางด้านล่างของเอกสารค่าposition:fixed
องค์ประกอบของคุณจะมากกว่าค่าที่คาดไว้ตามจำนวนเงินที่คุณเลื่อนoffset()
หากคุณกำลังมองหาค่าเทียบกับวิวพอร์ต (หน้าต่าง) มากกว่าเอกสารบนตำแหน่ง: คงองค์ประกอบคุณสามารถลบเอกสารscrollTop()
ค่าจากองค์ประกอบคงที่ของoffset().top
ความคุ้มค่า ตัวอย่าง:$("#el").offset().top - $(document).scrollTop()
ถ้าposition:fixed
องค์ประกอบหลักของออฟเซ็ตเป็นเอกสารคุณต้องการอ่านparseInt($.css('top'))
แทน
$(document).scrollTop()