Установить заполнение ячеек и расстояние между ячейками в CSS?

В таблице HTML cellpadding и cellspacing могут быть установлены следующим образом:

<table cellspacing="1" cellpadding="1">

Как сделать то же самое с помощью CSS?


person kokos    schedule 04.12.2008    source источник
comment
Просто общее предложение: проверьте, выполняет ли ваш style.css сброс ваших таблиц, прежде чем пробовать эти решения. Пример: Если у вас нет таблиц, для которых установлено значение width:auto, тогда border-collapse может работать не так, как ожидалось.   -  person PJ Brunet    schedule 01.09.2016
comment
Используйте border-spacing на table и padding на td.   -  person Anubhav    schedule 23.05.2017


Ответы (28)


Основы

Для управления заполнением ячеек в CSS вы можете просто использовать padding в ячейках таблицы. Например. для ячеек размером 10 пикселей:

td { 
    padding: 10px;
}

Для размещения ячеек вы можете применить к своей таблице свойство border-spacing CSS. Например. для 10 пикселей между ячейками:

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

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

Проблемы в IE ≤ 7

Это будет работать почти во всех популярных браузерах, кроме Internet Explorer до Internet Explorer 7, где вам почти не повезло. Я говорю «почти», потому что эти браузеры по-прежнему поддерживают свойство border-collapse, которое объединяет границы соседних ячеек таблицы. Если вы пытаетесь исключить интервал между ячейками (то есть cellspacing="0"), тогда border-collapse:collapse должен иметь тот же эффект: нет пробела между ячейками таблицы. Однако в этой поддержке есть ошибки, поскольку она не отменяет существующий атрибут cellspacing HTML в элементе таблицы.

Вкратце: для браузеров, отличных от Internet Explorer 5-7, вас позаботится border-spacing. Для Internet Explorer, если ваша ситуация подходит (вам нужно 0 ячеек, а в вашей таблице он еще не определен), вы можете использовать border-collapse:collapse.

table { 
    border-spacing: 0;
    border-collapse: collapse;
}

Примечание. Для получения подробного обзора свойств CSS, которые можно применить к таблицам и для каких браузеров, см. Этот фантастический Страница Quirksmode.

person Eric Nguyen    schedule 09.07.2010
comment
cellpadding = 0 может по-прежнему иметь значение в Chrome 13.0.782.215, даже если к таблице применены border-collapse: collapse и border-spacing. - person whitneyland; 25.08.2011
comment
Это, безусловно, имеет смысл из-за специфики css, поэтому вам может потребоваться применить стили к идентификатору css для максимальной специфичности. Не уверен, что это переопределит значения атрибутов во всех случаях, но это место для начала проверки. - person Kzqai; 24.10.2011
comment
@LeeWhitney вам нужно установить padding: 0 в ячейках таблицы. - person Martin Ørding-Thomsen; 29.11.2011
comment
Это немного не по теме, но атрибуты cellpadding и cellspacing в HTML5 удалены, так что CSS - единственный выход сейчас. - person Ignas2526; 22.11.2013
comment
Всем привет. Я обновил ответ для ясности, включая раздел о добавлении ячеек, который, на мой взгляд, был очевиден (просто используйте заполнение). Надеюсь, теперь это более полезно. - person Eric Nguyen; 16.12.2013
comment
Это НЕ хороший ответ. Он говорит, что добавьте этот CSS, который применит его ко всем таблицам и ячейкам на странице. Что делать, если у вас есть несколько таблиц на странице и вам нужны разные поля ячеек или интервалы между ячейками для каждой из них? - person vapcguy; 26.02.2015
comment
Правда, @vapcguy, в любой из бесконечно изменяемых других ситуаций, в которых вы можете стилизовать таблицу, вам нужно будет определить более конкретные селекторы. Выше отмечены как примеры. - person Eric Nguyen; 01.04.2015
comment
Заполнение по умолчанию не то же самое. Например, если ваша ячейка таблицы имеет цвет фона, то заполнение также будет включать этот фон. Не совсем расстояние между ячейками. Вот почему это называется заполнением. Естественно, маржа должна работать с ячейками таблицы, но это не так, и я не тот, кто ее нарушил. - person Rolf; 06.06.2015
comment
Обратите внимание, что border-collapse:collapse НЕ эквивалентно cellspacing="0". В первом случае получается одна линия между ячейками, а во втором - две линии между ячейками. - person Martha; 05.12.2018
comment
Разве вы не хотите td, th с обивкой? - person Gray; 17.06.2021

