2012-01-04 17 views
5

मैं एक छोटे से 2-फलक display:table का उपयोग कर लेआउट कर रहा हूँ। रिक्ति के लिए (पृष्ठभूमि छवि से भी), मैं padding का उपयोग करता हूं। मैं बच्चों की जरूरत के रूप में एक सटीक width:50% उपलब्ध स्थान से है करने के लिए (मूल div की गद्दी के लिए संबंध लेने), मैं box-sizing:border-box का उपयोग करें।क्रोम बनाम बॉक्स-आकार: प्रदर्शन में सीमा-बॉक्स: तालिका

यह ओपेरा में ठीक काम करता है, लेकिन क्रोम में box-sizing:border-box या यहां तक ​​कि -webkit-box-sizing:border-box को चुपचाप अनदेखा किया जाता है।

मैं एक डेमो जो मुद्दे से पता चलता कर दिया। दो लाल बक्से वर्ग होना चाहिए और नीले बॉक्स में चौड़ाई और ऊंचाई 200px होना चाहिए:

<div id="table"> 
    <div id="left"> 
     Something on the left side 
    </div>  
    <div id="right"> 
     Something on the right side 
    </div> 
</div> 

और सीएसएस: http://jsfiddle.net/fabb/JKECK/

यहाँ एचटीएमएल स्रोत है

#table { 
    display: table; 
    /*border-collapse: collapse;*/ 

    width: 200px !important; 
    height: 200px !important; 
    box-sizing: border-box; 
    -webkit-box-sizing:border-box; 
    -moz-box-sizing:border-box; 

    margin: 0; 
    border: 1px solid blue; 
    padding: 60px 20px; 
} 

#table #left, #table #right { 
    display: table-cell; 

    width: 50%; 
    box-sizing: border-box; 
    -webkit-box-sizing:border-box; 
    -moz-box-sizing:border-box; 

    margin: 0; 
    border: 1px solid red; 
    padding: 0; 
} 

यह एक है क्रोम में बग? या मुझ से कुछ गलत हो रहा है?

उत्तर

5

हाँ, गूगल क्रोम बग:

Issue #103543 - CSS display: table bug

कुछ मामले addding/(बग रिपोर्ट में jsfiddle) की तरह गद्दी के विशिष्ट पक्ष को हटाने के द्वारा हल किया जा सकता है, लेकिन आपके मामले के संभव नहीं हो सकता।

यह आसान है और वहाँ नाव का उपयोग कर, अगर चौड़ाई और ऊंचाई में जाना जाता है और आप वर्ग कोशिकाओं चाहते द्वारा और अधिक स्थिर है।

नोट: के बाद तालिका लेआउट सौंपा सीएसएस width/height तोड़ करने की क्षमता है, यह बेहतर इसे प्रयोग नहीं जब तक कि यह तालिका जैसी संरचना है या आप कंटेनर को विस्तृत सामग्री करना चाहते है - तो अपने !important में width & height काम नहीं कर रहा है।

+1

आप अपने ** नोट ** के लिए बहुत बहुत धन्यवाद - यह एक समाधान खोजने के लिए मुझे मदद की। मैंने ** '# table' से 'डिस्प्ले: टेबल' हटा दिया है, जो क्रोम, ओपेरा और फ़ायरफ़ॉक्स में अपना लेआउट काम करता है। 2 डाउनसाइड्स हैं जो सौभाग्य से मुझे प्रभावित नहीं करते हैं: 1) एकल कोशिकाएं अब पूरी ऊंचाई नहीं फैलती हैं, और 2) कोई अन्य 'डिस्प्ले नहीं: टेबल *' होना चाहिए क्योंकि इससे हस्तक्षेप हो सकता है। table' तोड़ सकता 'width' या' height' गुण (ओपेरा में कि इस मुद्दे को जब एक और वैकल्पिक हल की कोशिश कर रहा था): यदि आप किसी भी अतिरिक्त जानकारी, ** क्यों ** के साथ 'प्रदर्शन एक तत्व मिल गया है? – fabb

+0

"तालिका चौड़ाई भंगुर है" इस वजह से इस इनलाइन-ब्लॉक मॉडल का एक प्रकार (ऐतिहासिक कारण - लोगों को यह सामग्री के आधार पर विस्तार कर सकते हैं पसंद करते हैं हो सकता है) है, कल्पना [कड़ी] (http के लिए वें लिंक देखें: // www .w3.org/TR/सीएसएस 2/tables.html # मॉडल)। इस समस्या को ठीक करने के लिए, आप 'कोशिश कर सकते हैं तालिका लेआउट: fixed' [और समाधान के लिए कड़ी] (http://www.456bereastreet.com/archive/200704/how_to_prevent_html_tables_from_becoming_too_wide/) – vincicat

+1

पी.एस. आप सेल पूरी ऊंचाई अवधि चाहते हैं, flexbox कोशिश: [वेबकिट अद्यतन संस्करण] (http://www.the-haystack.com/2012/01/04/learn-you-a-flexbox/) या [CSS3 के फ्लेक्स बॉक्स, समर्थित संस्करण] (http://hacks.mozilla.org/2010/04/the-css-3-flexible-box-model/) - – vincicat

0

क्रोम ब्राउज़र के लिए -webkit- निकालें।

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