เหตุใดความสูงของ div พาเรนต์จึงเป็นศูนย์เมื่อมันลอยเด็ก


132

ฉันมีสิ่งต่อไปนี้ใน CSS ของฉัน ระยะขอบ / การพายเรือ / เส้นขอบทั้งหมดจะถูกรีเซ็ตเป็น 0

#wrapper{width: 75%; min-width: 800px;}
.content{text-align: justify; float: right; width: 90%;}
.lbar{text-align: justify; float: left; width: 10%;}

ตอนนี้เมื่อฉันเขียน HTML ของฉันเป็น

<div id="wrapper">
    <div class="content">
        some text here
    </div>
    <div class="lbar">
        some text here
    </div>
</div>

หน้าที่แสดงผลอย่างถูกต้อง อย่างไรก็ตามเมื่อฉันตรวจสอบองค์ประกอบdiv#wrapperจะแสดงว่า0pxสูง ฉันคาดว่ามันจะขยายไปจนจบdiv.contentและdiv.lbar... ทำไมสิ่งนี้ถึงเกิดขึ้น?

อีกครั้งหน้าแสดงผลได้ดี พฤติกรรมนี้ทำให้ฉันงง


4
นี้อาจจะเป็นประโยชน์กับคุณCSS ลอยตัว 101จากรายการนอกเหนือ
เดวิดกล่าวว่าคืนสถานะโมนิกา

คำตอบ:


251

เนื้อหาที่ลอยอยู่ไม่ส่งผลต่อความสูงของคอนเทนเนอร์ องค์ประกอบไม่มีเนื้อหาที่ไม่ลอย (ดังนั้นไม่มีสิ่งใดหยุดความสูงของคอนเทนเนอร์ให้เป็น 0 ราวกับว่ามันว่างเปล่า)

การตั้งค่าoverflow: hiddenในภาชนะที่จะหลีกเลี่ยงโดยการสร้างใหม่บริบทการจัดรูปแบบบล็อก ดูวิธีการบรรจุลอยสำหรับเทคนิคอื่น ๆ และมีการลอยสำหรับคำอธิบายว่าเหตุใด CSS จึงได้รับการออกแบบด้วยวิธีนี้


นี่คืออีกวิธีการหนึ่งในการทำให้คอนเทนเนอร์มีลอยที่แก้ไขได้ใน CSS โดยไม่ต้องเพิ่มองค์ประกอบลงในหน้า
ฟิลิป

56

โดยปกติfloatจะไม่นับรวมในเค้าโครงของพ่อแม่

หากต้องการป้องกันให้เพิ่มoverflow: hiddenไปยังผู้ปกครอง


16
ขอบคุณมันใช้งานได้ แต่ฉันไม่เข้าใจว่าทำไม ... overflow: hidden ถูกกล่าวว่าเพื่อซ่อนเนื้อหาที่ล้นไม่ใช่เพื่อขยายองค์ประกอบเพื่อบรรจุ
ripper234

@ ripper234 นี่คือเหตุผล: stackoverflow.com/questions/25818199/…
kristianp

6

ฉันไม่แน่ใจว่านี่เป็นวิธีที่ถูกต้อง แต่ฉันแก้ไขได้โดยการเพิ่มdisplay: inline-block;ใน wrapper div

#wrapper{
    display: inline-block;
    /*border: 1px black solid;*/
    width: 75%;
    min-width: 800px;
}

.content{
    text-align: justify; 
    float: right; 
    width: 90%;
}

.lbar{
    text-align: justify; 
    float: left; 
    width: 10%;
}

1
นี่คือทางออกที่แน่นอนที่ฉันกำลังมองหา ล้น: เงาของกล่องที่ซ่อนอยู่จะหายไปอย่างเป็นธรรมชาติ
Kitiara
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.