2009-03-31 24 views
5

में तालिका सेल और सीमा अलग-अलग प्रदर्शित होती है निराशा के कई घंटों के बाद मैं अंततः उत्तर के लिए इंटरनेट पर बदल गया। कोड के इस अत्यंत सरल टुकड़ा कल्पना कीजिए:आईई/क्रोम और फ़ायरफ़ॉक्स/ओपेरा

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html> 
    <head> 
     <title>AARRRRRRGH</title> 
    </head> 
    <body> 
     <table> 
      <tr> 
       <td style="width: 100px; height: 100px; background: #000000; padding: 0px; border: 6px solid #FF0000;"></td> 
      </tr> 
     </table> 
    </body> 
</html> 

अब इस बिल्कुल स्पष्ट लगता है, एक मेज सेल 100px चौड़े और 100px एक 6px सीमा के साथ उच्च पैदा करते हैं। जैसा लगता है उतना सरल, यह विभिन्न ब्राउज़रों में अलग दिखता है। आईई 8 और गूगल क्रोम में टेबल सेल 112 x 112 पीएक्स है (इसलिए अंदर 100 पीएक्स और 6 पीएक्स)। फ़ायरफ़ॉक्स 3 और ओपेरा में तालिका 112 x 100 पीएक्स है (इसलिए किसी कारण से सीमा को तालिका चौड़ाई में जोड़ा जाता है लेकिन तालिका की ऊंचाई पर नहीं)।

गंभीरता से, क्या देता है? और मैं इसे प्रत्येक ब्राउज़र पर कैसे प्रस्तुत कर सकता हूं (और नहीं, मैं इस मामले में किसी तालिका का उपयोग करने के लिए एक div का उपयोग नहीं कर सकता)।

उत्तर

7

गंभीरता से, क्या देता है?

हाँ ... टेबल सेल ऊंचाई और ऊर्ध्वाधर सीमा सीएसएस 2.1 विनिर्देश में वास्तव में काफी बीमार है। ऐसा कुछ भी नहीं है जो पूरी तरह से बताता है कि वे कैसे बातचीत करते हैं, और मानक ब्लॉक मॉडल इसे काफी कवर नहीं करता है। धारा 17.6.1 में यह आंकड़ा जहां वे चौड़ाई की परिभाषा को स्पष्ट रूप से प्रदर्शित करते हैं, वह ऊंचाई को कवर नहीं करता है।

FWIW मुझे नहीं लगता कि मोज़िला/ओपेरा की व्याख्या किसी भी समझ में आता है, लेकिन मैं यह नहीं कह सकता कि यह बाहर और बाहर गलत है।

मैं इसे प्रत्येक ब्राउज़र पर कैसे प्रस्तुत कर सकता हूं (और मैं इस मामले में किसी तालिका का उपयोग करने के लिए मुझे एक div का उपयोग नहीं कर सकता)।

तालिका के अंदर एक div के बारे में कैसे?

<td style="width: 100px; background: black; padding: 0; border: 6px solid red;"> 
    <div style="height: 100px;">...</div> 
</td> 

अब यह स्पष्ट है कि '100px' का माप किस माप से है। यह मेरे लिए काम करता है।

+0

हाँ, जिसने मेरी समस्या हल की है। मैंने इस समाधान को पहले से अलग किया है क्योंकि कुछ एनीमेशन समस्याओं की वजह से एक अलग स्थिति में लिपिक है।इस स्थिति में यह हालांकि काम करता है :) –

0

क्या आपने अन्य डॉक्टरों की कोशिश की है? मैं के साथ अच्छी किस्मत पड़ा है:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
+0

मैंने अभी उपरोक्त कोड में कार्यप्रणाली को प्रतिस्थापित करने का प्रयास किया है ... कोई सफलता –

0

मैं इसे एक छोटे के साथ चारों ओर गड़बड़ है, और कुछ चीज़ें, एक साथ कि उन्हें दो बातें IE7 और फ़ायरफ़ॉक्स 2 में मेरे लिए एक जैसे दिखाई डाल दिया, देखते हैं मैं करना था:

ए) display:block जोड़ें; टेबल सेल के लिए शैली में (फ़ायरफ़ॉक्स ने सेल की ऊंचाई को उसी तरह प्रस्तुत किया जैसा आईई ने किया था);

बी) सेल में एक गैर-ब्रेकिंग स्पेस जोड़ा गया (अन्यथा आईई ने सीमाओं को प्रदर्शित नहीं किया)।

मेरे पास IE8 या फ़ायरफ़ॉक्स 3 लोड नहीं है, लेकिन आप इसे आज़मा सकते हैं। सुनिश्चित नहीं है कि डिस्प्ले को ब्लॉक में बदलने के लिए कोई दुष्प्रभाव हैं, लेकिन यह समस्या हल करता है।

+0

'डिस्प्ले: ब्लॉक' सेल को आईई के अलावा अन्य ब्राउज़रों में टेबल सेल के रूप में माना जा रहा है, इसलिए कोई भी अन्य कक्ष लेआउट को अलग कर देगा । – bobince

+0

क्या आपने वास्तव में इसे सत्यापित किया है, या बस मानते हैं? मैं इसे फ़ायरफ़ॉक्स 2 में देख रहा हूं, और यह मेरे लिए किसी भी अन्य टेबल सेल की तरह दिखता है। – patmortech

+0

nbsp IE में खाली तालिका कक्षों के लिए केवल आवश्यक है (अन्यथा यह कोई सेल नहीं है) – borrel

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