2017-07-13 60 views
2

我的要求是我希望所有文本級別的div應具有相同的高度或應占據父級的所有高度div col。當使用flexbox時,子div高度應等於它的父級高度

.flexbox { 
 
    display: flex; 
 
} 
 

 
.col { 
 
    border: 1px solid; 
 
    margin: 20px; 
 
} 
 

 
.text { 
 
    background: green; 
 
}
<div class="flexbox"> 
 
    <div class="col"> 
 
    <div class="img" style="background:red;height:200px;width:200px;"></div> 
 
    <div class="text"> 
 
     <h3>I am listed first in source order.</h3> 
 
     <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p> 
 
    </div> 
 
    </div> 
 
    <div class="col"> 
 
    <div class="img" style="background:red;height:200px;width:200px;"></div> 
 
    <div class="text"> 
 
     <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. 
 
     Mauris placerat eleifend leo.</p> 
 
    </div> 
 
    </div> 
 
    <div class="col"> 
 
    <div class="img" style="background:red;height:200px;width:200px;"></div> 
 
    <div class="text"> 
 
     <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p> 
 
    </div> 
 
    </div> 
 
</div>

Here is the link for working code

+0

你是指剩下的身高還是身高? – Chiller

回答

2

您需要使用高度對父div和flex: 1對子div。

因此您.col類添加:

display: flex; 
flex-direction: column; 

並以.text類添加:

flex:1; 

.flexbox { 
 
    display: flex; 
 
} 
 

 
.col { 
 
    border: 1px solid; 
 
    margin: 20px; 
 
    display: flex; 
 
    flex-direction: column 
 
} 
 

 
.text { 
 
    background: green; 
 
    flex: 1; 
 
}
<div class="flexbox"> 
 
    <div class="col"> 
 
    <div class="img" style="background:red;height:200px;width:200px;"></div> 
 
    <div class="text"> 
 
     <h3>I am listed first in source order.</h3> 
 
     <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p> 
 
    </div> 
 
    </div> 
 
    <div class="col"> 
 
    <div class="img" style="background:red;height:200px;width:200px;"></div> 
 
    <div class="text"> 
 
     <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. 
 
     Mauris placerat eleifend leo.</p> 
 
    </div> 
 
    </div> 
 
    <div class="col"> 
 
    <div class="img" style="background:red;height:200px;width:200px;"></div> 
 
    <div class="text"> 
 
     <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p> 
 
    </div> 
 
    </div> 
 
</div>

Here is the fiddle to play with.

希望這會有所幫助。

+0

@MihaiT不,他們沒有相同的身高。 –

2

我想你想的綠色文本覆蓋div的其餘部分。那麼你需要根據div內的剩餘空間設置.text的高度。

這取決於img高度。在您的示例中,圖像的高度爲200像素。

如果高度是動態的,您需要使用類似javascript或jQuery的東西。如果不是(它們具有固定的高度),可以僅使用CSS如在下面的例子中,使用calc()計算.text的高度,從父(.col

100% =高度的總高度減去圖像高度的.col 200px =的img

.flexbox { 
 
    display: flex; 
 
} 
 
h3,p { 
 
\t margin-top:0 
 
} 
 
.col { 
 
    border: 1px solid; 
 
    margin: 20px; 
 
} 
 

 
.text { 
 
    background: green; 
 
\t height:calc(100% - 200px) 
 
}
<div class="flexbox"> 
 
    <div class="col"> 
 
    <div class="img" style="background:red;height:200px;width:200px;"></div> 
 
    <div class="text"> 
 
     <h3>I am listed first in source order.</h3> 
 
     <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p> 
 
    </div> 
 
    </div> 
 
    <div class="col"> 
 
    <div class="img" style="background:red;height:200px;width:200px;"></div> 
 
    <div class="text"> 
 
     <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. 
 
     Mauris placerat eleifend leo.</p> 
 
    </div> 
 
    </div> 
 
    <div class="col"> 
 
    <div class="img" style="background:red;height:200px;width:200px;"></div> 
 
    <div class="text"> 
 
     <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p> 
 
    </div> 
 
    </div> 
 
</div>

+0

只有因爲calc函數不適用於我,纔可以通過發佈帶有工作CSS代碼的jsfiddle鏈接來幫助我。 –

+0

@Vamsiachyuta我不需要張貼小提琴。我發佈了一個堆棧溢出片段(點擊運行代碼片段),並看到它的工作。舊版IE中不支持'calc()'。請看這裏> http://caniuse.com/#feat=calc –

相關問題