การจัดตำแหน่งแบบคงที่และสัมพัทธ์
ทำความเข้าใจตำแหน่งคงที่เริ่มต้น และวิธีที่ relative ย้ายองค์ประกอบจากตำแหน่งปกติ
การจัดตำแหน่งแบบคงที่และสัมพัทธ์ เป็นบทเรียน CSS Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน CSS Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส CSS Academy มีบทเรียนทั้งหมด 4 บทเรียน
พร็อพเพอร์ตี position
พร็อพเพอร์ตี position ควบคุมวิธีจัดวางองค์ประกอบในลำดับการจัดวางของเอกสาร ค่าทั้งห้าคือ static, relative, absolute, fixed และ sticky
position: static (ค่าเริ่มต้น)
องค์ประกอบทุกตัวมีค่าเริ่มต้นเป็น position: static องค์ประกอบแบบ static จะทำตามลำดับการจัดวางปกติของเอกสาร — องค์ประกอบแบบบล็อกจะเรียงซ้อนในแนวตั้ง ส่วนองค์ประกอบอินไลน์จะไหลจากซ้ายไปขวา คุณสมบัติค่าออฟเซ็ต (บน ขวา ล่าง ซ้าย) จะไม่มีผล
position: relative
position: relative จะคงองค์ประกอบไว้ในลำดับการจัดวางปกติ แต่ให้คุณเลื่อนองค์ประกอบได้โดยอ้างอิงจากตำแหน่งปกติขององค์ประกอบเองด้วย top, right, bottom, left
<div class="shifted">Shifted 10px down, 20px right — original space still reserved.</div>
ประเด็นสำคัญ: พื้นที่ยังคงอยู่
เมื่อใช้ position: relative ร่วมกับค่าออฟเซ็ต องค์ประกอบจะเคลื่อนที่ในเชิงภาพ แต่พื้นที่เดิมในการจัดวางยังคงถูกกันไว้ องค์ประกอบอื่นจะไม่เข้ามาเติมช่องว่างนั้น
บน ขวา ล่าง ซ้าย
คุณสมบัติค่าออฟเซ็ตจะเลื่อนองค์ประกอบจากจุดอ้างอิง:
top: เลื่อนลงจากขอบด้านบนleft: เลื่อนไปทางขวาจากขอบด้านซ้าย- ค่าลบจะกลับทิศทาง
<span class="badge">NEW</span>
z-index ต้องใช้การกำหนดตำแหน่ง
z-index ทำงานได้เฉพาะกับองค์ประกอบที่กำหนดตำแหน่งเท่านั้น (ไม่ใช่ static) หากต้องการควบคุมลำดับชั้น ให้กำหนดอย่างน้อย position: relative
<div class="tooltip">Tooltip (relative + z-index)</div>
relative ในฐานะบล็อกอ้างอิง
การใช้งาน position: relative ที่สำคัญที่สุดคือการทำให้องค์ประกอบเป็นบล็อกอ้างอิงสำหรับองค์ประกอบลูกที่กำหนดตำแหน่งแบบสัมบูรณ์ แม้จะไม่ได้กำหนดค่าออฟเซ็ตใด ๆ ก็ตาม
<div class="card">Card content<span class="card__badge">Badge</span></div>
การใช้ relative ร่วมกับ transform
การใช้ position: relative ร่วมกับ transform จะสร้างบริบทการซ้อนเลเยอร์ใหม่ องค์ประกอบยังคงอยู่ในลำดับการจัดวาง แต่สามารถเปลี่ยนรูปในเชิงภาพได้
<div class="hover-lift demo-hover">Hover me — I lift up</div>
กรณีที่ NOT ควรใช้ relative
หลีกเลี่ยงการกำหนด position: relative ให้กับทุกองค์ประกอบ เพราะจะสร้างบริบทการซ้อนเลเยอร์ซึ่งอาจทำให้การจัดการ z-index ซับซ้อนขึ้น ใช้เมื่อจำเป็นต้องกำหนดค่าออฟเซ็ตหรือใช้เป็นจุดยึดให้องค์ประกอบลูกที่กำหนดตำแหน่งแบบสัมบูรณ์เท่านั้น
การใช้ร่วมกับการเปลี่ยนผ่าน
เนื่องจากการกำหนดตำแหน่งแบบ relative ไม่ส่งผลต่อลำดับการจัดวาง คุณจึงสามารถทำให้ top/left เคลื่อนไหวเพื่อสร้างเอฟเฟกต์ในเชิงภาพได้อย่างปลอดภัย อย่างไรก็ตาม การทำให้ transform: translate() เคลื่อนไหวจะมีประสิทธิภาพมากกว่า
<div class="shake demo-hover">Hover me — I shake</div>
การแก้ไขปัญหาตำแหน่ง
ใน DevTools ให้ดูที่แผงค่าที่คำนวณแล้วเพื่อดูค่า position ที่มีผลจริง แผนภาพโมเดลกล่องจะแสดงพิกัดค่าออฟเซ็ตที่ใช้จริงอย่างละเอียด
ตรวจสอบความเข้าใจ
พื้นที่ในการจัดวางขององค์ประกอบจะเป็นอย่างไรเมื่อคุณใช้ position: relative; top: 20px
สรุป
position: static เป็นค่าเริ่มต้น — ไม่มีค่าออฟเซ็ตและไม่มีการซ้อนเลเยอร์ position: relative อนุญาตให้กำหนดค่าออฟเซ็ตจากตำแหน่งขององค์ประกอบเอง และยังคงพื้นที่ในการจัดวางไว้ บทบาทที่สำคัญที่สุดคือการทำหน้าที่เป็นบล็อกอ้างอิงสำหรับองค์ประกอบลูกที่กำหนดตำแหน่งแบบสัมบูรณ์
คำถามที่พบบ่อย
บทเรียน “การจัดตำแหน่งแบบคงที่และสัมพัทธ์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การจัดตำแหน่งแบบคงที่และสัมพัทธ์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส CSS Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส CSS Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การจัดตำแหน่งแบบคงที่และสัมพัทธ์”
ทำความเข้าใจตำแหน่งคงที่เริ่มต้น และวิธีที่ relative ย้ายองค์ประกอบจากตำแหน่งปกติ คุณปฏิบัติ CSS Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน CSS Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน CSS Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การจัดตำแหน่งแบบคงที่และสัมพัทธ์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน CSS Academy นี้ได้ไหม
ได้ บทเรียน CSS Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การจัดตำแหน่งแบบคงที่และสัมพัทธ์
- การจัดตำแหน่งแบบสัมบูรณ์และบล็อกบรรจุ
- การจัดตำแหน่งแบบตรึงและแบบยึดติด
- Z-index และบริบทการซ้อน