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

Возможно ли это с помощью CSS?

Я пытаюсь

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

безрезультатно. Может быть, я делаю что-то неправильно?

Ответ 1

Вам нужно использовать отступы для элементов 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>

Ответ 2

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

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

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

Ответ 3

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

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

В css:

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

Ответ 4

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

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

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

Ответ 5

Из Mozilla Developer Network:

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

Эта последняя часть часто контролируется. Пример:

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

UPDATE

Теперь я понимаю, что 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>

Ответ 6

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

HTML:

<tr class="separator" />

CSS

table tr.separator { height: 10px; }

Ответ 7

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

Ответ 8

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

Кроме того, интервал между границами: идет на TD, а не на TR.

Try:

<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>

Ответ 9

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

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

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

Ответ 10

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

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

Ответ 11

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

Сначала вы должны разделить их с помощью border-collapse, затем вы можете определить пространство между столбцами и строками с помощью border- space.

Оба эти свойства 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>

Ответ 12

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

Ответ 13

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

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

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

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

Ответ 14

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

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

Ответ 15

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

<table cellpadding="4">

Ответ 16

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

td { border: 1em solid transparent; }

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

Ответ 17

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

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

Ответ 18

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

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

Ответ 19

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

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

Чтобы получить решение для моей проблемы, 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;}

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

Ответ 20

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

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

Ответ 21

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

Ответ 22

Здесь простое и элегантное решение с несколькими оговорками:

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

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

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 top border, so should be the same as that. DOUBLE IT if using border-collapse:separate */
}

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

Обратите внимание, что если у вас есть граница вокруг самой таблицы, а также ячеек, вам нужно будет еще больше увеличить горизонтальный -ve край ваших "блоков". Так что для границы таблицы 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 bottom border */

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

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

Ответ 23

Здесь это работает гладко:

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

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

Ответ 24

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

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

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

Ответ 25

Вы пробовали:

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

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

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

или

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