Дефолт

Поведение браузера по умолчанию эквивалентно:

table {border-collapse: collapse;}
td    {padding: 0px;}

Введите описание изображения здесь

Cellpadding

Устанавливает расстояние между содержимым ячейки и стенкой ячейки

table {border-collapse: collapse;}
td    {padding: 6px;}

Введите описание изображения здесь

Ячейки

Управляет расстоянием между ячейками таблицы

table {border-spacing: 2px;}
td    {padding: 0px;}

Введите описание изображения здесь

Оба

table {border-spacing: 2px;}
td    {padding: 6px;}

Введите описание изображения здесь

Оба (специальные)

table {border-spacing: 8px 2px;}
td    {padding: 6px;}

Введите описание изображения здесь

Примечание. Если установлено border-spacing, это означает, что свойство border-collapse таблицы - separate.

Попробуйте сами!

Здесь вы можете найти старый способ HTML для достижения этой цели.

person Community    schedule 12.06.2012
comment
Как исчезает интервал вокруг стола? Когда я устанавливаю border-spacing: 8px 12px, он добавляет интервал не только между, но и между границей таблицы и внешними ячейками! Но это не изображено здесь на изображениях; они слева на одном уровне. - person Kaz; 19.11.2013
comment
@ 2astalavista И, к сожалению, если кто-то захочет удалить эффект внешнего интервала, это не сработает с этими атрибутами CSS. - person Kaz; 19.11.2013
comment
@Kaz Возможно, вам понадобится использовать отрицательный запас, чтобы скрыть эту раздражающую часть. - person ; 20.11.2013
comment
Отступ по умолчанию на TD обычно составляет 1 пиксель, а не 0. - person Jan M; 05.11.2014
comment
Осторожно: border-spacing:horizontal vertical; тогда как, например, padding:vertical horizontal;. - person Adam Chalcraft; 30.10.2020

Насколько я знаю, установка полей для ячеек таблицы на самом деле не имеет никакого эффекта. Настоящий CSS-эквивалент для cellspacing - border-spacing, но он не работает в Internet Explorer.

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

person Will Prescott    schedule 04.12.2008
comment
В наше время эта реальность в высшей степени отстойна. - person John K; 09.07.2010
comment
Это почти правильно, но border-collapse работает только в IE 5-7, если для таблицы еще не определен атрибут cellspacing. Я написал исчерпывающий ответ, который объединяет все правильные части других ответов на этой странице на случай, если это будет полезно. - person Eric Nguyen; 09.07.2010
comment
Честно говоря, кого волнует Internet Explorer? Любой, кто его использует, должен знать, что сломанные веб-сайты являются их ошибкой - из-за использования такого некачественного браузера. Сайты не должны иметь с этим дело. Пусть Internet Explorer потеряется. Забудьте о его поддержке. Нам это не нужно, а развиваться - это боль. - person ; 14.02.2017

Этот прием работает для Internet Explorer 6 и более поздних версий, Google Chrome, Firefox и Opera:

table {
    border-collapse: separate;
    border-spacing: 10px; /* cellspacing */
    *border-collapse: expression('separate', cellSpacing = '10px');
}

table td, table th {
    padding: 10px; /* cellpadding */
}

