2012-02-08 12 views
25

वेब पेजों के साथ मेरे पास एक आम समस्या है जो उनके कंटेनर के बाहर निकलने वाली तरफ बहती है।क्यों ओवरफ्लो छुपा स्टॉप फ़्लोटिंग तत्व अपने कंटेनर से बचते हैं?

#wrapper{ 
    border:1px solid red; 
} 

#wrapper div{ 
    float:left; 
    font-size: 3em; 
} 
... 
<div id="wrapper"> 
    <div>Hello World</div> 
</div> 

लाइव उदाहरण:

एक बहुत neater समाधान मैंने देखा है आवरण divs की स्थापना है: http://jsfiddle.net/ugUVa/1/

रहे हैं गंदा तरीके का एक बहुत यह (दोनों स्पष्ट साथ एक div डालने) ठीक करने के लिए अतिप्रवाह शैली के लिए छिपा हुआ:

उदाहरण: http://jsfiddle.net/ugUVa/2/

यह ब्राउज़रों में अच्छी तरह से काम अच्छा और सफाई से कोई अतिरिक्त मार्कअप के साथ। मैं खुश हूं, लेकिन मुझे नहीं पता कि यह क्यों काम करता है!

सभी प्रलेखन मैं पर ध्यान दिया है इंगित करता है अतिप्रवाह: छिपा सामग्री छिपा, अपने बच्चों को फिट करने के एक माता पिता का आकार बदलने के लिए नहीं है ...

किसी को भी इस व्यवहार के लिए एक स्पष्टीकरण दे सकते हैं?

धन्यवाद

+8

एक बार तत्व को फ़्लोट करने के बाद, इसे गणना के आकार के लिए दस्तावेज़ प्रवाह से अनिवार्य रूप से हटा दिया जाता है। चूंकि कंटेनर अब "खाली" है, इसलिए यह न्यूनतम अनुमत आकार तक सीमित हो जाता है। समाशोधन तत्व जोड़ना, या ओवरफ्लो सेट करना कंटेनर को आकार देने के लिए अंदर सब कुछ मानने के लिए मजबूर करता है, जिसमें फ्लोट किए गए तत्व शामिल हैं जिन्हें अन्यथा अनदेखा किया जाएगा। –

+0

@MarcB एक उत्तर होना चाहिए। – Christoph

+1

मुझे पता है कि आप एक स्पष्टीकरण की तलाश में हैं, न कि एक फिक्स, लेकिन आप clearfix हैक का भी उपयोग कर सकते हैं। असल में 'स्पष्ट: दोनों;' div के समान, लेकिन कोई अतिरिक्त मार्कअप के साथ। मेरा उदाहरण देखें: http://jsfiddle.net/TheNix/fSBhT/ और उस पर एक लेख: http://nicolasgallagher.com/micro-clearfix-hack/ – Nix

उत्तर

20

यह एक block formatting context पैदा करता है।

ब्लॉक स्वरूपण संदर्भ स्थिति के लिए ब्लॉक स्वरूप (फ्लोट देखें) और साफ़ करने (स्पष्ट देखें) के लिए महत्वपूर्ण हैं। की स्थिति के लिए नियम और फ्लोट की समाशोधन केवल उसी ब्लॉक स्वरूपण संदर्भ के भीतर ही लागू होती है। फ़्लोट अन्य ब्लॉक स्वरूपण संदर्भों में चीजों के लेआउट को प्रभावित नहीं करते हैं, और केवल उसी ब्लॉक प्रारूपण संदर्भ में पिछले फ़्लोट को साफ़ करता है।

यह भी देखें: http://www.w3.org/TR/CSS2/visuren.html#block-formatting

4

यह सही है कि overflow शैली क्या सामग्री ढेर होता है उसे नियंत्रित करने का इरादा है है।

फ़्लोटिंग तत्वों पर प्रभाव overflow शैली का एक दुष्प्रभाव है जो तत्व के लिए ब्लॉक स्वरूपण संदर्भ बना रहा है।

जब आप युक्त तत्व के लिए आकार निर्दिष्ट नहीं करते हैं, तो ब्लॉक स्वरूपण संदर्भ में उसके तत्वों के आकार से इसका आकार मिलता है, इसलिए वह तत्व है जिसमें तत्व शामिल होता है।

+0

बिल्कुल।मुझे यह जोड़ना चाहिए कि फ्लोटिंग फ्लोट्स और 'ओवरफ्लो' का उपयोग करने के बीच एक सूक्ष्म अंतर है। [इस उत्तर] का दूसरा भाग देखें (http://stackoverflow.com/a/6482054/106224)। – BoltClock

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