2009-08-07 15 views
8

संपादित है: यह केवल IE8 में होता है, यह IE7, फ़ायरफ़ॉक्स, ओपेरा आदिIE8 - मार्जिन टॉप के साथ कंटेनर: 10px कोई मार्जिन

सबसे पहले में ठीक काम करता है, यहाँ एक तस्वीर मैं में फ़ोटोशॉप बना दिया है मेरी समस्या का प्रदर्शन करने के लिए: http://richardknop.com/pict.jpg

अब आपको मेरे मुद्दे के बारे में विचार होना चाहिए। यहाँ मार्कअप मैं उपयोग कर रहा हूँ का एक सरलीकृत संस्करण (मैं सबसे अप्रासंगिक सामग्री बाहर छोड़कर चला गया):

<div class="left"> 
    <div class="box"> 
     // box content 
    </div> 
    <div class="box"> 
     // box content 
    </div> 
    <div class="box"> 
     // box content 
    </div> 
</div> 
<div class="right"> 
    <div class="box"> 
     // box content 
    </div> 
    <div class="box"> 
     // box content 
    </div> 
    <div class="box"> 
     // box content 
    </div> 
</div> 
<div class="clear"></div> 
<div class="box"> 
    // 
    // NOW THIS BOX HAS NO TOP MARGIN 
    // 
</div> 
<div class="box"> 
    // box content 
</div> 

और सीएसएस शैलियों इस तरह जाना:

.clear { 
    clear: both; 
} 
.left { 
    float: left; 
} 
.right { 
    float: right; 
} 
.box { 
    overflow: auto; 
    margin-top: 10px; 
} 

जाहिर है मैं सभी irreevant शैलियों की तरह बाहर छोड़ दिया है सीमाओं, पृष्ठभूमि रंगों और छवियों, फ़ॉन्ट आकार आदि। मैंने केवल महत्वपूर्ण चीजें रखी हैं।

कोई विचार जहां समस्या हो सकती है?

+0

क्या आपके पास एक DOCTYPE सेट है (उदा। क्या आप IE8 मानकों मोड में चल रहे हैं? या quirks?) – scunliffe

+0

हाँ, मेरे पास है:

+0

मैं विस्तार से आपकी समस्या को देखा नहीं है, लेकिन आश्चर्य है कि क्या यह कारण हो सकता मार्जिन गिर जैसे http://www.andybudd.com/archives/2003/11/no_margin_for_error/ – ChrisW

उत्तर

9

देखें कि padding-top: 10px काम करता है या नहीं। यह हो सकता है कि मार्जिन पृष्ठ के शीर्ष से जाने का प्रयास कर रहा है।

+0

मैं गद्दी-टॉप उपयोग नहीं कर सकते: 10px; क्योंकि बक्से पहले से ही पृष्ठभूमि रंग है और वे पहले से ही गद्दी है: 10px तो उन्हें अंदर सामग्री ।।। लग रहा है बेहतर –

+6

प्रयास स्पष्ट div करने के लिए ''   की तरह एक पूरक जोड़ने मुझे याद है कि कुछ पुराने संस्करण है कि इस तरह की सामग्री की जरूरत में एक बग था – Justin

+0

  जोड़ना समस्या हल :) मैं सिर्फ भी ऊंचाई को जोड़ने के लिए किया था: 0 ; .clear वर्ग के लिए –

1

अपना स्पष्ट div बंद करने का प्रयास करें।

<div class="clear"></div> 
+0

यह एक मुद्दा है, लेकिन मुद्दा नहीं। बॉक्स div में 'clear' क्लास जोड़ना अभी भी कुछ भी साफ़ करेगा। – Justin

+0

मैं इसे यहां बंद करना भूल गया, यह स्रोत कोड में बंद है। मैंने अपनी पोस्ट संपादित की। –

1

मैं काफी इस दृष्टिकोण नहीं मिलता है। आप कक्षा के साथ <div> एस को दाएं और <div> में छोड़कर overflow: hidden, width: 100% पर लागू कर सकते हैं ताकि नीचे दिए गए तत्वों को नीचे से प्रदर्शित किया जा सके।

+0