Объявление * предназначено для Internet Explorer 6 и 7, и другие браузеры будут игнорировать его.

expression('separate', cellSpacing = '10px') возвращает 'separate', но оба оператора выполняются, так как в JavaScript вы можете передать больше аргументов, чем ожидалось, и все они будут оценены.

person Vitalii Fedorenko    schedule 05.12.2011
comment
для тех, кто пытается реагировать на электронные письма, обратите внимание, что * не распознается Outlook 2007+ (использует слово в качестве механизма рендеринга) campaignmonitor .com / css - person ptim; 14.09.2013

Для тех, кто хочет ненулевое значение расстояния между ячейками, у меня сработал следующий CSS, но я могу протестировать его только в Firefox.

См. Ссылку Quirksmode опубликовано в другом месте для получения сведений о совместимости. Похоже, это может не работать со старыми версиями Internet Explorer.

table {
    border-collapse: separate;
    border-spacing: 2px;
}
person Malvineous    schedule 20.08.2011

Простое решение этой проблемы:

table
{
    border: 1px solid #000000;
    border-collapse: collapse;
    border-spacing: 0px;
}
table td
{
    padding: 8px 8px;
}
person George Filippakos    schedule 08.12.2011

Кроме того, если вы хотите cellspacing="0", не забудьте добавить border-collapse: collapse в вашу table таблицу стилей.

person mat    schedule 04.12.2008

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

Итак, CSS будет,

div.cellwidener {
  margin: 0px 15px 0px 15px;
}
td.tight {
  padding: 0px;
}
<table border="0">
  <tr>
    <td class="tight">
      <div class="cellwidener">My content</div>
    </td>
  </tr>
</table>

Да, хлопотно. Да, работает с Internet Explorer. Фактически, я тестировал это только с Internet Explorer, потому что это все, что нам разрешено использовать на работе.

person Robert White    schedule 19.06.2012
comment
Хотел бы я проголосовать больше ... Первый пример, который не повторяет другие, и тот, который показывает, как ограничить эффект одной таблицей или ячейкой, а не всеми ими на странице !!! - person vapcguy; 26.02.2015
comment
ЭТО и должен быть фактическим ответом. - person Philip Vaughn; 28.04.2021

Просто используйте border-collapse: collapse для своей таблицы и padding для th или td.

person Dan    schedule 03.01.2014

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

В моем файле reset.css был такой стиль:

table{
    border:0;          /* Replace border */
    border-spacing: 0px; /* Replace cellspacing */
    border-collapse: collapse; /* Patch for Internet Explorer 6 and Internet Explorer 7 */
}
table td{
    padding: 0px; /* Replace cellpadding */
}
person Elad Shechter    schedule 28.04.2014

TBH. Несмотря на все увлечения CSS, вы можете просто использовать cellpadding="0" cellspacing="0", поскольку они не устарели ...

Кто-то другой, предлагающий поля для <td>, очевидно, не пробовал этого.

person corrector    schedule 26.02.2010
comment
На самом деле они устарели в html5. - person Kzqai; 15.11.2011

Просто используйте правила заполнения CSS для табличных данных:

td { 
    padding: 20px;
}

И для интервала между границами:

table { 
    border-spacing: 1px;
    border-collapse: collapse;
}

Однако это может создать проблемы в старых версиях браузеров, таких как Internet Explorer, из-за реализации блочной модели diff.

person suraj rawat    schedule 15.03.2014

Насколько я понимаю из классификации W3C, <table>s предназначены только для отображения данных.

Основываясь на этом, я обнаружил, что намного проще создать <div> с фоном и всем остальным и иметь таблицу с плавающими над ней данными, используя position: absolute; и _4 _...

Он работает в Chrome, Internet Explorer (6 и новее) и Mozilla Firefox (2 и новее).

