<table cellspacing="0" cellpadding="0">
и в css:
table {border: none;}
EDIT:
Как отметил iGEL, это решение официально устарело (хотя все еще работает), поэтому, если вы начинаете с нуля, вам следует использовать решение jnpcl's border-collapse.
На самом деле мне пока не нравится это изменение (не работайте с таблицами так часто). Это усложняет некоторые задачи. Например. когда вы хотите включить две разные границы в одном и том же месте (визуально), когда одна является ТОП для одной строки, а вторая ДНА для другой строки. Они рухнут (= будет показан только один из них). Затем вы должны изучить, как рассчитывается «приоритет» границы и какие стили границ «сильнее» (двойные или сплошные и т. Д.).
Я так и сделал:
<table cellspacing="0" cellpadding="0">
<tr>
<td class="first">first row</td>
</tr>
<tr>
<td class="second">second row</td>
</tr>
</table>
----------
.first {border-bottom:1px solid #EEE;}
.second {border-top:1px solid #CCC;}
Теперь, при обвале границы, это не будет работать, поскольку всегда удаляется одна граница. Я должен сделать это каким-то другим способом (есть и другие решения). Одна возможность - использовать CSS3 с box-shadow:
<table class="tab">
<tr>
<td class="first">first row</td>
</tr>
<tr>
<td class="second">second row</td>
</tr>
</table>
<style>
.tab {border-collapse:collapse;}
.tab .first {border-bottom:1px solid #EEE;}
.tab .second {border-top:1px solid #CCC;box-shadow: inset 0 1px 0 #CCC;}
</style>
Вы также можете использовать что-то вроде стиля рамки "groove | ridge | inset | outset" только с одной границей. Но для меня это не оптимально, потому что я не могу контролировать оба цвета.
Может быть, есть какое-то простое и приятное решение для разрушения границ, но я его еще не видел и, честно говоря, не потратил на это много времени. Может быть, кто-то здесь сможет показать мне / нам;)