2015-04-07 20 views
25

मैं फ्लेक्सबॉक्स का उपयोग करना चाहता हूं जिसमें कुछ संख्याएं हैं जो सभी समान चौड़ाई हैं। मैंने देखा है कि फ्लेक्सबॉक्स स्पेस के बजाए समान रूप से अंतरिक्ष को समान रूप से वितरित करता है।फ्लेक्सबॉक्स आइटम को समान आकार कैसे बनाएं?

उदाहरण के लिए:

.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>

पहला आइटम दूसरे आइटम की तुलना में बहुत बड़ा है। अगर मेरे पास 3 आइटम, 4 आइटम, या एन आइटम हैं, तो मैं चाहता हूं कि वे सभी एक ही पंक्ति पर प्रति आइटम एक समान मात्रा में स्थान के साथ दिखें।

कोई विचार?

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

उत्तर

51

उन्हें सेट करें कि उनके flex-basis0 है (ताकि सभी तत्वों को एक ही प्रारंभिक बिंदु है), और उन्हें विकसित करने के लिए अनुमति देते हैं:

flex: 1 1 0

18

आप flex-basis: 100% जोड़ सकता है इस लक्ष्य को हासिल करने के लिए ।

Updated Example

.header { 
    display: flex; 
} 

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

के लिए क्या इसके लायक है, तो आप भी एक ही परिणाम के लिए flex: 1 का उपयोग के साथ-साथ हो सकता है।

flex: 1 की आशुलिपि जो के बराबर है flex: 1 1 0 रूप में एक ही है:

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

यह सही नहीं है। डिफ़ॉल्ट फ्लेक्स मान 'फ्लेक्स: 0 1 ऑटो' है। जिसका मतलब है 'फ्लेक्स: 1' सेट करना' फ्लेक्स: 1 1 ऑटो 'होगा। यह काम नहीं करेगा। सही उत्तर 'फ्लेक्स: 1 1 0' है जैसा ऊपर बताया गया है एडम –

+3

@ r.sendecky नहीं, आप गलत हैं। जैसा कि मैंने अपने जवाब में कहा था, 'फ्लेक्स: 1' के परिणाम' फ्लेक्स में परिणाम: 1 1 0' ** नहीं ** 'फ्लेक्स: 1 1 ऑटो 'जैसा कि आप दावा कर रहे हैं। ['फ्लेक्स शॉर्टंड' सेक्शन] (https://www.w3.org/TR/css-flexbox-1/#flex-property) के तहत आधिकारिक डब्ल्यू 3 विनिर्देश पर नज़र डालें: जब 'फ्लेक्स-आधार' है " फ्लेक्स शॉर्टैंड से छोड़ा गया, इसका निर्दिष्ट मान '0'" है, न कि 'ऑटो'। यादृच्छिक डाउनवोट के लिए धन्यवाद। –

+1

@ r.sendecky - इसके अलावा, [इस उदाहरण] (https://jsfiddle.net/o25wto2d/) पर एक नज़र डालें, मैंने विविधताओं को देखने के लिए बनाया है। –

2

जोड़ा जा रहा है चौड़ाई: 0 मुझे समस्या

.item { 
     flex-grow: 1 1 0; 
     width: 0; 
    } 
यहाँ

का समाधान में मदद की लिंक, जिनकी सहायता से हल है मेरी समस्या: Always equal flexbox columns

+0

यह आवश्यक प्रतीत होता है यदि '.item' की सामग्री '.item' से अधिक व्यापक हो जाती है, स्वाभाविक रूप से। – Bungle

संबंधित मुद्दे