นี่เป็นข้อผิดพลาด webkit (chrome / safari) ที่รายงานเด็กของผู้ปกครองที่มีความสูงขั้นต่ำไม่สามารถสืบทอดคุณสมบัติความสูงได้: https://bugs.webkit.org/show_bug.cgi?id=26559
เห็นได้ชัดว่า Firefox ได้รับผลกระทบด้วย (ไม่สามารถทดสอบใน IE ในขณะนี้)
วิธีแก้ปัญหาที่เป็นไปได้:
- เพิ่มตำแหน่ง: สัมพันธ์กับ #containment
- เพิ่มตำแหน่ง: สัมบูรณ์ถึง # containment-shadow-left
ข้อผิดพลาดไม่ปรากฏขึ้นเมื่อองค์ประกอบด้านในมีตำแหน่งที่แน่นอน
ดูhttp://jsfiddle.net/xrebB/
แก้ไขเมื่อวันที่ 10 เมษายน 2014
ตั้งแต่ฉันกำลังทำงานในโครงการที่ฉันจริงๆต้องภาชนะผู้ปกครองmin-height
และองค์ประกอบของเด็กสืบทอดความสูงของภาชนะที่ฉันได้บางวิจัยมากขึ้น
ครั้งแรก:ฉันไม่แน่ใจอีกต่อไปว่าพฤติกรรมเบราว์เซอร์ปัจจุบันเป็นข้อผิดพลาดจริง ๆ หรือไม่ รายละเอียด CSS2.1 พูดว่า:
เปอร์เซ็นต์จะถูกคำนวณตามความสูงของบล็อกที่มีกล่องซึ่งสร้างขึ้น หากไม่ได้ระบุความสูงของบล็อกที่มีอย่างชัดเจน (นั่นคือขึ้นกับความสูงของเนื้อหา) และองค์ประกอบนี้ไม่ได้อยู่ในตำแหน่งที่แน่นอนค่าจะคำนวณเป็น 'อัตโนมัติ'
ถ้าฉันใส่ความสูงขั้นต่ำลงในคอนเทนเนอร์ของฉันฉันไม่ได้ระบุความสูงอย่างชัดเจน - ดังนั้นองค์ประกอบของฉันควรมีauto
ความสูง และนั่นคือสิ่งที่ Webkit - และเบราว์เซอร์อื่น ๆ ทำ
ประการที่สองฉันพบวิธีแก้ปัญหา:
ถ้าฉันตั้งค่าองค์ประกอบคอนเทนเนอร์ของฉันdisplay:table
ด้วยheight:inherit
มันจะทำหน้าที่เหมือนกับวิธีที่ฉันให้min-height
100% และ - ที่สำคัญกว่านั้น - ถ้าฉันตั้งค่าองค์ประกอบลูกให้กับdisplay:table-cell
มันจะเป็นการสืบทอดความสูงขององค์ประกอบคอนเทนเนอร์ได้อย่างสมบูรณ์ไม่ว่าจะเป็น 100% หรือมากกว่านั้น
CSS เต็มรูปแบบ:
html, body {
height: 100%;
margin: 0;
}
#container {
background: green;
display: table;
height: inherit;
width: 100%;
}
#content {
background: red;
display: table-cell;
}
มาร์กอัป:
<div id="container">
<div id="content">
<p>content</p>
</div>
</div>
ดูhttp://jsfiddle.net/xrebB/54/
display:flex
และและให้เด็กflex-direction:column
flex:1