Поля используются (или в любом случае предназначены) для создания разделителя между элементами контейнера, такими как <table>, <div> и <form>, а не <tr>, <td>, <span> или <input>. Использование его для чего-либо, кроме элементов контейнера, заставит вас заняться настройкой своего веб-сайта для будущих обновлений браузера.

person RolanDecoy    schedule 02.07.2012
comment
OP никогда не указывал, для чего он использовал таблицу. - person Alfabravo; 11.10.2012

CSS:

selector{
    padding:0 0 10px 0; // Top left bottom right 
}
person suraj rawat    schedule 27.02.2014

Вы можете легко установить отступ внутри ячеек таблицы, используя свойство CSS padding. Это действительный способ произвести тот же эффект, что и атрибут cellpadding таблицы.

table,
th,
td {
  border: 1px solid #666;
}

table th,
table td {
  padding: 10px;
  /* Apply cell padding */
}
<!DOCTYPE html>
<html lang="en">
<head>

  <meta charset="utf-8">
  <title>Set Cellpadding in CSS</title>

</head>

<body>

  <table>
    <thead>
      <tr>
        <th>Row</th>
        <th>First Name</th>
        <th>Last Name</th>
        <th>Email</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>1</td>
        <td>Clark</td>
        <td>Kent</td>
        <td>[email protected]</td>
      </tr>
      <tr>
        <td>2</td>
        <td>Peter</td>
        <td>Parker</td>
        <td>[email protected]</td>
      </tr>
      <tr>
        <td>3</td>
        <td>John</td>
        <td>Rambo</td>
        <td>[email protected]</td>
      </tr>
    </tbody>
  </table>

</body>
</html>

Точно так же вы можете использовать свойство CSS border-spacing, чтобы применить интервал между границами соседних ячеек таблицы, как атрибут cellspacing. Тем не менее, для работы с интервалом между границами значение свойства «border-collapse» должно быть отдельным, что является значением по умолчанию.

table {
  border-collapse: separate;
  border-spacing: 10px;
  /* Apply cell spacing */
}

table,
th,
td {
  border: 1px solid #666;
}

table th,
table td {
  padding: 5px;
  /* Apply cell padding */
}
<!DOCTYPE html>
<html lang="en">
<head>

  <meta charset="utf-8">
  <title>Set Cellspacing in CSS</title>

</head>

<body>

  <table>
    <thead>
      <tr>
        <th>Row</th>
        <th>First Name</th>
        <th>Last Name</th>
        <th>Email</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>1</td>
        <td>Clark</td>
        <td>Kent</td>
        <td>[email protected]</td>
      </tr>
      <tr>
        <td>2</td>
        <td>Peter</td>
        <td>Parker</td>
        <td>[email protected]</td>
      </tr>
      <tr>
        <td>3</td>
        <td>John</td>
        <td>Rambo</td>
        <td>[email protected]</td>
      </tr>
    </tbody>
  </table>

</body>
</html>

person Rafiqul Islam    schedule 02.08.2017

Попробуй это:

table {
    border-collapse: separate;
    border-spacing: 10px;
}
table td, table th {
    padding: 10px;
}

Или попробуйте это:

table {
    border-collapse: collapse;
}
table td, table th {
    padding: 10px;
}
person Falguni Panchal    schedule 14.06.2013

Я использовал !important после разрушения границы, например

border-collapse: collapse !important;

и у меня это работает в IE7. Кажется, переопределяет атрибут ячейки.

person Håkan Nilsson    schedule 14.02.2013
comment
!important потребуется только для переопределения других настроек CSS в сложной ситуации (и даже тогда в большинстве случаев это неправильный подход). - person Jukka K. Korpela; 30.05.2013
comment
Также повторение ответа Дэна, просто добавляет !important, который можно было бы включить в качестве комментария вместо другого ответа. - person vapcguy; 26.02.2015

<table>
    <tr>
        <th>Col 1</th>
        <th>Col 2</th>
        <th>Col 3</th>
    </tr>
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
    </tr>
</table>

