2015-03-02 11 views
8

Eşit boyutlu hücrelerden oluşan duyarlı bir kılavuz oluşturmak için flexbox kullanıyorum. Kodlarım, hücrelerin içeriği aynıysa, ancak hücrelerin içeriği uzunluk olarak değiştiğinde işe yaramıyor - hücreler içeriğine uyum sağlamak için yeniden ayarlanıyor. tarayıcı yeniden boyutlandırıldığında
1. Her hücre aynı genişliğe
2. Her hücrenin genişliği otomatik ayar yapar geçerli:
flexbox - esnek büyüme değeri belirtilirken genişliğin artırılması engelleniyor

İşte sonra ben de.

İşte keman benim kod: https://jsfiddle.net/v0erefnd/1/

html:

<div class="flex-container"> 
    <div class="flex-item">1</div> 
    <div class="flex-item">100</div> 
    <div class="flex-item">10,000</div> 
    <div class="flex-item">1,000,000</div> 
    <div class="flex-item">100,000,000</div> 
    <div class="flex-item">10,000,000,000</div> 
    <div class="flex-item">1,000,000,000,000</div> 
</div> 
<div class="flex-container"> 
    <div class="flex-item">100</div> 
    <div class="flex-item">100</div> 
    <div class="flex-item">100</div> 
    <div class="flex-item">100</div> 
    <div class="flex-item">100</div> 
    <div class="flex-item">100</div> 
    <div class="flex-item">100</div> 
</div> 

css:

.flex-container { 
    padding: 0; 
    margin: 0; 
    list-style: none; 
    display: -webkit-box; 
    display: -moz-box; 
    display: -ms-flexbox; 
    display: -webkit-flex; 
    display: flex; 
    -webkit-flex-flow: row; 
    justify-content: space-around; 
    height: 50px; 
    line-height:30px; 
} 

.flex-item { 
    /*todo: how to prevent the flexbox to resize to accommodate the text?*/ 
    background: tomato; 
    margin: 10px 5px; 
    color: white; 
    font-weight: bold; 
    font-size: 1.5em; 
    text-align: center; 
    flex-grow: 1; 
    overflow: hidden; 
} 

teşekkürler! Eğer aynı genişliğe sahip FlexBox öğelerin tümünü istiyorsanız

cevap

9

, sen flex-basis: 100% ekleyebilirsiniz:

Updated Example

.flex-item { 
    background: tomato; 
    margin: 10px 5px; 
    color: white; 
    font-weight: bold; 
    font-size: 1.5em; 
    text-align: center; 
    flex-basis: 100%; 
    overflow: hidden; 
} 
+3

ben 'esnek-temelini kullanırsınız: 0px' yerine (daha mantıklı) ya da 'flex: 1 0 0px', ancak +1 – avrahamcool

+0

@ Josh'un çözümü işe yaramaz, teşekkür ederim. Esnek büyümeye benziyor: Bu durumda artık 1'e gerek yok.

@avrahamcool çözümü, hem esnek büyümeyi gerektirir: 1; ve esnek temel: 0px – Moto