Пространство между двумя строками в таблице?

Возможно ли это через CSS?

я стараюсь

tr.classname {
  border-spacing: 5em;
}

но безрезультатно. Может я что не так делаю?

Что такое браузер и можете ли вы предоставить фрагмент кода (html / css)?

Patrick Desjardins 09.12.2008 00:54

ну, я использую ff3, поскольку я знаю, что, предположительно, поддерживает правила, но сейчас я ищу исправление в ff3. Я пробовал пробелы и отступы, пока не повезло. productlistingitem - основная таблица <table class = "productListingItem" border = "0" cellpadding = "10" cellspacing = "0"> <tr> <tr> <td class = "dragItem">

Marin 09.12.2008 01:31

Возможно, это потому, что border-spacing - это атрибут, связанный с table, а не tr. Попробуйте table.classname {border-spacing:5em}. Note: IE8 поддерживает свойство border-spacing, если указан! DOCTYPE.

Varun Natraaj 14.02.2014 22:49

Я использую line-height, когда нет границ.

Leah 31.10.2017 11:10

Отвечает ли это на ваш вопрос? CSS: как создать промежуток между строками в таблице?

alexalejandroem 24.01.2020 14:12
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
778
5
1 213 612
26

Ответы 26

В родительской таблице попробуйте установить

border-collapse:separate; 
border-spacing:5em;

Плюс объявление границы, и посмотрите, достигнет ли это желаемого эффекта. Однако помните, что IE не поддерживает модель «разделенных границ».

Да, этот метод бы будет идеальным, за исключением того, что IE 7 его не поддерживает. Для поддержки браузера см .: quirksmode.org/css/tables.html

Simon East 27.02.2012 02:50

Кроме того, он контролирует интервал между всеми строками в таблице, вы не можете установить интервал между строками для отдельных строк (это то, чего может желать OP).

Simon East 27.02.2012 02:54

Это несовместимо между Chrome и Firefox. Если у вас есть thead и tbody, он будет отображать двойной border-spacing между ними в Chrome (но один в Firefox).

Camilo Martin 28.08.2012 19:56

Это фактический ответ, специально установите border-spacing: 0 1em, чтобы получить интервал только между строками.

igneosaur 25.06.2014 15:40

@igneosaur Я пытался сделать то, что вы сказали, но он все равно добавил интервал между всеми строками, а не только между первыми двумя. Можете ли вы предоставить рабочий jsfiddle?

user3281466 27.08.2014 20:05

@ user3281466 А, ну, мне удалось заставить его работать с отдельными строками, но мне пришлось сделать что-то другое; он немного меняет стили на столе, что может вызвать другие проблемы. display:block в строках нарушает функцию автоматического выравнивания, которую делают таблицы, но в любом случае здесь JSFiddle, возможно, он решит вашу проблему: jsfiddle.net/5dhsrLx3

igneosaur 28.08.2014 15:54

Круто, братан! Мне не нужно добавлять скрипт в каждую строку таблицы.

Tony Wu 23.10.2014 15:03

Не думайте о поддержке IE, никто этим не пользуется, никто не будет использовать и никому это тоже не нравится.

user2039981 02.01.2016 23:29

Для GridView также добавьте CellSpacing = "- 1" GridLines = "none"

DreamTeK 14.10.2016 11:38

Теперь, когда IE7 практически не используется, это решение идеально!

dmikester1 03.05.2017 07:03

когда я добавляю этот код, мой стиль border-color исчезает. Кто-нибудь может сказать мне, почему это происходит?

mikasa 06.12.2019 11:35

@igneosaru @ simon-east, не могли бы вы объяснить мне, почему пропадает мой стиль border-color?

mikasa 10.12.2019 11:58

Попытался ли ты:

tr.classname { margin-bottom:5em; }

В качестве альтернативы, каждый td также можно настроить:

td.classname { margin-bottom:5em; }

или же

 td.classname { padding-bottom:5em; }

Это действительно работает? У меня div.el { display: table-row; margin: 10px; }, и маржа ничего не делает. Я знаю, что это немного отличается от реальной таблицы, но этого не должно быть ...

bradlis7 26.06.2010 23:36

Строки / ячейки таблицы не имеют полей.

