2011-12-26 10 views
9

मैं एक गतिशील लेआउट बनाने के लिए Google क्रोम में फ्लेक्सबॉक्स का उपयोग करता हूं (केवल इस ब्राउज़र को समर्थित होना चाहिए)। मेरे पास एक div तत्व में n बाल तत्व हैं जो पूरे स्थान को सभी अनुपात के साथ साझा करना चाहिए। यह नए पेश किए गए फ्लेक्स-बक्से के कारण समस्याओं के बिना काम कर रहा है। लेकिन मुझे प्रत्येक आंतरिक div की ऊंचाई 0 पर भी सेट करना पड़ा। अगर मैं इस div के अंदर एक तत्व को 100% ऊंचाई तक फैलाना चाहता हूं तो यह किसी भी गणना मूल्य के बजाय 0 के दिए गए मान का उपयोग करता है। जैसा कि मैंने जावास्क्रिप्ट का उपयोग रोकने के लिए फ्लेक्स-बक्से चुने हैं, मैं इस तरह से बचना पसंद करूंगा। क्या छवि की ऊंचाई div को भरने का कोई और तरीका है?फ्लेक्सबॉक्स आइटम भरने के लिए प्रतिशत मानों का उपयोग

और यहाँ कोड (केवल गूगल क्रोम में परीक्षण किया गया) है:

एचटीएमएल

<div class="flexbox"> 
    <div><img src="chrome-logo.png" /></div> 
    <div><img src="chrome-logo.png" /></div> 
    <div><img src="chrome-logo.png" /></div> 
    <div><img src="chrome-logo.png" /></div> 
</div> 

सीएसएस

  .flexbox { 
       display:-webkit-box; 
       -webkit-box-orient:vertical; 
       height:300px; 
       width:200px; 
      } 
      .flexbox > div { 
       -webkit-box-flex:1; 
       height:0; 
       border:solid 1px #000000; 
      } 
      .flexbox > div > img { 
       height:100%; 
      } 

The code to watch in the browser

+0

आपको ऊंचाई 0 को क्यों सेट करना पड़ा? यदि आप ऊंचाई को स्पष्ट रूप से सेट नहीं करने जा रहे हैं, तो आप '100%' की एक सौ प्रतिशत होने की क्या उम्मीद कर रहे हैं? – robertc

+0

मैंने पूरी उपलब्ध स्थान को उसी आकार के हिस्सों में विभाजित करने के लिए किया था। अन्यथा केवल शेष स्थान (सामग्री के बिना) असाइन किया गया है। यह उस मेल में वर्णित फ्लेक्स-फ़ंक्शन का उपयोग करने जैसा व्यवहार है: [http://lists.w3.org/Archives/Public/www-style/2011Nov/0770.html ](http://lists.w3.org/ अभिलेखागार/सार्वजनिक/www-style/2011Nov/0770.html) –

उत्तर

8

खैर मैं इसके बारे में घंटे के बाद काम मिल गया अनुसंधान। निम्न परिवर्तन करने के लिए कर रहे हैं:

.flexbox { 
      display:-webkit-box; 
      -webkit-box-orient:vertical; 
      height:300px; 
      width:200px; 
     } 
     .flexbox > div { 
      -webkit-box-flex:1; 
      height:0; 
      border:solid 1px #000000; 
      position:relative; /* CHANGE */ 
     } 
     .flexbox > div > img { 
      height:100%; 
      position:absolute; /* CHANGE */ 
     } 

यदि आप आप में intrested सीएसएस के लिए ChromeDevTools के माध्यम से ये परिवर्तन कर सकते हैं और आप सही परिणाम देखेंगे!

+0

.. और लिंक के लिए 'चौड़ाई: 100%;' सेट करना न भूलें :) – BananaAcid