Considérez le code HTML suivant:
<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>
Notez que la dernière cellule a une bordure gauche et une bordure droite dans son style en ligne. Vous (ou du moins moi) vous attendriez à ce que cela soit visible. Dans IE, c'est le cas. Mais dans Firefox (6), ce n'est pas le cas. Vous pouvez résoudre ce problème en:
div.datagrid table tbody
dans le CSSdiv.datagrid table tbody
à div.datagrid table
dans le CSSbackground-color
sur table.data td.priceCell
dans le CSSborder-collapse
sur div.datagrid table
dans le CSSIl s'agit d'une version simplifiée de notre code; nous l'avons également résolu (en choisissant l'option 2). Mais ce que je me demande, c'est:
Et surtout: quelle est la raison pour laquelle Firefox ne montrerait pas les frontières lorsque le CSS est tel qu'il est?
Cela ressemble à un bug de Firefox pour moi. Les arrière-plans peignent au-dessus des frontières; vous pouvez le voir si vous utilisez une couleur d'arrière-plan translucide.
J'ai déposé https://bugzilla.mozilla.org/show_bug.cgi?id=688556
Je suis juste tombé sur ce problème et j'ai trouvé une solution CSS uniquement: ajoutez simplement background-clip: padding-box
à votre élément td
.
Voir cet article pour plus d'informations: https://developer.mozilla.org/en-US/docs/CSS/background-clip
Juste pour mettre tout en un seul endroit.
Le problème se produit lorsque vous avez une cellule avec une position relative à l'intérieur d'un tableau avec des bordures réduites (comme Boris l'a indiqué et rempli le bogue https://bugzilla.mozilla.org/show_bug.cgi?id=688556 =)
Cela peut être facilement résolu en utilisant CSS comme indiqué par user2342963 (Ajout d'un clip d'arrière-plan: padding-box à la cellule).
Vous pouvez voir le problème (avec Firefox) et le correctif ici: 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>
Il s'agit d'un bug dans Firefox et j'espère qu'ils le corrigeront bientôt. Mais en attendant, j'ai pu résoudre ce problème pour moi en définissant mes cellules td
sur position: static
. J'espère que cela aidera quelqu'un d'autre.
td {
position: static;
}
Une autre solution possible consiste à corriger les erreurs de colspan dans le balisage de votre table.
Apparemment, les erreurs de colspan peuvent provoquer les mêmes effets avec les bordures cachées lors de l'utilisation de border-collapse: collapse;
J'ai été dirigé vers la bonne solution via http://www.codingforums.com/html-and-css/46049-border-collapse-hiding-some-outside-borders.html .
Dans mon tableau, j'avais écrit <th colspan = "9"> alors qu'il n'y avait que 8 colonnes.
Cela a provoqué une erreur (bordure droite cachée) dans
mais rendu avec des bordures droites