Espen 03.03.2011 11:53

Вы не можете изменить поле ячейки таблицы. Но вы МОЖЕТЕ изменить заполнение. Измените отступы TD, чтобы увеличить ячейку и отодвинуть текст в сторону с увеличенным отступом. Однако если у вас есть границы, это все равно будет не совсем то, что вам нужно.

Да, отступ будет сдвигать границу вниз, поэтому border-bottom и padding-bottom означают, что граница будет ниже отступа.

Dan Dascalescu 17.01.2013 21:46

Вам необходимо использовать отступы в ваших элементах td. Что-то вроде этого должно помочь. Конечно, вы можете получить тот же результат, используя верхний отступ вместо нижнего.

В приведенном ниже коде CSS знак «больше» означает, что заполнение применяется только к элементам td, которые являются прямыми дочерними элементами элементов tr с классом spaceUnder. Это позволит использовать вложенные таблицы. (Ячейки C и D в примере кода.) Я не уверен в поддержке браузером прямого дочернего селектора (например, IE 6), но это не должно нарушать код в любых современных браузерах.

/* Apply padding to td elements that are direct children of the tr elements with class spaceUnder. */

tr.spaceUnder>td {
  padding-bottom: 1em;
}
<table>
  <tbody>
    <tr>
      <td>A</td>
      <td>B</td>
    </tr>
    <tr class = "spaceUnder">
      <td>C</td>
      <td>D</td>
    </tr>
    <tr>
      <td>E</td>
      <td>F</td>
    </tr>
  </tbody>
</table>

Это должно выглядеть примерно так:

+---+---+
| A | B |
+---+---+
| C | D |
|   |   |
+---+---+
| E | F |
+---+---+
code.google.com/p/ie7-js добавляет поддержку дочернего селектора в ie5.5, ie6, ie7.
Antony Hatchkins 27.01.2012 21:16

За исключением того, что это вообще не решает проблему, когда ваши строки имеют цвет фона, и вы действительно хотите WHITESPACE между вашими строками.

Simon East 27.02.2012 02:49

@Simon: Пробел обычно относится к пустому пространству, а не конкретно к белому цвету. Если вы хотите раскрасить пространство между строками, вы можете попробовать использовать свойство CSS <code> border-bottom </code> в td-elements. Это, вероятно, будет правильно отображаться только с границей в 1 пиксель. Другое, но не столь элегантное решение - использовать пустую строку.

Jan Aagaard 27.02.2012 14:44

@Jan: Да, именно моя точка зрения ... Довольно сложно поместить пустое пространство прозрачный между строками. В некоторых случаях ваше решение помогает, но не решает эту проблему. Вставка пустой строки таблицы может сработать, но это ужасно. bottom-border, установленный на прозрачный, также может работать, но я не уверен, насколько он совместим с несколькими браузерами.

Simon East 28.02.2012 10:28

@Simon: У Коулмана есть уродливое, но рабочее решение вашей проблемы.

eggy 10.04.2013 08:28

Один вопрос по этому поводу. Почему не работает при простом применении, например. style= padding-bottom: 5px прямо в HTML, но только когда я помещаю стиль в свой CSS?

Magnilex 28.08.2013 11:50

@Magnilex. Можно добавить стиль непосредственно в html, но в своем примере я использовал CSS, так как вы обычно хотите применить заполнение ко всей строке ячеек, а это означает, что вам придется повторить style = "padding-bottom: 5px" на каждом элементе td.

Jan Aagaard 28.08.2013 12:58

К сожалению, это не работает, когда вы пытаетесь использовать vertical-align: middle для текста.

NetMage 25.10.2013 22:29

@Simon Я бы использовал границу с цветом фона. Электронная почта в формате HTML научила меня этому подвоху.

Alex W 17.07.2014 01:24

@SimonEast Я решил эту проблему наличия строк с фоном, используя linear-gradient, который имеет "резкие" остановки и использует цвет transparent по краям. Здесь описаны резкие линейные градиенты, например: css-tricks.com/css3-gradients

rmoestl 27.04.2016 09:33

