फ़ायरफ़ॉक्स को बॉर्डर-टेबल पर बॉर्डर-पतन के साथ नहीं दिखाया गया है: स्थिति: tbody पर रिश्तेदार, या सेल पर पृष्ठभूमि-रंग


83

निम्नलिखित HTML पर विचार करें:

<html>
<head>
    <style>
        TABLE.data TD.priceCell
        {
            background-color: #EEE;
            text-align: center;
            color: #000;
        }
    
        div.datagrid table
        {
            border-collapse: collapse;
        }
    
        div.datagrid table tbody
        {
            position: relative;
        }
    </style>
</head>
<body>
    <div id="contents" class="datagrid">
        <table class="data" id="tableHeader">
            <thead>
                <tr class="fixed-row">
                    <th>Product</th>
                    <th class="HeaderBlueWeekDay">Price</th>
                    <th class="HeaderBlueWeekDay">Discount</th>
                </tr>
            </thead>
            <tbody>
                <tr style="font-style: italic;">
                    <td>Keyboard</td>
                    <td class="priceCell">20</td>
                    <td style="border-right: #3D84FF 1px solid; border-left: #3D84FF 1px solid;" class="priceCell">2</td>
                </tr>
            </tbody>
        </table>
    </div>
</body>
</html>

ध्यान दें कि अंतिम सेल में अपनी इनलाइन शैली में एक बाईं और एक दाईं सीमा होती है। आप (या कम से कम I) यह अपेक्षा करेंगे कि यह दिखाई दे। IE में, यह मामला है। लेकिन फ़ायरफ़ॉक्स (6) में, यह नहीं है। आप इसे इसके द्वारा हल कर सकते हैं:

  • div.datagrid table tbodyCSS में सापेक्ष स्थिति को हटाना
  • बदलने div.datagrid table tbodyके लिए div.datagrid tableसीएसएस में
  • सीएसएस में background-colorपर हटानाtable.data td.priceCell
  • सीएसएस में border-collapseपर हटानाdiv.datagrid table

यह हमारे कोड का एक सरलीकृत संस्करण है; हमने इसे हल भी किया (विकल्प 2 को चुनकर)। लेकिन मैं जो सोच रहा हूं वह है:

  • क्या यह फ़ायरफ़ॉक्स में एक बग है?
  • यह IE में एक बग है?

और विशेष रूप से: क्या कारण है कि जब सीएसएस जैसा है तो फ़ायरफ़ॉक्स सीमाओं को नहीं दिखाएगा?


मुझसे पूछें मत क्यों, लेकिन जब मैं ले जाया border-collapseसे संपत्ति div.datagrid tableमें table.dataउपरोक्त CSS में ही है, यह ठीक काम किया। शायद यहाँ कोई और है जो समझा सकता है ... (मैं फ़ायरफ़ॉक्स 5 पर हूँ)
कॉम्पोटस

1
मेरे पास आपके प्रश्न का उत्तर नहीं है। मुझे संदेह है कि यह एक बग है, क्योंकि सापेक्ष स्थिति सीमाओं को प्रभावित नहीं करना चाहिए, लेकिन मैंने एक सरलीकृत परीक्षण मामला बनाया और सभी 4 ब्राउज़रों ने इसे अलग तरह से प्रदर्शित किया! (एफएक्स 6, ऑप 11.50, आईई 8, क्रोम 15) टेस्ट केस यहां: jsfiddle.net/76Qb7/9
डग

बस इस मुद्दे में भाग गया ... अजीब बात है कि एक फ़ायरफ़ॉक्स बग ऐसे समय पर बनी रहती है।
GDY

जवाबों:


64

यह मेरे लिए फ़ायरफ़ॉक्स बग जैसा दिखता है। पृष्ठभूमि सीमाओं पर पेंटिंग कर रहे हैं; यदि आप एक पारभासी पृष्ठभूमि रंग का उपयोग करते हैं तो आप इसे देख सकते हैं।

