Considere el siguiente 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>
Observe que la última celda tiene un borde izquierdo y uno derecho en su estilo en línea. Usted (o al menos yo) esperaría que esto fuera visible. En IE, este es el caso. Pero en Firefox (6), esto no es así. Puede resolver esto por:
- Eliminar la posición relativa
div.datagrid table tbodyen el CSS - Cambiar
div.datagrid table tbodyadiv.datagrid tableen el CSS - Extracción del
background-colorsobretable.data td.priceCellen el CSS - Extracción del
border-collapsesobrediv.datagrid tableen el CSS
Esta es una versión simplificada de nuestro código; también lo solucionamos (eligiendo la opción 2). Pero lo que me pregunto es:
- ¿Es esto un error en Firefox?
- ¿Es esto un error en IE?
Y especialmente: ¿cuál es la razón por la que Firefox no muestra los bordes cuando el CSS es como está?

border-collapsepropiedad deldiv.datagrid tableen eltable.datamismo en el CSS anterior, funcionó bien. Tal vez haya alguien más aquí que pueda explicar ... (estoy en Firefox 5)Respuestas:
Esto me parece un error de Firefox. Los fondos se pintan sobre los bordes; puede verlo si usa un color de fondo translúcido.
Presenté https://bugzilla.mozilla.org/show_bug.cgi?id=688556
fuente
Me encontré con este problema y encontré una única solución CSS: solo agregue
background-clip: padding-boxa sutdelemento.Consulte este artículo para obtener más información: https://developer.mozilla.org/en-US/docs/CSS/background-clip
fuente
Solo para poner todo en un solo lugar.
El problema se produce cuando se tiene una celda con posición relativa dentro de una tabla con bordes colapsados (como Boris indicó y completó el bug https://bugzilla.mozilla.org/show_bug.cgi?id=688556 )
Esto se puede resolver fácilmente usando CSS como lo indica user2342963 (Agregar background-clip: padding-box a la celda).
Puede ver el problema (con Firefox) y la solución aquí: http://jsfiddle.net/ramiro_conductiva/XgeAS/
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>fuente
Este es un error en Firefox y espero que lo solucionen pronto. Pero mientras tanto, pude solucionar este problema configurando mis
tdceldas enposition: static. Con suerte, eso ayudará a alguien más.td { position: static; }fuente
::beforeo::afteren el mismotd,position: staticarruina estos estilos.background-clip: padding-boxEs más seguro.Otra posible solución es corregir los errores de colspan en el marcado de su tabla.
Aparentemente, los errores de colspan pueden causar los mismos efectos con bordes ocultos cuando se usa border-collapse: collapse;
Me dirigieron a la solución correcta a través de http://www.codingforums.com/html-and-css/46049-border-collapse-hiding-some-outside-borders.html .
En mi tabla había escrito <th colspan = "9"> cuando solo había 8 columnas.
Eso provocó un error (borde derecho oculto) en
pero renderizado con bordes derechos en
fuente
<thead>que quería</thead>. ¡Arreglar ese error tipográfico solucionó el problema del borde!La mejor manera de resolver este problema es hacer algo como esto.
Tenga en cuenta la posición: propiedad relativa en los elementos "thead" y "tbody", esos son importantes. También lo son las propiedades border-collapse y background-clip. Funciona con background-color en todas las filas y en filas alternas.
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; } } } } }fuente
Añadiendo otra solución para este (antiguo) problema: esto me pasó hoy, porque tengo una tabla algo complicada con varios tbody. El único problema era que tenía una etiqueta tbody abierta que no estaba cerrada. Eliminé esa etiqueta y reaparecieron los bordes, sin necesidad de cambiar nada en mi CSS. Para aclarar, mi estructura era algo así como:
<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>fuente