สิ่งที่ @BoltClock พูดถึงนั้นค่อนข้างแข็งแกร่ง และที่นี่ฉันแค่ต้องการเพิ่มวิธีแก้ไขปัญหานี้อีกหลายอย่าง ตรวจสอบอัตรากำไรขั้นต้น w3c_collapsingนี้ ชิ้นส่วนสีเขียวเป็นความคิดที่มีศักยภาพที่จะแก้ไขปัญหานี้
โซลูชันที่ 1
ระยะขอบระหว่างกล่องลอยและกล่องอื่น ๆ จะไม่ยุบ (ไม่ใช่แม้แต่ระหว่างลูกลอยและลูกที่ไหล)
นั่นหมายความว่าฉันสามารถเพิ่มลงfloat:left
ในอย่างใดอย่างหนึ่ง#outer
หรือ#inner
สาธิต 1
ยังแจ้งให้ทราบว่าfloat
จะทำให้การใช้งานauto
ในขอบ
โซลูชันที่ 2
ระยะขอบขององค์ประกอบที่สร้างบริบทการจัดรูปแบบบล็อกใหม่ (เช่นลอยและองค์ประกอบที่มี 'ล้น' นอกเหนือจาก 'มองเห็น') จะไม่ยุบกับลูกที่ไหลเข้า
อื่น ๆ กว่าvisible
ใส่ให้ของเข้าoverflow: hidden
#outer
และวิธีนี้ดูเหมือนเรียบง่ายและเหมาะสม ฉันชอบมัน.
#outer{
width: 500px;
height: 200px;
background: #FFCCCC;
margin: 50px auto;
overflow: hidden;
}
#inner {
background: #FFCC33;
height: 50px;
margin: 50px;
}
โซลูชัน 3
ระยะขอบของกล่องที่วางไว้อย่างแน่นอนจะไม่ยุบ (ไม่ใช่แม้แต่กับเด็กที่กำลังไหลเข้า)
#outer{
width: 500px;
height: 200px;
background: #FFCCCC;
margin: 50px auto;
position: absolute;
}
#inner{
background: #FFCC33;
height: 50px;
margin: 50px;
}
หรือ
#outer{
width: 500px;
height: 200px;
background: #FFCCCC;
margin: 50px auto;
position: relative;
}
#inner {
background: #FFCC33;
height: 50px;
margin: 50px;
position: absolute;
}
ทั้งสองวิธีนี้จะทำให้การไหลปกติของ div
โซลูชันที่ 4
ระยะขอบของกล่องแบบอินไลน์บล็อกไม่ยุบ (ไม่ใช่แม้แต่กับลูกที่ไหลเข้า)
เหมือนกับ @enderskill
โซลูชันที่ 5
ขอบด้านล่างขององค์ประกอบระดับบล็อกในการไหลจะยุบตัวเสมอกับขอบด้านบนของพี่น้องในระดับบล็อกระดับต่อไปเว้นแต่ว่าพี่น้องนั้นจะมีระยะห่าง
สิ่งนี้ไม่ได้เกี่ยวข้องกับคำถามมากนักเนื่องจากเป็นอัตราการยุบระหว่างพี่น้อง โดยทั่วไปหมายความว่าถ้าบนกล่องมีและพี่น้องกล่องมีmargin-bottom: 30px
margin-top: 10px
อัตรากำไรรวมระหว่างพวกเขาเป็นแทน30px
40px
โซลูชันที่ 6
ระยะขอบบนสุดขององค์ประกอบบล็อกการไหลยุบลงด้วยระยะขอบสูงสุดของบล็อกระดับเด็กในการไหลหากองค์ประกอบนั้นไม่มีเส้นขอบด้านบนไม่มีการขยายด้านบนสุดและเด็กไม่มีการกวาดล้าง
นี่น่าสนใจมากและฉันสามารถเพิ่มเส้นขอบบนสุดหนึ่งเส้น
#outer{
width: 500px;
height: 200px;
background: #FFCCCC;
margin: 50px auto;
border-top: 1px solid red;
}
#inner {
background: #FFCC33;
height: 50px;
margin: 50px;
}
และยัง<div>
เป็นระดับบล็อกตามค่าเริ่มต้นดังนั้นคุณไม่จำเป็นต้องแจ้งให้ทราบล่วงหน้า ขออภัยที่ไม่สามารถโพสต์ลิงก์และรูปภาพมากกว่า 2 อันเนื่องจากชื่อเสียงของฉัน อย่างน้อยคุณก็รู้ว่าปัญหามาจากที่ไหนในครั้งต่อไปที่คุณเห็นสิ่งที่คล้ายกัน