क्या @BoltClock का उल्लेख किया है बहुत ठोस हैं। और यहाँ मैं सिर्फ इस समस्या के लिए कई और समाधान जोड़ना चाहता हूं। इस w3c_collapsing मार्जिन की जाँच करें । हरे रंग के हिस्से संभावित विचार हैं कि इस समस्या को कैसे हल किया जा सकता है।
समाधान 1
फ्लोट किए गए बॉक्स और किसी अन्य बॉक्स के बीच का मार्जिन नहीं गिरता है (फ्लोट और उसके इन-फ्लो बच्चों के बीच भी नहीं)।
इसका मतलब है कि मैं या float:left
तो जोड़ सकते हैं #outer
या#inner
demo1 ।
यह भी देखें कि float
auto
मार्जिन में अमान्य होगा ।
समाधान २
नए ब्लॉक फॉरमेटिंग कॉन्टेक्ट्स (जैसे कि फ्लोट्स और 'दिखाई' के अलावा 'के साथ एलिमेंट) स्थापित करने वाले तत्वों के मार्जिन उनके इन-फ्लो बच्चों के साथ नहीं गिरते हैं।
के अलावा visible
, चलो में डाल overflow: hidden
दिया #outer
। और इस तरह से बहुत सरल और सभ्य लगता है। मुझें यह पसंद है।
#outer{
width: 500px;
height: 200px;
background: #FFCCCC;
margin: 50px auto;
overflow: hidden;
}
#inner {
background: #FFCC33;
height: 50px;
margin: 50px;
}
समाधान 3
बिल्कुल तैनात बक्सों का मार्जिन गिरता नहीं है (अपने इन-फ्लो बच्चों के साथ भी नहीं)।
#outer{
width: 500px;
height: 200px;
background: #FFCCCC;
margin: 50px auto;
position: absolute;
}
#inner{
background: #FFCC33;
height: 50px;
margin: 50px;
}
या
#outer{
width: 500px;
height: 200px;
background: #FFCCCC;
margin: 50px auto;
position: relative;
}
#inner {
background: #FFCC33;
height: 50px;
margin: 50px;
position: absolute;
}
इन दो तरीकों के सामान्य प्रवाह को तोड़ देगा div
समाधान ४
इनलाइन-ब्लॉक बॉक्स के मार्जिन गिरते नहीं हैं (उनके प्रवाह वाले बच्चों के साथ भी नहीं)।
@enderskill जैसा ही है
समाधान 5
एक इन-फ्लो ब्लॉक-स्तरीय तत्व का निचला मार्जिन हमेशा अपने अगले इन-फ्लो ब्लॉक-स्तरीय सिबलिंग के शीर्ष मार्जिन के साथ गिरता है, जब तक कि भाई-बहन के पास मंजूरी न हो।
इस सवाल के साथ काम करने के लिए बहुत कुछ नहीं है क्योंकि यह भाई-बहन के बीच का मामूली अंतर है। आम तौर पर इसका मतलब है कि अगर एक टॉप-बॉक्स है margin-bottom: 30px
और एक सिबलिंग-बॉक्स है margin-top: 10px
। उनके बीच कुल मार्जिन 30px
इसके बजाय है 40px
।
समाधान 6
एक इन-फ्लो ब्लॉक एलिमेंट का टॉप मार्जिन उसके पहले इन-फ्लो ब्लॉक-लेवल बच्चे के टॉप मार्जिन के साथ गिर जाता है अगर एलिमेंट में कोई टॉप बॉर्डर, कोई टॉप पैडिंग नहीं है, और बच्चे के पास कोई क्लीयरेंस नहीं है।
यह बहुत दिलचस्प है और मैं सिर्फ एक शीर्ष सीमा रेखा जोड़ सकता हूं
#outer{
width: 500px;
height: 200px;
background: #FFCCCC;
margin: 50px auto;
border-top: 1px solid red;
}
#inner {
background: #FFCC33;
height: 50px;
margin: 50px;
}
और इसके अलावा <div>
डिफ़ॉल्ट रूप से ब्लॉक-स्तर है, इसलिए आपको इसे उद्देश्य से घोषित करने की आवश्यकता नहीं है। मेरी नौसिखिया प्रतिष्ठा के कारण 2 से अधिक लिंक और चित्र पोस्ट नहीं कर पाने के लिए क्षमा करें। कम से कम आप जानते हैं कि समस्या अगली बार आपको कुछ समान दिखाई देती है।