2015-04-07 21 views
25

Aynı genişlikte birkaç öğe içeren flexbox kullanmak istiyorum. Bu esnek kutunun, uzayı uzaydan ziyade eşit olarak dağıttığını fark ettim. ÖrneğinEsnek kutu öğeleri aynı boyutta nasıl oluşturulur?

:

.header { 
 
    display: flex; 
 
} 
 

 
.item { 
 
    flex-grow: 1; 
 
    text-align: center; 
 
    border: 1px solid black; 
 
}
<div class="header"> 
 
    <div class="item">asdfasdfasdfasdfasdfasdf</div> 
 
    <div class="item">z</div> 
 
</div>

ilk öğenin ikinciden çok daha büyük olduğunu. 3 öğe, 4 öğe veya n öğem varsa bunların hepsinin, öğe başına eşit miktarda alanla aynı satırda görünmesini istiyorum.

Herhangi bir fikrin var mı?

http://codepen.io/anon/pen/gbJBqM

cevap

51

onların flex-basis (böylece bütün elemanları aynı başlangıç ​​noktası var) 0 böylece onları ayarlayın ve büyümelerini sağlar: bunu başarmak için

flex: 1 1 0

18

Sen flex-basis: 100% ekleyebilir .

.header { 
    display: flex; 
} 

.item { 
    flex-basis: 100% 
    text-align: center; 
    border: 1px solid black; 
} 

Ne olursa olsun, aynı zamanda hem aynı sonuçlar için flex: 1 kullanabilirsiniz İçin

Updated Example

.

flex: 1 ait stenografi eşdeğer olan flex: 1 1 0 aynıdır:

.item { 
    flex-grow: 1; 
    flex-shrink: 1; 
    flex-basis: 0; 
    text-align: center; 
    border: 1px solid black; 
} 
+0

Bu doğru değil. Varsayılan esnek değer "flex: 0 1 auto". Bu, flex: 1 'ayarının 'flex: 1 1 auto' ile sonuçlanacağı anlamına gelir. Bu işe yaramaz. Doğru cevap 'flex: 1 1 0' tarafından belirtildiği gibi Adam –

+3

@ r.sendecky Hayır, yanlış olan sensin. Benim cevabımda belirttiğim gibi, flex: 1 'inin shorthand'i, flex: 1 1 0 ** değil ** 'flex: 1 1 auto' ile sonuçlandığını iddia ediyor. ['Flex shorthand' bölümü] altındaki resmi W3 şartnamesine göz atın (https://www.w3.org/TR/css-flexbox-1/#flex-property): "flex-based" olduğunda esnek kısa yoldan atlanmış, belirtilen değeri "0" değil, "otomatik" değil. Rastgele downvote için teşekkürler. –

+1

@ r.sendecky - Ayrıca, bu örneği görselleştirmek için [bu örnekte] (https://jsfiddle.net/o25wto2d/) oluşturdum. –

2

ekleme genişliği: 0 beni sorunu burada

.item { 
     flex-grow: 1 1 0; 
     width: 0; 
    } 

çözmek yardımcı beni çözmeye yardımcı link Benim sorunum: Always equal flexbox columns

+0

Bu, .item'in içeriği, .item'den daha geniş bir şekilde büyümesine neden oluyorsa, bu gerekli gibi görünmektedir. – Bungle

İlgili konular