मैं भ्रम की स्थिति को समाप्त करने के लिए प्रयास करें:
ul
एक ब्लॉक-स्तर तत्व है जैसा कि p
तत्व है (वे मूल चौड़ाई के 100% तक फैले हैं)। यही कारण है कि प्रति डिफ़ॉल्ट p
ul
के नीचे दिखाई देगा यदि उन तत्वों पर कोई चौड़ाई या प्रदर्शन घोषित नहीं किया गया है।
अब आपके उदाहरण में ul
में केवल फ़्लोट किए गए तत्व हैं। यह 0px
की ऊंचाई पर गिर जाता है (हालांकि इसमें अभी भी 100% चौड़ाई है जैसा कि आप उदाहरण में देख सकते हैं)। आसन्न p
फ्लोट li
एस के दाईं ओर दिखाई देगा क्योंकि उन्हें सामान्य फ़्लोट किए गए तत्व माना जाता है।
अब घोषित overflow
(किसी भी visible
के अलावा अन्य मूल्य) एक नई block formatting context है, जो बनाता है ul
अपने बच्चों में शामिल है स्थापित करता है। अचानक ul
"फिर से दिखाई देता है", आकार 0px
आकार नहीं है। p
नीचे धक्का दिया जा रहा है। आप उसी "समाशोधन" प्रभाव को प्राप्त करने के लिए position:absolute
भी घोषित कर सकते हैं (साइड इफेक्ट के साथ अब ul
सामान्य तत्व प्रवाह से बाहर निकाला जाता है - p
एस ul
द्वारा ओवरलैप किया जाएगा।)
See the example fiddle
आप तकनीकी सामान में कर रहे हैं, की तुलना सीएसएस कल्पना की अनुसार पैराग्राफ:
§10.6.3 Block-level non-replaced elements in normal flow when 'overflow' computes to 'visible'
और
§10.6.7 'Auto' heights for block formatting context roots। (लिंक खोदने के लिए बोल्टक्लॉक के लिए धन्यवाद)।
ul{
list-style-type:none;
margin:0; padding:0;
background-color:#dddddd;
border:2px solid red;
}
li{
float:left;
}
a{
display:block;
width:60px;
background-color:#555;
color:white;
}
p{
margin:0;
outline:2px dotted blue;
}
#two{
clear:both;
overflow:hidden;
}
No overflow:
<ul>
<li><a href="#home">Home</a></li>
<li><a href="#news">News</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#about">About</a></li>
</ul>
<p>Notice the collapsed ul - no background-color visible, collapsed border and this paragraph treats the lis as regular floats </p>
<br>
With overflow: hidden
<ul id="two">
<li><a href="#home">Home</a></li>
<li><a href="#news">News</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#about">About</a></li>
</ul>
<p>the ul reappeared - it now contains the child li's - the float is cleared</p>
+1 अंततः एक बेहतर उत्तर;) ध्यान दें कि कारण * 'ul' की शून्य ऊंचाई है जब उसके बच्चे तैरते हैं क्योंकि माता-पिता की ऊंचाई गणना फ्लोट को अनदेखा करती है क्योंकि माता-पिता सामान्य प्रवाह में नहीं होते हैं यदि माता-पिता कोई नहीं बनाते हैं उनके लिए बीएफसी। तुलना करें [§10.6.3 'ओवरफ्लो' 'दृश्यमान' की गणना करते समय सामान्य प्रवाह में ब्लॉक-स्तर गैर-प्रतिस्थापित तत्वों की तुलना करें] (http://www.w3.org/TR/CSS21/visudet.html#normal-block) के साथ [ब्लॉक स्वरूपण संदर्भ जड़ों के लिए §10.6.7 'ऑटो' ऊंचाई] (http://www.w3.org/TR/CSS21/visudet.html#root-height) – BoltClock
@ बोल्टक्लॉक उत्कृष्ट, मैं इन अनुच्छेदों की तलाश में था। साझा करने के लिए धन्यवाद! मैं उन्हें जवाब में जोड़ दूंगा। – Christoph