Вы можете заполнить элементы <td /> элементами <div /> и применить любые поля к тем div, которые вам нравятся. Для визуального пространства между строками вы можете использовать повторяющееся фоновое изображение в элементе <tr />. (Это решение, которое я использовал только сегодня, и, похоже, оно работает как в IE6, так и в FireFox 3, хотя я больше не тестировал его.)

Кроме того, если вы не хотите изменять код сервера, чтобы поместить <div /> внутрь <td />, вы можете использовать jQuery (или что-то подобное) для динамического обертывания содержимого <td /> в <div / >, позволяя применять CSS по желанию.

Слишком поздно ответ :)

Если вы примените float к элементам tr, вы можете установить интервал между двумя строками с помощью атрибута margin.

table tr{
float: left
width: 100%;
}

tr.classname {
margin-bottom:5px;
}

Это страшно. Фактически это устанавливает для свойства display значение block для строки. Это позволяет строке иметь поле. Вертикальное поле «Применимо к: всем элементам, кроме элементов с типами отображения таблицы, отличными от table-caption, table и inline-table». Поскольку table-row не входит ни в одно из этих исключений, он не учитывается. Вероятно, вы могли бы добиться того же эффекта, выполняя tr {display:block;}. Но я бы с осторожностью использовал любой из этих методов в сложной таблице. Скорее всего, это не приведет к тому, чего вы ожидаете.

sholsinger 24.03.2011 19:46

Страшно, но сработало. Не в ie7, но размещение ячеек непосредственно в таблице работает в ie7.

Liko 12.01.2013 02:59

плавающие строки - не лучшее решение ... особенно если ваша страница больше, чем в 2 раза ширины строки. добавьте атрибут ширины к обоим тегам

AndreaCi 15.07.2014 13:50

Хорошо ты можешь сделать

tr.classname td {background-color:red; border-bottom: 5em solid white}

Убедитесь, что цвет фона установлен на td, а не на строке. Это должно работать в большинстве браузеров ... (Chrome, т.е. & ff протестирован)

Это создает странные проблемы с вертикальным выравниванием, по крайней мере, в Firefox.

cjohansson 05.01.2018 13:36

поскольку у меня есть фоновое изображение за столом, имитировать его с белым отступом не получится. Я решил поместить пустую строку между каждой строкой контента:

<tr class = "spacer"><td></td></tr>

затем используйте css, чтобы дать промежуточным рядам определенную высоту и прозрачный фон.

Я думаю, это, наверное, более гибкий вариант. Вы не всегда можете заранее контролировать, когда вам понадобится место (динамически генерируемые страницы).

Stefan Kendall 02.11.2010 20:16

Это напоминает мне 90-е годы, когда поддержка CSS практически отсутствовала, а таблицы использовались для большей части макета. Я все еще даю ему +1, потому что другие «ответы» не лучше с точки зрения фактического освобождения места в строках таблицы между.

labyrinth 28.11.2013 23:33

@labyrinth С 90-х годов мало что изменилось. Что касается HTML, все стало намного мощнее и запутаннее.

maaartinus 20.06.2014 00:10

У вас есть таблица с альбомами id с любыми данными ... Я пропустил trs и tds

<table id = "albums" cellspacing = "0">       
</table>

В css:

table#albums 
{
    border-collapse:separate;
    border-spacing:0 5px;
}

это сработало для меня. Первый аргумент border-spacing - это горизонтальный интервал между ячейками, а второй - вертикальный интервал.

user82646 26.02.2011 12:14

Не всегда нужно использовать причудливый CSS, если старый добрый HTML может с этим справиться :)

luator 13.07.2016 18:38
Атрибут cellspacing <table> - не поддерживается в HTML5.
Константин Ван 15.09.2016 02:50

можно ли подать заявку только на тр внутри "тела"?

Jaison James 22.01.2020 20:28

почему это не принятый ответ?

saike 29.12.2020 14:12

делать это, как показано выше ...

table tr{ float: left width: 100%; }  tr.classname { margin-bottom:5px; } 

удаляет выравнивание по вертикали, поэтому будьте осторожны при его использовании

tr { 
    display: block;
    margin-bottom: 5px;
}

я бы предпочел display: inline-block;

DS_web_developer 28.01.2012 12:00

