Je sais que c'est une réaction tardive, mais je voulais juste laisser tomber mes 2 cents, car ma façon de le faire n'est pas ici.
Vous voyez, je n'aime vraiment pas jouer avec les marges, en particulier les marges négatives . Chaque navigateur semble gérer ces derniers un peu différemment et les marges sont facilement influencées par beaucoup situations.
Ma façon de m'assurer d'avoir une belle table avec des divs, est de créer d'abord une bonne structure html , puis d'appliquer le CSS.
Exemple de comment je le fais:
<div class="tableWrap">
<div class="tableRow tableHeaders">
<div class="tableCell first">header1</div>
<div class="tableCell">header2</div>
<div class="tableCell">header3</div>
<div class="tableCell last">header4</div>
</div>
<div class="tableRow">
<div class="tableCell first">stuff</div>
<div class="tableCell">stuff</div>
<div class="tableCell">stuff</div>
<div class="tableCell last">stuff</div>
</div>
</div>
Maintenant, pour le css, j'utilise simplement la structure des lignes pour m'assurer que les bordures sont uniquement là où elles doivent être, sans aucune marge;
.tableWrap {
display: table;
}
.tableRow {
display: table-row;
}
.tableWrap .tableRow:first-child .tableCell {
border-top: 1px solid #777777;
}
.tableCell {
display: table-cell;
border: 1px solid #777777;
border-left: 0;
border-top: 0;
padding: 5px;
}
.tableRow .tableCell:first-child {
border-left: 1px solid #777777;
}
Et voilà, une table parfaite. Maintenant, évidemment, cela entraînerait des différences de largeur de 1px dans vos DIV (en particulier le premier), mais pour moi, cela n'a jamais créé de problème d'aucune sorte. Si tel est le cas dans votre situation, je suppose que vous dépendriez alors davantage des marges.