2008-08-29 11 views
6

पर इनलाइन-ब्लॉक पर मुझे उम्मीद है कि निम्नलिखित नमूने में दो स्पैन टैग एक दूसरे के बगल में प्रदर्शित होंगे, इसके बजाय वे एक के नीचे एक प्रदर्शित करेंगे। अगर मैं वर्ग अवधि की चौड़ाई निर्धारित करता हूं। सीधे 49% तक वे एक दूसरे के बगल में प्रदर्शित होते हैं। मैं यह समझने में सक्षम नहीं हूं कि दाएं अवधि की तरह सही अवधि को धक्का दिया गया है, इसमें कुछ अदृश्य पैडिंग/मार्जिन है जो इसे 50% से अधिक लेता है। मैं इसे HTML टेबल का उपयोग किए बिना करने की कोशिश कर रहा हूं। कोई विचार?स्पैन

<html> 
<head> 
    <title>Test Page</title> 
    <style type='text/css'> 
     * { 
      margin: 0; 
     } 

     html,body{ 
      margin:0; 
      padding:0; 
      height:100%; 
      width:100%; 
      border:none; 
     } 

     div.header{ 
      width:100%; 
      height:80px; 
      vertical-align:top; 
     } 

     span.left { 
      height:80px; 
      width:50%; 
      display:inline-block; 
      background-color:pink; 
     } 

     span.right { 
      vertical-align:top; 
      display:inline-block; 
      text-align:right; 
      height:80px; 
      width:50%; 
      background-color:red; 
     } 
    </style> 
</head> 
<body> 
    <div class='header'> 
     <span class='left'>Left Span 50% width</span> 
     <span class='right'>Right Span 50% width</span> 
    </div> 
</body> 
</html> 

स्पष्टीकरण के लिए धन्यवाद। फ्लोट: एफएफ 3.1 में अपेक्षित परिणामों के साथ खूबसूरती से काम करता है। दुर्भाग्यवश, आईई 6 में दायीं ओर अवधि 50% का 50% प्रस्तुत करती है, असल में यह ब्राउज़र विंडो के 25% की चौड़ाई देती है। अपनी चौड़ाई को 100% तक सेट करना वांछित परिणाम प्राप्त करता है लेकिन एफएफ 3.1 में टूट जाता है जो मानक अनुपालन मोड में है और मैं इसे समझता हूं। हैक्स का सहारा या जोड़ने एकाधिक सीएसएस पत्रक एक चुनौती का उपयोग कर रहा है

+0

आईई 6 का समर्थन क्यों करें? http://www.ie6nomore.com/ – jrummell

उत्तर

3
float: left; 

प्रयास के बिना एफएफ और IE 6, दोनों में काम करने के लिए यह हो रही है कि span.left को

यह यह करने के लिए फ्लोट करने के लिए कारण होगा बाएं (वाक्यविन्यास द्वारा सुझाए गए अनुसार)।


मैं किसी भी तरह से एक सीएसएस विशेषज्ञ नहीं हूँ तो यह रूप में unarguable तथ्य नहीं लेते हैं तो कृपया लेकिन मुझे लगता है कि जब कुछ जारी है, यह इसके नीचे चीजों की ऊर्ध्वाधर स्थिति में कोई फर्क नहीं पड़ता।

यदि आप दाईं ओर span.right को फ़्लोट करते हैं तो उनके नीचे टेक्स्ट जोड़ें, आपको इन "दिलचस्प परिणाम" को रोकने के लिए कुछ दिलचस्प परिणाम मिलना चाहिए, जिन्हें आप "स्पष्ट: बाएं/दाएं/दोनों" का उपयोग कर सकते हैं जो ब्लॉक का कारण बनेंगे बाएं/दाएं/दोनों के लिए तैरने वाली किसी भी चीज़ के नीचे स्पष्ट स्टाइल के साथ। W3Schools इस संपत्ति पर एक पेज भी है।

और स्टैक ओवरफ्लो में आपका स्वागत है।

+0

फ़्लोट जोड़ने के त्वरित उत्तर के लिए धन्यवाद: बाएं ने एक दूसरे के बगल में 2 स्पैन प्रस्तुत किए हैं। हालांकि मुझे समझ में नहीं आता कि क्यों फ्लोट के बिना स्पैन को धक्का दिया जाता है। क्या इसे धक्का देता है? – rams

+0

अवधि की ऊंचाई यह है कि उसने इसे मेरे लिए क्यों धक्का दिया, और आपका कारण भी बहुत अच्छा रहा। – Johannes

1

मैं इस हैक पसंद नहीं है लेकिन यह दोनों फ़ायरफ़ॉक्स और IE6 में काम करने के लिए लगता है:

span.right { 
    vertical-align:top; 
    display:inline-block; 
    text-align:right; 
    height:80px; 
    width:50%; 
    *width:100%; 
    background-color:red; 
} 

नोट *width: 100% जो और IE6 के आवश्यकता को पूरा करने लगता है फ़ायरफ़ॉक्स द्वारा नजरअंदाज कर दिया जाता है।

2

ऐसा इसलिए है क्योंकि इनलाइन और इनलाइन-ब्लॉक में तत्वों के बीच व्हाइटस्पेस (आपके मामले में लाइन ब्रेक) शामिल है। आपके मामले में तत्वों की संयुक्त चौड़ाई 50% + 50% + व्हाइटस्पेस> 100% है।

आप या तो अपने HTML दस्तावेज़ में एक ही पंक्ति पर दो तत्वों रखना चाहिए (अंतरिक्ष के बिना)

<div class='header'> 
    <span class='left'>Left Span 50% width</span><span class='right'>Right Span 50% width</span> 
</div> 

या का उपयोग एचटीएमएल टिप्पणी

<div class='header'> 
     <span class='left'>Left Span 50% width</span><!-- 
    --><span class='right'>Right Span 50% width</span> 
</div> 

मैं अपने आप को बाद के पसंद करते हैं।