2012-12-21 12 views
5

मैंने हाल ही में CSS3 फ्लेक्स बॉक्स के साथ खेलना शुरू कर दिया है, मैंने कई संसाधनों के माध्यम से पढ़ा है और इसके साथ स्वयं खेला है। मैं के माध्यम से देखा है:CSS3 फ्लेक्सबॉक्स नकारात्मक-फ्लेक्स काम कैसे करता है?

flex: <positive-flex> <negative-flex> <preferred-size> 

मैं कैसे नकारात्मक-फ्लेक्स पैरामीटर काम करता है समझने के लिए प्रतीत नहीं कर सकते हैं: http://www.w3.org/TR/css3-flexbox/

विशेष रूप से मैं बच्चे के तत्वों पर फ्लेक्स संपत्ति के साथ समस्या हो रहा हूँ। पॉजिटिव-फ्लेक्स समझ में आता है क्योंकि यह पैरेंट तत्व से आनुपातिक रूप से बच्चों को अंतरिक्ष में वितरित करता है।

नकारात्मक-फ्लेक्स, जो मैं समझता हूं उससे तत्वों को कम करना होता है जब वे माता-पिता को बहते हैं। हालांकि, मैं इसे काम करने में सक्षम नहीं हूं। किसी भी मदद समझ की सराहना की जाएगी!

यहाँ कोड मैं के साथ परीक्षण किया गया है: http://jsfiddle.net/nxzQQ/2/

HTML:

<!DOCTYPE html> 
<html> 
<head> 

</head> 
<body> 

<div id="container"> 
    <div></div> 
    <div></div> 
    <div></div> 
</div> 
</body> 
</html> 

सीएसएस:

#container { 
    width: 100%; 
    height: 200px; 

    display: -webkit-flex; 
    display: flex; 

    -webkit-flex-direction: row; 
    flex-direction: row; 
} 

#container > :nth-child(1) { 
    background-color: red; 

    -webkit-flex: 1 0 0px; 
    flex: 1 0 0px; 
} 

#container > :nth-child(2) { 
    background-color: blue; 

    -webkit-flex: 2 0 0px; 
    flex: 2 0 0px; 
} 

#container > :nth-child(3) { 
    background-color: orange; 

    -webkit-flex: 1 0 0px; 
    flex: 1 0 0px; 
} 

उत्तर

6

flexbox पर ओपेरा से एक लेख में, नकारात्मक फ्लेक्स के रूप में वर्णन किया गया है जैसे:

#first { 
    flex: 1 1 400px; 
} 

#second { 
    flex: 2 3 600px; 
} 

#third { 
    flex: 1 2 400px; 
} 

उनके नाम के बावजूद नकारात्मक फ्लेक्स मान सकारात्मक मूल्य हैं - उपर्युक्त घोषणाओं में दूसरे यूनिटलेस मान। ये केवल खेलते हैं जब बच्चे मुख्य धुरी दिशा में अपने मूल कंटेनर को बहते हैं। वे अनुपात मूल्य के रूप में भी कार्य करते हैं, लेकिन इस बार वे "ओवरफ्लो राशि" ( बच्चों द्वारा उनके कंटेनर को ओवरफ्लो करने की मात्रा) के अनुपात को निर्दिष्ट करते हैं, जो कुल आकार को नीचे लाने के लिए प्रत्येक बच्चे के आकार से कटौती की जाएगी माता-पिता के आकार के बराबर - असल में, ओवरफ़्लो को रोकने के लिए।

मान लें कि मूल धुरी के साथ मूल कंटेनर 1100 पिक्सेल है। यह मामला है, हमारे उपरोक्त बच्चे इसे 300 पिक्सल से अधिक प्रवाह करेंगे (वे कुल अक्ष के साथ 1400 पिक्सल के बराबर होंगे)। क्योंकि नकारात्मक फ्लेक्स मूल्यों उन पर सेट की :

  • पहले बच्चे अतिप्रवाह राशि से हटा दिया है, जो 50 पिक्सल है 1/6 मिलेगा। इसलिए इसकी गणना मूल्य 350 पिक्सेल होगा।
  • दूसरे बच्चे को उससे अधिक ओवरफ्लो राशि का 3/6 वां मिलेगा, जो 150 पिक्सेल है। इसलिए इसकी गणना मूल्य 450 पिक्सेल होगा।
  • तीसरा बच्चा उस से निकाली गई अतिप्रवाह राशि का 2/6 वां प्राप्त करेगा, जो 100 पिक्सेल है। इसलिए इसकी गणना मूल्य 300 पिक्सेल होगा।

तो उच्च नकारात्मक फ्लेक्स मान वास्तव में एक छोटे तत्व में परिणाम देता है!

स्रोत: http://dev.opera.com/articles/view/flexbox-basics/

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