Wiem, że to późna reakcja, ale chciałem po prostu zrzucić swoje 2 centy, ponieważ mojego sposobu na zrobienie tego nie ma tutaj.
Widzisz, naprawdę nie lubię bawić się marżami, zwłaszcza ujemnymi . Wydaje się, że każda przeglądarka radzi sobie z tym trochę inaczej, a na marginesy łatwo wpływa wiele sytuacji.
Mój sposób na upewnienie się, że mam ładną tabelę z elementami div, polega najpierw na utworzeniu dobrej struktury html , a następnie zastosowaniu css.
Przykład jak to robię:
<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>
Teraz, w przypadku css, po prostu używam struktury wierszy, aby upewnić się, że krawędzie są tylko tam, gdzie powinny, co nie powoduje żadnych marginesów;
.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 voila, idealny stół. Oczywiście spowodowałoby to, że twoje DIV miałyby różnice w szerokości 1px (szczególnie pierwszy), ale dla mnie to nigdy nie spowodowało żadnego problemu. Jeśli tak jest w twojej sytuacji, myślę, że byłbyś wtedy bardziej zależny od marż.