Или просто добавьте пробел с высотой поля между строками, в которые вы хотите добавить интервал

Вы можете попробовать добавить разделительную строку:

html:

<tr class = "separator" />

css:

table tr.separator { height: 10px; }

Для IE tr без тела не распознается. также добавьте фиктивный тег td.

Nap 07.02.2012 16:41

Проблема в том, что в HTML5 Валидатор W3C выдаст ошибку, сообщающую: «Ширина строки таблицы 0 столбцов, что меньше количества столбцов, установленного первой строкой».

David Grayson 05.03.2015 02:00

Хорошо, я добавил еще <tr>, <td> и <p> и установил видимость p-тега на скрытый .. Работает тоже. :-)

Jeppe 19.09.2015 01:45

Правильный способ задать интервал для таблиц - использовать cellpadding и cellspacing, например.

<table cellpadding = "4">

Вы можете сделать это с помощью CSS, что, я бы сказал, более «правильно» (помимо того, что это более элегантно, перемещение стилей из разметки в CSS экономит пропускную способность).

Camilo Martin 28.08.2012 18:36

Это не экономит пропускную способность. На самом деле я использую больше. Предполагая, что вы не добавляете таблицу стилей только для этого, вам нужно добавить селектор и, возможно, идентификатор или имя в эту таблицу. Это больше не меньше байтов.

majinnaibu 30.05.2015 00:42

Вам необходимо установить border-collapse: separate; на стол; большинство таблиц стилей по умолчанию для браузера начинаются с border-collapse: collapse;, что исключает интервал границ.

Кроме того, border-spacing: используется для TD, а не для TR.

Пытаться:

<html><head><style type = "text/css">
    #ex    { border-collapse: separate; }
    #ex td { border-spacing: 1em; }
</style></head><body>
    <table id = "ex"><tr><td>A</td><td>B</td></tr><tr><td>C</td><td>D</td></tr></table>
</body>

border-spacing также для таблицы, а не td

silversky 04.09.2013 23:23

Спасибо. Ранее я поблагодарил вас за исправление комментария, но чрезмерно усердный редактор, который хотел изменить мой стиль и сломал код в процессе, также удалил мою благодарность. Я сейчас помещаю его сюда, где его нельзя редактировать.

John Haugeland 30.11.2014 22:33

Чтобы создать иллюзию расстояния между строками, примените цвет фона к строке, а затем создайте толстую рамку белого цвета, чтобы образовалось «пространство» :)

tr 
{
   background-color: #FFD700;
   border: 10px solid white;
}

Я наткнулся на это, борясь с аналогичной проблемой. Я нашел ответ Варуна Натраджа весьма полезным, но вместо этого я бы использовал прозрачную рамку.

td { border: 1em solid transparent; }

Прозрачные границы по-прежнему имеют ширину.

Я понимаю, что это ответ на старый поток и, возможно, не то решение, которое запрошено, но, хотя все предложенные решения не дали того, что мне было нужно, это решение сработало для меня.

У меня было 2 ячейки таблицы, одна с цветом фона, другая с цветом границы. Вышеупомянутые решения удаляют границу, поэтому ячейка справа будет казаться плавающей в воздухе. Решение, которое помогло, заключалось в замене table, tr и td на div и соответствующие классы: table будет div id = "table_replacer", tr будет div class = "tr_replacer", а td будет div class = "td_replacer" (также очевидно, измените закрывающие теги на div)

Чтобы получить решение моей проблемы, css:

