Dinamik yüksekliğe sahip ebeveyni doldurmak için alt div yüksekliğini uzat


96

Aşağıdaki keman da görülebileceği gibi, büyük div'i içerecek şekilde uzatılmış divbir ebeveynde bulunan iki s divvar, amacım bu çocuğun divboy olarak eşit olmasını sağlamak .

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



@MikeHometchko CSS'de çok sayıda var ama CSS3'te değil. Ben öyle düşünüyorum.
— Mr_Green

1
@Mr_Green "CSS" ve CSS3 arasındaki temel seviyedeki farklar önemsiz, bu yüzden sorunu görmüyorum. Bu, ölümüne sorulan ve yanıtlanan çok yaygın bir sorundur.
— Mike H.

1
@MikeHometchko çözümümü kontrol et. Eminim daha önce kimse aynı şeyi cevaplamamıştır.
— Mr_Green

Yanıtlar:


48

Solüsyon kullanmaktır display: table-cellbu öğeleri getirmek satır içi yerine kullanarak display: inline-blockveya float: 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>

Çalışma Keman


Üst öğe tablo hücresiyse bu işe yaramaz.
— Tomáš Zato - Monica'yı

57

display: flexEsnemek için kullanın div:

div#container {
    padding:20px;
    background:#F1F1F1;
    display: flex;
}

.content {
    width:150px;
    background:#ddd;
    padding:10px;
    margin-left: 10px;
}

JSFIDDLE


19

Aşağıdaki CSS'yi ekleyin:

Üst div için:

style="display: flex;"

Çocuk div için:

style="align-items: stretch;"

stretchFlex'in benim için çalışması için çocukları da eklemem gerekiyordu .
— BadHorsie

4

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

Ekranı ızgara olarak kullanabileceğinizi düşünüyorum:

.parent { display: grid };

Cevabınızı orijinal göndericinin aynı kodunu kullanarak test ettiniz mi?
— Mark Stewart

Çalışır ve çocukta herhangi bir CSS gerektirmez. Bunun nedeni, bir CSS Izgara hücresinin autovarsayılan olarak satır ve hücreye sahip olmasıdır . Sadece display: -ms-gridbir çocuğunuz olduğu sürece, bazı flexbug'lardan kaçınmak için kullanırsanız , aslında IE ile oldukça iyi çalışır .
— ShortFuse

-6

Bunu biraz jQuery ile kolayca yapabilirsiniz

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

3
Tarayıcı penceresi yeniden boyutlandırıldıktan sonra bu kırılır, CSS pencereleri ise çalışmaya devam eder.
— SharpC
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.