So che questa è una reazione tardiva, ma volevo solo perdere i miei 2 centesimi, dal momento che il mio modo di farlo non è qui.
Vedi, non mi piace davvero giocare con i margini, specialmente con i margini negativi . Ogni browser sembra gestirli in modo leggermente diverso ei margini sono facilmente influenzati da molto situazioni.
Il mio modo per assicurarmi di avere una bella tabella con i div è creare prima una buona struttura html , quindi applicare il css.
Esempio di come lo faccio:
<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>
Ora, per il CSS, utilizzo semplicemente la struttura delle righe per assicurarmi che i bordi siano solo dove devono essere, senza creare margini;
.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à, una tavola perfetta. Ora, ovviamente questo farebbe sì che i tuoi DIV abbiano differenze di larghezza di 1 px (in particolare il primo), ma per me, ciò non ha mai creato alcun problema di alcun tipo. Se è così nella tua situazione, immagino che allora saresti più dipendente dai margini.