2011-03-14 10 views
6

मेरे पास एक मूल div है जो समान रूप से आकार वाले बाल divs की एक चर संख्या के साथ बाईं ओर तैरता है। मैं माता-पिता को बच्चों की चौड़ाई तक विस्तार करना चाहता हूं, इससे कोई फर्क नहीं पड़ता कि क्या इसका मतलब है कि इसका स्वयं का कंटेनर बह रहा है।अपने फ्लोट किए गए बच्चों को फिट करने के लिए क्षैतिज रूप से एक पैरेंट div का विस्तार

क्या यह स्वाभाविक रूप से HTML/CSS के साथ ऐसा करने का कोई तरीका है?

उदाहरण (खींचे div 180px विस्तृत किया जा रहा है हवा होगा):

HTML:

<div id="stretchable-div"> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    ... 
</div 

सीएसएस:

.child { 
    width: 60px; 
    height: 60px; 
    float:left; 
} 
+0

क्या आप यह समझने के लिए तैयार हुए कि यह कैसे करें? –

+0

ठीक है, ऐसा लगता है कि ऐसा करने का सबसे आसान तरीका यह है कि जावास्क्रिप्ट का उपयोग कंटेनर तत्व की चौड़ाई को गतिशील रूप से बढ़ाने/घटाने के लिए किया जा सकता है, जिसमें माता-पिता के साथ अतिप्रवाह होता है। –

उत्तर

5

इस उदाहरण खींचे-div तत्व अपनी मूल से बाहर खराब होगा, और करने के लिए खिंचाव में अपनी बच्चे।

Live Demo

सीएसएस

#parent{ 
    width:200px; 
    height:180px; 
    background:red; 
} 

#stretchable-div{ 
    background:blue; 
    position: absolute; 
} 

.child { 
    width: 60px; 
    height: 60px; 
    float:left; 
} 

मार्कअप

<div id="parent">Im a parent 
    <div id="stretchable-div"> 
     <div class="child">a</div> 
     <div class="child">b</div> 
     <div class="child">c</div> 
     <div class="child">c</div> 
     <div class="child">c</div> 
     <div class="child">c</div> 
     <div class="child">c</div> 
    </div> 
</div> 
+0

@ लोकेटर- धन्यवाद, लेकिन मेरे पास दो प्रश्न हैं- अपने उदाहरण के मेरे संशोधित संस्करण को देखें: http://jsfiddle.net/seB5F/12/ 1) जब मैं अधिक तत्व जोड़ता हूं, या पूर्ण div दाएं तरफ धक्का देता हूं, तत्व फ्रेम के किनारे के खिलाफ लपेटना शुरू करें। 2) मैंने अतिप्रवाह भी जोड़ा: पैरेंट div को छुपाया, लेकिन फिर भी सभी खिंचाव div देखें। मेरे पास चौड़ाई के लिए खिंचाव div खिंचाव क्यों नहीं हो सकता है, किसी भी अतिप्रवाह छिपा हुआ है? क्या आप इसे समझा सकते हैं? – Yarin

+0

पहले प्रश्न का उत्तर देने के लिए ठीक है, इसकी वजह से स्थिति पूर्ण है, इसे दस्तावेज़ प्रवाह से बाहर ले जाती है, इसलिए क्यों ओवरफ्लो का विस्तार करने योग्य div पर कोई प्रभाव नहीं पड़ता है, इसे रिश्तेदार में बदल दिया जाता है और इसके छिपे हुए – Loktar

+0

@ लोकतर- आपने मेरे प्रश्न का उत्तर दिया, लेकिन मुझे अभी भी एक समस्या है- मैं चाहता हूं कि अतिप्रवाह छिप जाए। ऐसा करने के लिए मुझे कंटेनर स्थिति बनाने की आवश्यकता है: सापेक्ष, लेकिन इससे सामग्री को लपेटने का कारण बनता है। कोई विचार? – Yarin

1

आप display: inline-block; के लिए जोड़ सकते हैं मूल तत्व Ie7 में काम करने के लिए आपको इसके बजाय display:inline;zoom:100%; का उपयोग करने की आवश्यकता है।

तो आप क्या जरूरत के लिए एक संभावित सीएसएस यह है:

#stretchable-div { 
    background: none repeat scroll 0 0 red; 
    display: inline-block; 
    overflow: auto; /* clear the floats */ 
    *display:inline; /* ie7 hack even better use conditional comment */ 
    zoom:100%; 
} 

उदाहरण:http://jsfiddle.net/8JJSf/

+0

@ सॉटिरिस- धन्यवाद, लेकिन आपका उदाहरण माता-पिता div को इसके कंटेनर को बहने की अनुमति नहीं देगा। Http://jsfiddle.net/8JJSf/4/ देखें। – Yarin

+0

@Yarin सही, कंटेनर को ओवरफ़्लो करने के लिए इसे '# stretchable-div' – Sotiris

+0

@ Sotiris- हां जो काम करता है, के लिए' स्थिति: पूर्ण 'की आवश्यकता है, लेकिन फिर आपको डिस्प्ले की आवश्यकता नहीं होगी: ब्लॉक-इनलाइन, है ना? – Yarin

3

वैसे ही जैसे @ पिज्ज़ीकाटो के उदाहरण है, लेकिन का उपयोग कर overflow:hidden पैरेंट div: http://jsfiddle.net/dSjv4/ को साफ़ करने के लिए।

ए सूची के अलावा here (लेख के अंत के पास) पर स्थिति निर्धारण और समाशोधन के बारे में एक शानदार लेख है।

+0

@ नाथन- धन्यवाद, लेकिन आपका उदाहरण माता-पिता div को इसके कंटेनर को बहने की अनुमति नहीं देगा। Http://jsfiddle.net/dSjv4/14/ देखें – Yarin

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