मैंने https://bugzilla.mozilla.org/show_bug.cgi?id=688556 दायर किया


2
मैं उसी मुद्दे में भाग गया। यह अभी भी फ़ायरफ़ॉक्स द्वारा तय नहीं किया गया है। लगता है कि वे इसे गंभीरता से नहीं लेते हैं, जबकि यह एक बड़ा डिज़ाइन मुद्दा है: nth-child (odd) चयनकर्ता के साथ-साथ केवल विषम पंक्तियों की पृष्ठभूमि को जोड़ने के लिए। मुझे इसे परफेक्ट बनाने के लिए बॉर्डर की भी जरूरत है। बग दर्ज करने के लिए धन्यवाद!
जेलेमर

FYI करें, अभी भी वर्तमान 9 साल बाद।
चार्ल्स मरियम

182

बस इस मुद्दे में भाग गया और एक सीएसएस केवल समाधान के लिए आया: बस background-clip: padding-boxअपने tdतत्व में जोड़ें ।

अधिक जानकारी के लिए यह लेख देखें: https://developer.mozilla.org/en-US/docs/CSS/background/clip


2
हुह, मुझे नहीं मिला। डॉक्स का कहना है कि यह निर्दिष्ट करता है कि क्या पृष्ठभूमि सीमा के नीचे फैली हुई है । मुझे लगता है कि यह सीमा के शीर्ष पर प्रदान किया गया है।
पीटर

2
सर्वश्रेष्ठ सीएसएस केवल समाधान मैंने पाया है। @Medoingthings को शेयर करने के लिए धन्यवाद
हेल

14

बस सभी को एक जगह पर रखना है।

