दिलचस्प पोस्ट
इंटरनेट एक्सप्लोरर में लंबे समय से चलने वाले स्क्रिप्ट संदेश को अक्षम करना त्रुटि का सामना करना "*** glibc पाया *** खाली (): अमान्य अगले आकार (तेज)" मैं आकार को कैसे माप सकता / गणना कर सकता हूं, एक दस्तावेज़ को खुद रेंडर करने की आवश्यकता है? रिकर्सिव फ़ंक्शन निर्दिष्ट मान वापस नहीं करता है setUserVisibleHint खंड में क्रिएटिव्यू पर पहले कहा जाता है सी में मूल्यों को स्वैप करने का सबसे तेज़ तरीका क्या है? रेल: मेरे शो दृश्य में "अगला पोस्ट" और "पिछला पोस्ट" लिंक, कैसे करें? यूनिकोडएनकोड त्रुटिः 'एएससीआई' कोडेक वर्ण यू '\ xef' को स्थिति में नहीं एन्कोड कर सकता है 0: क्रमिक नहीं श्रेणी में (128) नेविगेशन बार दायां बारिटिमेम छवि-बटन बग आईओएस 11 जावा में आकार n के सेट से कश्मीर तत्वों को कमजोर करने के लिए कैसे करें? ओरेकल 11 जी (क्लाइंट) को पूरी तरह से कैसे हटाए / निकालना है? मैं jQuery के साथ एक पृष्ठ कैसे रिफ्रेश कर सकता हूं? रोबोट को एक फ़ॉर्म भरने से कैसे रोका जा सकता है? कैसे PHP में विभिन्न नई शैली शैलियों को बदलने के लिए सबसे चतुर तरीका है? ऑब्जेक्ट के रूप में वेब एपीआई पद्धति के लिए json POST डेटा कैसे पास करें?

एक डिवीजन को शेष चौड़ाई भरें

मैं कैसे एक div भरने की शेष चौड़ाई को भर सकता हूँ?

जैसे

<div id="Main" style="width: 500px;"> <div id="div1" style="width: 100px;"></div> <div id="div2"></div> <div id="div3" style="width: 100px; float: right;"></div> </div> 

मैं शेष को भरने के लिए div2 कैसे प्राप्त कर सकता हूं?

वेब के समाधान से एकत्रित समाधान "एक डिवीजन को शेष चौड़ाई भरें"

इस तरह से कुछ प्रयास करें:

 <style> #divMain { width: 500px; } #left-div { width: 100px; float: left; background-color: #fcc; } #middle-div { margin-left: 100px; margin-right: 100px; background-color: #cfc; } #right-div { width: 100px; float: right; background-color: #ccf; } </style> <div id="divMain"> <div id="left-div"> left div </div> <div id="right-div"> right div </div> <div id="middle-div"> middle div<br />bit taller </div> </div> 

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

ध्यान दें कि "मध्य div" एचटीएमएल में "सही डिवा" के बाद चला जाता है

अद्यतित समाधान (अक्टूबर 2014): द्रव लेआउट के लिए तैयार


परिचय:

यह समाधान Leigh द्वारा प्रदान की गई तुलना में भी सरल है यह वास्तव में इसके आधार पर है

यहां आप देख सकते हैं कि मध्य तत्व (हमारे मामले में, "content__middle" वर्ग के साथ) में कोई आयामी संपत्ति निर्दिष्ट नहीं है – कोई चौड़ाई नहीं, न ही पैडिंग, न ही हाशिए संबंधित संपत्ति – लेकिन केवल एक overflow: auto; (नोट 1 देखें)।

महान लाभ यह है कि अब आप max-width और min-width अपने बाएं और दायें तत्वों को निर्दिष्ट कर सकते हैं । जो द्रव लेआउट के लिए शानदार है .. इसलिए उत्तरदायी लेआउट 🙂

नोट 1: बनाम लेह का उत्तर जहां आपको margin-left और margin-right गुणों को "content__middle" कक्षा में जोड़ना होगा


गैर-तरल पदार्थ लेआउट के साथ कोड:

यहां बाएं और दाएँ तत्व (कक्षा "content__left" और "content__right" ) एक निश्चित चौड़ाई (पिक्सेल में) है: इसलिए गैर-तरल लेआउट कहा जाता है।

