Я знаю, что это запоздалая реакция, но я просто хотел сбросить свои 2 цента, так как моего способа сделать это здесь нет.
Понимаете, мне очень не нравится играть с полями, особенно с отрицательными полями . Кажется, что каждый браузер обрабатывает это только немного по-разному, а поля легко зависят от множества ситуаций.
Мой способ убедиться, что у меня хорошая таблица с div, - сначала создать хорошую структуру html , а затем применить css.
Пример того, как я это делаю:
<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>
Теперь для css я просто использую структуру строк, чтобы убедиться, что границы находятся только там, где они должны быть, без полей;
.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, идеальный стол. Теперь очевидно, что это приведет к тому, что ваши DIV будут иметь различия в ширине в 1 пиксель (в частности, первый), но для меня это никогда не создавало никаких проблем. Если это так в вашей ситуации, я думаю, тогда вы будете больше зависеть от маржи.