समस्या तब उत्पन्न होती है, जब आपके पास किसी तालिका के अंदर की स्थिति के साथ एक सेल होता है, जिसमें टूटी हुई सीमाएँ होती हैं (जैसा कि बोरिस ने संकेत दिया और बग में भरा है https://bugzilla.mozilla.org/show_bug.cgi?id=688556 )

यह CSS23 का उपयोग करके आसानी से हल किया जा सकता है जैसा कि user2342963 द्वारा इंगित किया गया है (बैकग्राउंड-क्लिप जोड़कर: सेल में पैडिंग-बॉक्स)।

आप समस्या (फ़ायरफ़ॉक्स के साथ) और यहाँ ठीक देख सकते हैं: http://jsfiddle.net/ramiro_conductiva/Xge.gov

table {border-spacing: 0px;}
td {border: 1px solid blue; background-color: yellow; padding: 5px;}
td.cellRelative {position: relative;}
td.cellRelativeFix {background-clip: padding-box;}
table.tableSeparate {border-collapse: separate;}
table.tableCollapse {border-collapse: collapse;}

<table class="tableSeparate">
    <tbody>
        <tr>
            <td class="cellRelative">position: relative</td>
            <td>position: static</td>
        </tr>
    </tbody>
</table>
<table class="tableCollapse">
    <tbody>
        <tr>
            <td class="cellRelative">position: relative</td>
            <td>position: static</td>
        </tr>
    </tbody>
</table>
<table class="tableCollapse">
    <tbody>
        <tr>
            <td class="cellRelative cellRelativeFix">position: relative</td>
            <td>position: static</td>
        </tr>
    </tbody>
</table>

2
यह एफएफ में बग को ठीक करने के लिए काम करता है, लेकिन IE में नियमित सीमा के अंदर एक बदसूरत सफेद सीमा है हम इसे कैसे ठीक करते हैं?
टोनी ब्रिक्स

9

यह फ़ायरफ़ॉक्स में एक बग है और उम्मीद है कि वे इसे जल्द ही ठीक कर देंगे। लेकिन इस बीच मैं अपनी tdकोशिकाओं को सेट करके मेरे लिए इस मुद्दे को ठीक करने में सक्षम था position: static। उम्मीद है कि किसी और की मदद करेगा।

td {
    position: static;
}    

3
यदि आप छद्म तत्वों का उपयोग करते हैं जैसे कि ::beforeया ::afterउसी पर td, position: staticइन स्टाइलिंग को गड़बड़ कर देता है। background-clip: padding-boxअधिक सुरक्षित है।
सेबेसेमिलिया

3

एक अन्य संभावित समाधान आपके टेबल मार्कअप में कोल्सन त्रुटियों को ठीक करना है।

स्पष्ट रूप से सीमा-पतन का उपयोग करते समय छिपी सीमाओं के साथ कोल्प्सन त्रुटियों का एक ही प्रभाव हो सकता है: पतन;

मुझे http://www.codingforums.com/html-and-css/46049-border-collapse-hiding-some-outside-borders.html के माध्यम से सही समाधान के लिए निर्देशित किया गया था

अपनी तालिका में मैंने <th colspan = "9"> लिखा था जब केवल 8 कॉलम थे।

जिसके कारण त्रुटि (छिपी दाईं सीमा) में हुई

  • क्रोम 51.0.2704.103 मीटर (64-बिट)
  • विवाल्डी 1.2.490.43 () (32-बिट)

लेकिन सही सीमाओं के साथ प्रदान किया गया

  • फ़ायरफ़ॉक्स 44.0.2
  • IE 11 (11.420.10586.0)
  • बढ़त 25.10586.0.0

1
बॉर्डर-पतन को दूर करना: टेबल एलिमेंट से पतन ने हमारी मदद की
जारो आर्गिलेंडर

अन्य वाक्यविन्यास त्रुटियां स्पष्ट रूप से इसे भी ट्रिगर करती हैं। @ Pekaaw की सलाह को ध्यान में रखते हुए, मैंने अपने HTML को प्रूफ किया और पाया कि मेरे पास वह था <thead>जहाँ मेरा मतलब था </thead>। फिक्सिंग उस टाइपो ने सीमा की समस्या को ठीक कर दिया!
दाविदिरस्टर्नस्ट

1

इस मुद्दे को हल करने का सबसे अच्छा तरीका कुछ ऐसा करना है।

स्थिति पर ध्यान दें: "थ्रेड" और "tbody" तत्वों में रिश्तेदार संपत्ति, जो महत्वपूर्ण हैं। इसलिए सीमा-पतन और पृष्ठभूमि-क्लिप गुण हैं। सभी पृष्ठभूमि और वैकल्पिक पंक्तियों पर पृष्ठभूमि-रंग के साथ काम करता है।

table {
  width: 100% !important;
  border-spacing: 0;
  border-collapse: unset !important;

  thead {
    position: relative;
    left: -1px;
    top: -1px;

    tr {
      th {
        background-clip: padding-box;
        border-top: 1px solid #737373!important;
        border-left: 1px solid #737373!important;
        border-right: none !important;
        border-bottom: none !important;

        &:last-child {
          border-right: 1px solid #737373!important;
        }
      }
    }
  }

  tbody {
    position: relative;
    left: -1px;
    top: -1px;

    tr {
      &:last-child {
        td {
          border-bottom: 1px solid #737373!important;
        }
      }

      td {
        background-clip: padding-box;
        border-top: 1px solid #737373!important;
        border-left: 1px solid #737373!important;
        border-right: none !important;
        border-bottom: none !important;

        &:last-child {
          border-right: 1px solid #737373!important;
        }
      }
    }
  }
}

0

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

<table>
  <thead>
    <tr><th>Col1</th><th>Col2</th></tr>
  </thead>
  <tbody>
  <tbody>
    <tr><td>Val1</td><td>Val2</td></tr>
    <tr><td>Val3</td><td>Val4</td></tr>
  </tbody>
</table>

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.