हां लेकिन मैं न्यूनतम मार्कअप रखना पसंद करता हूं और केवल इतना आवश्यक divs का उपयोग करता हूं जो बिल्कुल जरूरी हैं। यह सिर्फ एक और तत्व जोड़ देगा जिसमें कोई अर्थपूर्ण अर्थ नहीं है जो स्टाइल के लिए भी आवश्यक नहीं है। –

+1

@ रिचर्ड, मैं कहूंगा कि

 
बिल्कुल वही है। और व्यक्तिगत रूप से मैं अतिप्रवाह समाधान का चयन करूंगा, क्योंकि HTML बेहतर दिखता है। लेकिन वह मैं हूँ। – dalizard

1

enter code here अतिप्रवाह वाले चौड़ाई वाले कंटेनर का उपयोग करने का प्रयास करें: फ़्लोटेड divs के चारों ओर छिपा हुआ है, और साफ़ div को हटा दें।

<div id="container"> 
     <div class="left">  
      <div class="box">  // box content </div>  
      <div class="box">  // box content </div>  
      <div class="box">  // box content </div> 
     </div> 
     <div class="right">  
      <div class="box">  // box content right </div>  
      <div class="box">  // box content </div>  
      <div class="box">  // box content </div> 
     </div> 
    </div> 
    <div class="box"> // // NOW THIS BOX HAS NO TOP MARGIN //</div> 
<div class="box"> // box content</div> 

और सीएसएस

#container { width: 100%; overflow: hidden; } 

(माफ करना, मैं IE7 मेरे काम मशीन पर परीक्षण के लिए तो मैं पुष्टि नहीं कर सकते छोड़ दिया)

+0

और जोड़ने अतिप्रवाह: छिपा हुआ है और यह :-) – dalizard

+0

सही काम करेंगे, बस मुझे उस करने की प्रक्रिया में पकड़ा! – ScottE

6

मुझे लगता है कि यह एक IE8 बग है। एक फ्लोट बाएं और दाएं div के एक भाई तत्व से संबंधित है। समाशोधन div के साथ या बिना, अंतिम unfloated तत्व आईई 8 में अपने शीर्ष मार्जिन खो देता है।

हम इस परीक्षण किया है, और केवल IE8 यह गलत हो जाता है:

http://www.inventpartners.com/content/ie8_margin_top_bug

हम भी 3 समाधान के साथ आया था।

+0

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

+0

दिलचस्प। मैंने ऐसा नहीं सोचा था। आईई 8 स्पष्ट रूप से गेको की तुलना में मार्जिन पतन पर बहुत कठोर है। IE8 में छिपकली जो बेहतर (अलग ढंग से) प्रदान की गई है में तालिका मुझे लगता है इन मार्जिन पतन विसंगतियों से काफी कुछ अधिक है, जिसमें HTML डेवलपर ऊपर ट्रिपिंग हो जाएगा वहाँ हो जाएगा: मैं पहले से ही पहले से प्रदर्शन के साथ एक और मार्जिन पतन मुद्दे के बारे में लिखा है आने वाले महीनों! –

+0

हाय बुटी-ऑक्सा - मैंने इस समस्या के आपके विश्लेषण का विवरण देने वाले मेरे लेख में एक फुटनोट जोड़ा है। उम्मीद है कि ठीक है। अगर आप मुझे इसे बदलना चाहते हैं तो मुझे बताएं। –

0

मेरे पास आईई 8 नहीं है ... लेकिन क्या आपने स्पष्ट जोड़ने की कोशिश की: दोनों नीचे div में और शीर्ष फ्लोट में से एक को नीचे मार्जिन जोड़ना? मुझे पूरा यकीन है कि बिना किसी अतिरिक्त divs के एक ही प्रभाव प्राप्त होगा।

1

मुझे ऐसी ही समस्याएं हैं, और मैट ब्रैडली द्वारा प्रदान किए गए समाधान मेरे लिए काम नहीं करते थे (लेकिन इसे पोस्ट करने के लिए धन्यवाद!)। मैं मार्जिन टॉप होना चाहता था: एच 1 तत्व पर 10 पीएक्स।

जिस समाधान के साथ मैं आया था वह स्थिति जोड़कर था: सापेक्ष, शीर्ष: 10 पीएक्स और मार्जिन-टॉप: 0 पीएक्स एच 1 तत्व में।

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

  • कोई संबंधित समस्या नहीं^_^