ยืดความสูง div เด็กเพื่อเติมพาเรนต์ที่มีไดนามิก


96

ดังที่เห็นได้ในซอต่อไปนี้ฉันมีสองตัวdivที่มีอยู่ในพ่อแม่divที่มี div ขนาดใหญ่เป้าหมายของฉันคือทำให้เด็กเหล่านั้นdivมีความสูงเท่ากัน

http://fiddle.jshell.net/y9bM4/



@MikeHometchko มีหลายอย่างใน CSS แต่ไม่ใช่ใน CSS3 ฉันคิดอย่างนั้น
Mr_Green

1
@Mr_Green ความแตกต่างในระดับพื้นฐานระหว่าง "CSS" และ CSS3 เป็นเรื่องเล็กน้อยดังนั้นฉันจึงไม่เห็นปัญหา นี่เป็นเรื่องธรรมดามากที่ถูกถามและตอบแทบตาย
Mike H.

1
@MikeHometchko ตรวจสอบวิธีแก้ปัญหาของฉัน ฉันแน่ใจว่าไม่มีใครตอบเหมือนกันมาก่อน
Mr_Green

คำตอบ:


48

การแก้ปัญหาคือการใช้งานdisplay: table-cellที่จะนำองค์ประกอบเหล่านั้นแบบอินไลน์แทนการใช้หรือdisplay: inline-blockfloat: left

div#container {
  padding: 20px;
  background: #F1F1F1
}
.content {
  width: 150px;
  background: #ddd;
  padding: 10px;
  display: table-cell;
  vertical-align: top;
}
.text {
  font-family: 12px Tahoma, Geneva, sans-serif;
  color: #555;
}
<div id="container">
  <div class="content">
    <h1>Title 1</h1>

    <div class="text">Sample Text. Sample Text. Sample Text. Sample Text. Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.
      <br>Sample Text. Sample Text. Sample Text.
      <br>Sample Text.
      <br>
    </div>
  </div>
  <div class="content">
    <h1>Title 2</h1>

    <div class="text">Sample Text. Sample Text. Sample Text. Sample Text. Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.</div>
  </div>
</div>

การทำงาน Fiddle


สิ่งนี้จะไม่ได้ผลหากองค์ประกอบหลักเป็นเซลล์ตาราง
Tomáš Zato - คืนสถานะ Monica


19

เพิ่ม CSS ต่อไปนี้:

สำหรับ Div หลัก:

style="display: flex;"

สำหรับ div เด็ก:

style="align-items: stretch;"

ฉันจำเป็นต้องเพิ่มstretchเด็ก ๆ เพื่อให้ดิ้นทำงานให้ฉัน
BadHorsie

4

https://www.youtube.com/watch?v=jV8B24rSN5o

ฉันคิดว่าคุณสามารถใช้การแสดงผลเป็นตารางได้:

.parent { display: grid };

คุณทดสอบคำตอบโดยใช้รหัสเดิมของผู้โพสต์หรือไม่?
Mark Stewart

ใช้งานได้และไม่ต้องใช้ CSS ใด ๆ กับเด็ก นั่นเป็นเพราะเซลล์ CSS Grid จะมีautoแถวและเซลล์ตามค่าเริ่มต้น มันใช้งานได้ดีกับ IE หากคุณใช้display: -ms-gridเพื่อหลีกเลี่ยง flexbugs บางตัวตราบใดที่คุณมีลูกเพียงคนเดียว
ShortFuse

-6

คุณสามารถทำได้อย่างง่ายดายด้วย jQuery เล็กน้อย

$(document).ready(function(){
  var parentHeight = $("#parentDiv").parent().height();
  $("#childDiv").height(parentHeight);
});

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