ฉันกำลังพยายามแทรก div ลงในส่วนใดส่วนหนึ่งของเนื้อหาและทำให้position: absolute
สัมพันธ์กับเอกสารทั้งหมดไม่ใช่องค์ประกอบหลักที่มีไฟล์position: relative
.
ฉันกำลังพยายามแทรก div ลงในส่วนใดส่วนหนึ่งของเนื้อหาและทำให้position: absolute
สัมพันธ์กับเอกสารทั้งหมดไม่ใช่องค์ประกอบหลักที่มีไฟล์position: relative
.
คำตอบ:
คุณจะต้องวางdiv
ด้านนอกขององค์ประกอบและเข้าไปในposition:relative
body
position:fixed
และposition:absolute
ไม่มีพฤติกรรมเดียวกัน คงที่นั้นสัมพันธ์กับวิวพอร์ต (ไม่ใช่เอกสาร) และจะทำให้รายการสามารถมองเห็นได้ตลอดเวลาแม้ว่าการเลื่อนอาจทำให้เกิดการทับซ้อนกันเป็นต้นฉันเข้าใจว่าอาจมีเหตุผลที่ถูกต้องสำหรับโครงสร้าง html แต่เนื่องจากคำถามเกี่ยวกับ html และ css คำตอบของฉันถูกต้อง วิธีเดียวที่ไม่มี JS ในการทำให้มันสัมพันธ์กับเอกสารคือการย้ายออกจากposition:relative
องค์ประกอบ
position: fixed
คุณกำลังมองหา
จาก MDN :
การวางตำแหน่งคงที่จะคล้ายกับการกำหนดตำแหน่งแบบสัมบูรณ์โดยมีข้อยกเว้นว่าบล็อกที่มีองค์ประกอบคือวิวพอร์ต สิ่งนี้มักใช้เพื่อสร้างองค์ประกอบลอยที่ยังคงอยู่ในตำแหน่งเดิมแม้ว่าจะเลื่อนหน้าไปแล้วก็ตาม
วิธีแก้ปัญหาของฉันคือใช้ jQuery เพื่อย้าย div ออกไปนอกพาเรนต์:
<script>
jQuery(document).ready(function(){
jQuery('#loadingouter').appendTo("body");
});
</script>
<div id="loadingouter"></div>
หากคุณไม่ต้องการแนบองค์ประกอบbody
วิธีแก้ปัญหาต่อไปนี้จะได้ผล
ฉันมาถึงคำถามนี้โดยมองหาวิธีแก้ปัญหาที่จะใช้งานได้โดยไม่ต้องแนบ div เข้ากับเนื้อความเพราะฉันมีสคริปต์เมาส์โอเวอร์ที่ฉันต้องการเรียกใช้เมื่อเมาส์อยู่เหนือทั้งองค์ประกอบใหม่และองค์ประกอบที่สร้างมันขึ้นมา ตราบเท่าที่คุณยินดีที่จะใช้ jQuery และได้รับแรงบันดาลใจจากคำตอบของ @Liam William:
var leftOffset = <<VALUE>>;
var topOffset = <<VALUE>>;
$(element).css("left", leftOffset - element.offset().left);
$(element).css("top", topOffset - element.offset().top);
วิธีการแก้ปัญหานี้ทำงานโดยการลบตำแหน่งซ้ายและบนสุดขององค์ประกอบในปัจจุบัน (สัมพันธ์กับร่างกาย) เพื่อย้ายองค์ประกอบไปที่ 0, 0 การวางองค์ประกอบทุกที่ที่คุณต้องการให้สัมพันธ์กับเนื้อความนั้นทำได้ง่ายเพียงแค่เพิ่มค่าชดเชยด้านซ้ายและด้านบน มูลค่า.
สิ่งนี้ไม่สามารถทำได้ด้วย CSS และ HTML
การใช้ Javascript / jQuery คุณอาจนำองค์ประกอบjQuery.offset()
ไปยัง DOM และเปรียบเทียบjQuery.position()
เพื่อคำนวณว่าควรจะปรากฏในหน้าใด
jQuery.offset({ left: 0 })
สำหรับผู้ชนะ!
<body>
แท็กไม่ใช่หรือ