http://jsbin.com/qukocefudusu/1/edit?html,css,output पर लाइव डेमो

 <style> /* * [1] & [3] "floats" makes the 2 divs align themselves respectively right & left * [2] "overflow: auto;" makes this div take the remaining width */ .content { width: 100%; } .content__left { width: 100px; float: left; /* [1] */ background-color: #fcc; } .content__middle { background-color: #cfc; overflow: auto; /* [2] */ } .content__right { width: 100px; float: right; /* [3] */ background-color: #ccf; } </style> <div class="content"> <div class="content__left"> left div<br/>left div<br/>left div<br/>left div<br/>left div<br/>left div<br/> </div> <div class="content__right"> right div<br/>right div<br/>right div<br/>right div<br/> </div> <div class="content__middle"> middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br />bit taller </div> </div> 

द्रव लेआउट के साथ कोड:

यहां बाएं और दाएं तत्व (कक्षाएं "content__left" और "content__right" ) के साथ एक वैरिएबल चौड़ाई (प्रतिशत में) है, लेकिन न्यूनतम और अधिकतम चौड़ाई: इसलिए द्रव लेआउट कहा जाता है।

max-width गुणों के साथ एक तरल लेआउट में लाइव डेमो http://jsbin.com/runahoremuwu/1/edit?html,css,output

 <style> /* * [1] & [3] "floats" makes the 2 divs align themselves respectively right & left * [2] "overflow: auto;" makes this div take the remaining width */ .content { width: 100%; } .content__left { width: 20%; max-width: 170px; min-width: 40px; float: left; /* [1] */ background-color: #fcc; } .content__middle { background-color: #cfc; overflow: auto; /* [2] */ } .content__right { width: 20%; max-width: 250px; min-width: 80px; float: right; /* [3] */ background-color: #ccf; } </style> <div class="content"> <div class="content__left"> max-width of 170px & min-width of 40px<br />left div<br/>left div<br/>left div<br/>left div<br/>left div<br/>left div<br/> </div> <div class="content__right"> max-width of 250px & min-width of 80px<br />right div<br/>right div<br/>right div<br/>right div<br/> </div> <div class="content__middle"> middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br/>middle div<br />bit taller </div> </div> 

ब्राउज़र समर्थन

निम्न वेब ब्राउज़र पर BrowserStack.com पर परीक्षण किया गया:

  • आईई 7 से आईई 11
  • एफएफ 20, एफएफ 28
  • सफारी 4.0 (विंडोज एक्सपी), सफारी 5.1 (विंडोज़ एक्सपी)
  • क्रोम 20, क्रोम 25, क्रोम 30, क्रोम 33,
  • ओपेरा 20

फ्लेक्स-बक्से समाधान हैं – और वे शानदार हैं मैं एक दशक से सीएसएस के बाहर ऐसा कुछ चाहता हूं। आपको केवल जरूरत है display: flex जोड़ने के display: flex "मेन" और flex-grow: 100 display: flex लिए अपनी शैली को flex-grow: 100 (जहां 100 मनमाना है – यह ज़रूरी नहीं कि यह वास्तव में 100 है)। इस शैली को जोड़ने का प्रयास करें (प्रभाव को दिखाने के लिए जोड़ा गया रंग):

 <style> #Main { background-color: lightgray; display: flex; } #div1 { border: 1px solid green; height: 50px; display: inline-flex; } #div2 { border: 1px solid blue; height: 50px; display: inline-flex; flex-grow: 100; } #div3 { border: 1px solid orange; height: 50px; display: inline-flex; } </style> 

यहां फ्लेक्स बक्से के बारे में अधिक जानकारी: https://css-tricks.com/snippets/css/a-guide-to-flexbox/

फ्लेक्सबॉक्स समाधान

 .main { display: flex; } .col-1, .col-3 { width: 100px; } .col-2 { flex-grow: 1; } 
 <div class="main"> <div class="col-1" style="background: #fc9;">Left column</div> <div class="col-2" style="background: #eee;">Middle column</div> <div class="col-3" style="background: #fc9;">Right column</div> </div> 

हालांकि जवाब देने में bit देर हो चुकी है, यहां मार्जिन का उपयोग किए बिना एक वैकल्पिक तरीका है।

 <style> #divMain { width: 500px; } #div1 { width: 100px; float: left; background-color: #fcc; } #div2 { overflow:hidden; background-color: #cfc; } #div3 { width: 100px; float: right; background-color: #ccf; } </style> <div id="divMain"> <div id="div1"> div 1 </div> <div id="div3"> div 3 </div> <div id="div2"> div 2<br />bit taller </div> </div> 

यह विधि जादू की तरह काम करती है, लेकिन ये एक स्पष्टीकरण है:) \

एक समान नमूना के साथ बेलाल यहाँ।

डिवीवल को शेष स्थान लेना होगा एक वर्ग होना चाहिए .. अन्य divs आईडी हो सकते हैं, लेकिन उनके पास चौड़ाई होना चाहिए ..

सीएसएस :

 #main_center { width:1000px; height:100px; padding:0px 0px; margin:0px auto; display:block; } #left { width:200px; height:100px; padding:0px 0px; margin:0px auto; background:#c6f5c6; float:left; } .right { height:100px; padding:0px 0px; margin:0px auto; overflow:hidden; background:#000fff; } .clear { clear:both; } 

HTML :

 <body> <div id="main_center"> <div id="left"></div> <div class="right"></div> <div class="clear"></div> </div> </body> 

निम्नलिखित लिंक में कोड की कार्रवाई है, जो शेष क्षेत्र कवरेज समस्या को हल करना चाहिए।

jsFiddle

मैं विपरीत समस्या का हल ढूंढ रहा था जहां मुझे केंद्र में एक निश्चित चौड़ाई वाली डिवा और दोनों तरफ तरल पदार्थ की चौड़ाई की जरूरत थी, इसलिए मैं निम्नलिखित के साथ आया और सोचा कि मैं इसे यहां पोस्ट करूंगा क्योंकि किसी को इसकी आवश्यकता है।

HTML:

 <div id="wrapper"> <div id="center"> This is fixed width in the centre </div> <div id="left" class="fluid"> This is fluid width on the left </div> <div id="right" class="fluid"> This is fluid width on the right </div> </div> 

सीएसएस:

 #wrapper { clear: both; width: 100%; } #wrapper div { display: inline-block; height: 500px; } #center { background-color: green; margin: 0 auto; overflow: auto; width: 500px; } #left { float: left; } #right { float: right; } .fluid { background-color: yellow; width: calc(50% - 250px); } 

यदि #center तत्व की चौड़ाई बदल रही है तो आपको #center की चौड़ाई वाली संपत्ति को अपडेट करने की .fluid है:

 width: calc(50% - [half of center width]px);