#table_replacer{display:table;}
.tr_replacer {border: 1px solid #123456;margin-bottom: 5px;}/*DO NOT USE display:table-row! It will destroy the border and the margin*/
.td_replacer{display:table-cell;}

Надеюсь, это кому-то поможет.

Imho, это решение эквивалентно использованию обычной таблицы, шаблона tr, td и стиля tr {display: block;}, которые я пробовал. Проблема: таблица выглядит иначе, поскольку элементы td не отображаются в соответствии с шириной таблицы, а остаются в пределах tr. Означает, что элементы td всех строк больше не выровнены по вертикали.

Naradana 23.03.2018 11:43

Вы можете использовать высота линии в таблице:

<table style = "width: 400px; line-height:50px;">

Вы правы, но текст также получит высоту строки, что не очень хорошо, я думаю, вы должны увидеть Коулмана! У него хорошее решение

Waqas Tahir 01.06.2015 08:20

Просто поместите div в td и установите следующие стили div:

margin-bottom: 20px;
height: 40px;
float: left;
width: 100%;

Из сети разработчиков Mozilla:

The border-spacing CSS property specifies the distance between the borders of adjacent cells (only for the separated borders model). This is equivalent to the cellspacing attribute in presentational HTML, but an optional second value can be used to set different horizontal and vertical spacing.

За этой последней частью часто следят. Пример:

.your-table {
    border-collapse: separate; /* allow spacing between cell borders */
    border-spacing: 0 5px; /* NOTE: syntax is <horizontal value> <vertical value> */

ОБНОВИТЬ

Теперь я понимаю, что OP хочет, чтобы определенные, отдельные строки имели увеличенный интервал. Я добавил настройку с элементами tbody, которая выполняет это без нарушения семантики. Однако я не уверен, поддерживается ли он во всех браузерах. Я сделал это в Chrome.

Пример ниже предназначен для демонстрации того, как вы можете сделать так, чтобы таблица существовала из отдельных строк, полностью раскрывающаяся сладость CSS. Также с настройкой tbody в первом ряду был увеличен интервал. Не стесняйтесь использовать!

Уведомление о поддержке: IE8 +, Chrome, Firefox, Safari, Opera 4+

.spacing-table {
  font-family: 'Helvetica', 'Arial', sans-serif;
  font-size: 15px;
  border-collapse: separate;
  table-layout: fixed;
  width: 80%;
  border-spacing: 0 5px; /* this is the ultimate fix */
}
.spacing-table th {
  text-align: left;
  padding: 5px 15px;
}
.spacing-table td {
  border-width: 3px 0;
  width: 50%;
  border-color: darkred;
  border-style: solid;
  background-color: red;
  color: white;
  padding: 5px 15px;
}
.spacing-table td:first-child {
  border-left-width: 3px;
  border-radius: 5px 0 0 5px;
}
.spacing-table td:last-child {
  border-right-width: 3px;
  border-radius: 0 5px 5px 0;
}
.spacing-table thead {
  display: table;
  table-layout: fixed;
  width: 100%;
}
.spacing-table tbody {
  display: table;
  table-layout: fixed;
  width: 100%;
  border-spacing: 0 10px;
}
<table class = "spacing-table">
  <thead>
    <tr>
        <th>Lead singer</th>
        <th>Band</th>
    </tr>
  </thead>
  <tbody>
    <tr>
        <td>Bono</td>
        <td>U2</td>
    </tr>
  </tbody>
  <tbody>
    <tr>
        <td>Chris Martin</td>
        <td>Coldplay</td>
    </tr>
    <tr>
        <td>Mick Jagger</td>
        <td>Rolling Stones</td>
    </tr>
    <tr>
        <td>John Lennon</td>
        <td>The Beatles</td>
    </tr>
  </tbody>
</table>

Если мне нужно было вертикальное пространство между двумя конкретными строками, я просто добавил разделительную строку <tr> <td colspan = "2" style = "padding-bottom: 1em;"> </td> </tr>

Paul Taylor 07.02.2018 13:13

Это будет работать, но семантически неверно (например, ваша строка разделителя не является фактической строкой с данными, как другие строки. Это может раздражать людей, использующих программы чтения с экрана или другие вспомогательные устройства, а также для целей индексирования и это может не иметь большого значения, но хорошо держать это в голове при разработке веб-сайта :)

Justus Romijn 07.02.2018 14:46

Это верно, если он действительно использует таблицу для представления таблицы. Если он просто использует таблицу как способ отображения данных в табличной форме, тогда я бы сказал, что имеет больше смысла вставлять строку для представления промежутка между двумя элементами, а не просто добавлять интервал к элементам td выше или ниже линии, потому что пользователь хочет добавить пробел между двумя строками, а не увеличивать размер элементов в строке.

Paul Taylor 07.02.2018 15:02

Работает с большинством последних браузеров 2015 года. Простое решение. Это не работает для прозрачности, но, в отличие от ответа Торонвена, я не могу получить прозрачность для рендеринга любого размера.

    tr {
      border-bottom:5em solid white;
    }

Здесь это работает плавно:

#myOwnTable td { padding: 6px 0 6px 0;}

Я полагаю, вы могли бы разработать более детализированный макет, указав, какой td, если это необходимо.

Взгляните на атрибут граница-коллапс: отдельный (по умолчанию) и свойство пограничный интервал.

Сначала вы должны отдельный их с граница-коллапс, затем вы можете определить пространство между столбцами и строками с пограничный интервал.

Оба эти свойства CSS на самом деле хорошо поддерживаются в каждом браузере, глянь сюда.

table     {border-collapse: separate;  border-spacing: 10px 20px;}

table, 
table td,
table th  {border: 1px solid black;}
<table>
  <tr>
    <td>Some text - 1</td>
    <td>Some text - 1</td>
  </tr>
  <tr>
    <td>Some text - 2</td>
    <td>Some text - 2</td>
  </tr>
  <tr>
    <td>Some text - 3</td>
    <td>Some text - 3</td>
  </tr>
</table>

Это правильный ответ

melloc 18.12.2020 23:20

Это работает, только если вы работаете с белыми ячейками и белым фоном.

Sixteen 28.01.2021 17:00

@Sixteen Это неправда .. Почему он должен отличаться другим цветом?

Syno 28.01.2021 17:24

Я неправильно понял ответ, мой плохой. После повторной проверки это решение показалось мне хорошим и отлично работает.

Sixteen 30.03.2021 16:07

Вот простое и элегантное решение с некоторыми оговорками:

  • На самом деле сделать промежутки прозрачными нельзя, нужно придать им определенный цвет.
  • Вы не можете закруглить углы границ выше и ниже промежутков
  • Вам нужно знать отступы и границы ячеек таблицы.

Имея это в виду, попробуйте следующее:

td {padding:5px 8px;border:2px solid blue;background:#E0E0E0}  /* lets say the cells all have this padding and border, and the gaps should be white */

tr.gapbefore td {overflow:visible}
tr.gapbefore td::before,
tr.gapbefore th::before
{
  content:"";
  display:block;
  position:relative;
  z-index:1;
  width:auto;
  height:0;
  padding:0;
  margin:-5px -10px 5px;  /* 5px = cell top padding, 10px = (cell side padding)+(cell side border width)+(table side border width) */
  border-top:16px solid white;  /* the size & color of the gap you want */
  border-bottom:2px solid blue; /* this replaces the cell's top border, so should be the same as that. DOUBLE IT if using border-collapse:separate */
}

На самом деле вы вставляете прямоугольный блок ::before в верхнюю часть всех ячеек в строке, которую вы хотите, перед промежутком. Эти блоки немного выступают из ячеек, перекрывая существующие границы, скрывая их. Эти блоки представляют собой просто верхнюю и нижнюю границу, зажатые вместе: верхняя граница образует зазор, а нижняя граница воссоздает внешний вид исходной верхней границы ячеек.

Обратите внимание, что если у вас есть рамка вокруг самой таблицы, а также ячеек, вам необходимо дополнительно увеличить горизонтальный край ваших «блоков». Итак, для границы таблицы 4px вместо этого вы должны использовать:

margin:-5px -12px 5px;     /* 14px = original 10px + 2px for 'uncollapsed' part of table border */

И если ваша таблица использует border-collapse:separate вместо border-collapse:collapse, вам нужно (а) использовать полную ширину границы таблицы:

margin:-5px -14px 5px;     /* 14px = original 10px + 4px full width of table border */

... а также (b) замените двойную ширину границы, которая теперь должна появиться ниже пробела:

border-bottom:4px solid blue;     /* i.e. 4px = cell top border + previous row's bottom border */

Этот метод легко адаптируется к версии .gapafter, если вы предпочитаете, или для создания вертикальных (столбцов) промежутков вместо промежутков между строками.

Вот код, где вы можете увидеть это в действии: https://codepen.io/anon/pen/agqPpW

Лучший способ - добавить tr между двумя tr, как показано ниже,

<tr>
 <td height = "5" colspan = "2"></td>
</tr>

Другие вопросы по теме