cell-padding можно задать с помощью padding в CSS, а cell-spacing можно задать, установив border-spacing для таблицы.

table {
    border-spacing: 10px;
}
td {
    padding: 10px;
}

Fiddle.

person Community    schedule 03.07.2016

td {
    padding: npx; /* For cellpadding */
    margin: npx; /* For cellspacing */
    border-collapse: collapse; /* For showing borders in a better shape. */
}

Если margin не сработало, попробуйте установить display из tr на block, и тогда маржа будет работать.

person Majid Sadr    schedule 24.12.2014

Для таблиц интервалы между ячейками и заполнение ячеек в HTML 5 устарели.

Теперь для размещения ячеек вам нужно использовать границы. А для cellpadding вы должны использовать border-collapse.

И убедитесь, что вы не используете это в своем коде HTML5. Всегда старайтесь использовать эти значения в файле CSS 3.

person Pushp Singh    schedule 03.06.2016

В таблице HTML cellpadding и cellspacing могут быть установлены следующим образом:

Для cell-padding:

Просто вызовите простую td/th ячейку padding.

Пример:

/******Call-Padding**********/

table {
    border-collapse: collapse;
}

td {
  border: 1px solid red;
  padding: 10px;
}
<table>
        <tr>
            <th>Head1 </th>
            <th>Head2 </th>
            <th>Head3 </th>
            <th>Head4 </th>
        </tr>
        <tr>
            <td>11</td>
            <td>12</td>
            <td>13</td>
            <td>14</td>
        </tr>
        <tr>
            <td>21</td>
            <td>22</td>
            <td>23</td>
            <td>24</td>
        </tr>
        <tr>
            <td>31</td>
            <td>32</td>
            <td>33</td>
            <td>34</td>
        </tr>
        <tr>
            <td>41</td>
            <td>42</td>
            <td>43</td>
            <td>44</td>
        </tr>
    </table>

table {
    border-collapse: collapse;
}

td {
  border: 1px solid red;
  padding: 10px;
}

Для интервала ячеек

Просто позвони по простому table border-spacing

Пример:

/********* Cell-Spacing   ********/
table {
    border-spacing: 10px;
    border-collapse: separate;
}

td {
  border: 1px solid red;
}
<table>
        <tr>
            <th>Head1</th>
            <th>Head2</th>
            <th>Head3</th>
            <th>Head4</th>
        </tr>
        <tr>
            <td>11</td>
            <td>12</td>
            <td>13</td>
            <td>14</td>
        </tr>
        <tr>
            <td>21</td>
            <td>22</td>
            <td>23</td>
            <td>24</td>
        </tr>
        <tr>
            <td>31</td>
            <td>32</td>
            <td>33</td>
            <td>34</td>
        </tr>
        <tr>
            <td>41</td>
            <td>42</td>
            <td>43</td>
            <td>44</td>
        </tr>
    </table>

/********* Cell-Spacing   ********/
table {
    border-spacing: 10px;
    border-collapse: separate;
}

td {
  border: 1px solid red;
}

Дополнительные стили таблиц по ссылке на источник CSS здесь вы получите дополнительные стили таблиц с помощью CSS.

person MD Ashik    schedule 02.11.2016

Вы можете просто сделать что-то подобное в своем CSS, используя border-spacing и padding:

table {
  border-collapse: collapse;
}

td, th {
  padding: 1em;
  border: 1px solid blue;
}
<table>
  <tr>
    <th>head_1</th>
    <th>head_2</th>
    <th>head_3</th>
    <th>head_4</th>
  </tr>
  <tr>
    <td>txt_1</td>
    <td>txt_2</td>
    <td>txt_3</td>
    <td>txt_4</td>
  </tr>
</table>

person Alireza    schedule 09.06.2017
comment
При свертывании границ правило интервала между границами игнорируется. - person dgrogan; 06.09.2017

