มีจุดที่ดีอยู่แล้ว แต่ในขณะที่มีข้อมูลมากมายเกี่ยวกับการแสดงผลของระยะขอบโดยเบราว์เซอร์ แต่ทำไมยังไม่มีคำตอบ:
"เหตุใด margin-top: -8px จึงไม่เหมือนกับ margin-bottom: 8px"
สิ่งที่เราสามารถถามได้คือ:
เหตุใดองค์ประกอบที่อยู่ข้างหน้าของขอบด้านล่างที่เป็นบวกจึงไม่ "ชนกัน" ในขณะที่องค์ประกอบต่อไปนี้เป็น "ขอบด้านบน" ที่เป็นบวก
ดังนั้นสิ่งที่เราเห็นคือมีความแตกต่างในการเรนเดอร์ของระยะขอบขึ้นอยู่กับด้านที่ใช้กับขอบด้านบน (และด้านซ้าย) จะแตกต่างจากด้านล่าง (และด้านขวา)
สิ่งต่าง ๆ จะชัดเจนขึ้นเมื่อมี (แบบง่าย) ดูว่าเบราว์เซอร์ใช้สไตล์อย่างไร: องค์ประกอบต่างๆจะแสดงผลจากบนลงล่างในวิวพอร์ตโดยเริ่มที่มุมบนซ้าย (ตอนนี้ให้ใช้การแสดงผลแนวตั้งในตอนนี้โดยจำไว้ว่า แนวนอนจะได้รับการปฏิบัติเหมือนกัน)
พิจารณา html ต่อไปนี้:
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
คล้ายกับตำแหน่งในโค้ดกล่องทั้งสามนี้จะปรากฏ 'จากบนลงล่าง' แบบเรียงซ้อนกันในเบราว์เซอร์ ( ทำให้สิ่งต่างๆเรียบง่ายเราจะไม่พิจารณาorder
คุณสมบัติของโมดูล 'flex-box' css3 ที่นี่ ) ดังนั้นเมื่อใดก็ตามที่ใช้สไตล์กับช่อง 3 ตำแหน่งขององค์ประกอบก่อนหน้า (สำหรับกล่อง 1 และ 2) ได้ถูกกำหนดไว้แล้วและไม่ควรเปลี่ยนแปลงอีกต่อไปเพื่อประโยชน์ในการแสดงผลความเร็ว
ตอนนี้ลองนึกภาพขอบด้านบนเป็น -10px สำหรับช่อง 3 แทนที่จะขยับองค์ประกอบก่อนหน้าทั้งหมดเพื่อรวบรวมพื้นที่บางส่วนเบราว์เซอร์จะดันช่อง 3 ขึ้นไปดังนั้นจึงแสดงผลที่ด้านบนของ (หรือด้านล่างขึ้นอยู่กับดัชนี z ) องค์ประกอบก่อนหน้าใด ๆ แม้ว่าประสิทธิภาพจะไม่ใช่ปัญหา แต่การย้ายองค์ประกอบทั้งหมดขึ้นอาจหมายถึงการเลื่อนองค์ประกอบเหล่านั้นออกจากวิวพอร์ตดังนั้นตำแหน่งการเลื่อนปัจจุบันจะต้องได้รับการเปลี่ยนแปลงเพื่อให้ทุกอย่างสามารถมองเห็นได้อีกครั้ง
เช่นเดียวกับขอบล่างสำหรับช่อง 3 ทั้งด้านลบและด้านบวก: แทนที่จะมีอิทธิพลต่อองค์ประกอบที่ประเมินแล้วจะมีการกำหนด 'จุดเริ่มต้น' ใหม่สำหรับองค์ประกอบที่กำลังจะมาถึงเท่านั้น ดังนั้นการตั้งค่าขอบล่างที่เป็นบวกจะผลักองค์ประกอบต่อไปนี้ลง ค่าลบจะดันขึ้น
onset
และoffset
. เป็นเรื่องจริงที่หลายคนมักใช้คำว่าoffset
( เชิงลบ ) เมื่อหมายถึงonset
( บวก ) ข้อความนี้จะทำลายตัวเองหากคุณอัปเดตคำตอบของคุณ ไชโย!