Вы можете проверить приведенный ниже код, просто создайте index.html и запустите его.

<!DOCTYPE html>
<html>

<head>
  <style>
    table {
      border-spacing: 10px;
    }
    
    td {
      padding: 10px;
    }
  </style>
</head>

<body>
  <table cellspacing="0" cellpadding="0">
    <th>Col 1</th>
    <th>Col 2</th>
    <th>Col 3</th>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
  </table>
</body>

</html>

ВЫХОД:

введите описание изображения здесь

person Amaresh Tiwari    schedule 05.03.2020
comment
Просто используйте border-spacing на table и padding на td. - person Avro_Abir; 18.05.2021

Как насчет добавления стиля непосредственно в саму таблицу? Это вместо использования table в вашем CSS, что является ПЛОХО подходом, если на вашей странице несколько таблиц:

<table style="border-collapse: separate;border-spacing: 2px;">
    <tr>
        <td style="padding: 4px 4px;">Some Text</td>
    </tr>
</table>
person vapcguy    schedule 26.02.2015
comment
Помещение стиля в тег таблицы хуже, чем размещение таблицы # someId в вашем CSS, поскольку стили должны быть отделены от содержимого. Но главный вопрос в том, как преобразовать устаревший html в правильный css. Что вы сделали правильно, но на самом деле ничего не добавили в свой ответ и сосредоточились на несвязанной проблеме. - person Teepeemm; 28.03.2015
comment
Ничего не добавлено ?! Я добавил, чтобы сосредоточиться на том, как каждый другой ответ здесь в основном говорит об использовании td { padding: ... } или table { border-spacing: ... }, вместо того, чтобы применять его непосредственно к таблице. Те ничего не добавляют. Как я уже сказал, когда у вас есть несколько таблиц на вашей странице и вы не хотите на них влиять, вы этого не хотите! Нам не нужна целая страница с ответами, в которых говорится «Используйте таблицу стилей!», Хотя, возможно, это последнее, что вам нужно, потому что вам нужно форматировать только одну ячейку или таблицу. Это когда применение его к table или td нежелательно, а создание для него совершенно нового класса - это излишне. - person vapcguy; 28.03.2015
comment
В каждом другом ответе используется таблица стилей, потому что исходный вопрос заключался в том, как я могу сделать это с помощью css. Если бы вопрос был в том, как я могу заставить css воздействовать только на эту таблицу, то ваш ответ был бы более подходящим (хотя я все же предпочел бы table#someId). - person Teepeemm; 28.03.2015
comment
Технически встроенные стили по-прежнему являются CSS, только без использования таблиц стилей, но я понимаю вашу точку зрения. - person vapcguy; 01.04.2015
comment
Как насчет того, чтобы просто добавить класс в таблицу? - person developerbmw; 10.04.2015
comment
Потому что идея, лежащая в основе класса, заключается в возможности повторного использования. Для одноразового использования это не имеет особого смысла и является излишним, ИМХО. - person vapcguy; 11.04.2015
comment
Downvoter, не могли бы объяснить? Что касается других комментариев в пользу table или td в таблице стилей, я все еще считаю это плохой практикой. Если у вас есть только одна таблица, на которую вы хотите повлиять, как я сделал, когда искал это в Google, это последнее, что вам нужно, и почему я опубликовал это. Просто потому, что обычно вы хотите, чтобы все таблицы выглядели точно так же, не означает, что это всегда уместно, поскольку у меня был случай, когда это не было, из-за того, что отображаемые данные занимали непропорционально много места, чем другие мои таблицы и поэтому нужна другая величина заполнения. Людям нужно мыслить нестандартно и о других вариантах использования. - person vapcguy; 12.01.2017
comment
Встроенный CSS - всегда плохая идея. Если вы хотите стилизовать уникальную таблицу, присвойте ей атрибут id и используйте его в CSS: table#id {border-collapse: separate;border-spacing: 2px;} table#id td {padding: 4px 4px;} - person Adam; 15.05.2017
comment
Встроенный всегда плохо? Какие? Для меня ваш ответ просто повторяет все остальные ПЛОХИЕ ответы здесь. Таблица стилей предназначена для всеобъемлющих объектов, а не для единичных экземпляров, поэтому вставлять ее в таблицу стилей, для меня, ЭТО было бы плохой практикой. Вам не нужно много прокручивать назад и вперед к своей таблице стилей и обратно к своей одноразовой таблице, чтобы убедиться, что все сделано правильно, и исправить / добавить что-то, когда вы можете сделать это прямо сейчас. Не говоря уже о ком-то после того, как вам придется искать свое решение по тому идентификатору, который есть в таблице стилей. Нет ничего плохого в применении единого набора стилей к одной таблице. - person vapcguy; 18.05.2017

Это сработало для меня:

table {border-collapse: collapse}
table th, table td {padding: 0}
person Muhammad Tahseen ur Rehman    schedule 12.12.2020

Я предлагаю это, и все ячейки для конкретной таблицы обрабатываются.

table.tbl_classname td, th {
    padding: 5px 5px 5px 4px;
 }
person Greggo    schedule 17.11.2019

Предположим, что мы хотим назначить для нашей таблицы поле для ячеек 10 пикселей и интервал между ячейками 15 пикселей в соответствии с требованиями HTML5. Я покажу здесь два метода, дающих действительно похожие результаты.

Два разных набора свойств CSS применяются к одной и той же разметке HTML для таблицы, но с противоположными концепциями:

  • первый использует значение по умолчанию для border-collapse (separate) и использует border-spacing для указания расстояния между ячейками,

  • второй переключает border-collapse на collapse и использует свойство border в качестве расстояния между ячейками.

В обоих случаях добавление ячеек достигается путем присвоения padding:10px tds, и в обоих случаях background-color, назначенный им, только для более ясной демонстрации.

Первый способ:

table{border-spacing:15px}
td{background-color:#00eb55;padding:10px;border:0}
<table>
<tr>
<td>Header 1</td><td>Header 2</td>
</tr>
<tr>
<td>1</td><td>2</td>
</tr>
<tr>
<td>3</td><td>4</td>
</tr>
</table>

Второй способ:

table{border-collapse:collapse}
td{background-color:#00eb55;padding:10px;border:15px solid #fff}
<table>
<tr>
<td>Header 1</td><td>Header 2</td>
</tr>
<tr>
<td>1</td><td>2</td>
</tr>
<tr>
<td>3</td><td>4</td>
</tr>
</table>

person MattAllegro    schedule 27.02.2021

person    schedule
comment
На самом деле это единственное, что я мог заставить работать на себя, хотя я применил информацию к идентификатору, чтобы не быть слишком общим. - person Kzqai; 15.11.2011
comment
Это cellspacing=0 эквивалент. Эквивалент для cellspacing=1 совершенно другой. См. Принятый ответ. - person TRiG; 25.07.2012
comment
Разве table td и table th не должны быть просто td и th соответственно? Это работает в любом случае, но меньший селектор означает немного более быстрое сопоставление - person Cole Johnson; 30.01.2013
comment
@Cole На самом деле, я думаю, это должны быть table > tr > td и table > tr > th. Это почти так же быстро, как tr и th, и гарантированно будет работать, если у вас есть вложенная таблица. Просто мой 2с - person leviathanbadger; 13.08.2013
comment
@ aboveyou00, но нужен ли селектор table? IIRC, <td> недействителен, если он не находится внутри <tr>. - person Cole Johnson; 13.08.2013
comment
@Cole Да, но может быть другая таблица, вложенная где-нибудь в ячейку таблицы. Если вы не дадите конкретный класс ячейкам в одной таблице, вы не сможете применить правило только к внешней таблице. - person leviathanbadger; 13.08.2013