Установить cellpadding и cellspacing в CSS?


3318

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

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

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


6
Просто общее предложение, проверьте, выполняет ли ваш style.css «сброс» в ваших таблицах, прежде чем пытаться использовать эти решения. Пример: если у вас нет таблиц, которые могут быть установлены, width:autoто border-collapseможет работать не так, как ожидалось.
Пи Джей Брюнет

1
Используйте интервал границы на столе и отступы на тд.
Анубхав

Ответы:


3555

основы

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

td { 
    padding: 10px;
}

Для «cellspacing» вы можете применить border-spacingсвойство CSS к вашей таблице. Например, для 10px "cellspacing":

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

Это свойство даже допускает раздельные интервалы по горизонтали и вертикали, чего вы не могли бы сделать с помощью "cellspacing" старой школы.

Проблемы в 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 .


27
cellpadding = "0" может по-прежнему иметь значение в Chrome 13.0.782.215, даже если к таблице применены border-collapse: collapse и border-spacing.
Уитниленд

7
@LeeWhitney, вам нужно установить отступы: 0 в ячейках таблицы.
Мартин Эрдинг-Томсен

7
Это немного не по теме, но атрибуты cellpadding и cellspacing удалены в HTML5, поэтому CSS - единственный путь.
Ignas2526

12
Всем привет. Я обновил ответ для ясности, включая раздел о cellpadding, который, как я думал, был очевиден (просто используйте «padding»). Надеюсь, теперь это более полезно.
Эрик Нгуен

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

942

По умолчанию

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

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

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

CELLPADDING

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

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

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

CELLSPACING

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

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-способ достижения этого.


1
Как исчезают расстояния вокруг стола? Когда я устанавливаю "border-spacing: 8px 12px, он добавляет интервал не только между, но и между границей таблицы и внешними ячейками! Но это не изображено на изображениях здесь; они расположены слева направо.
Kaz

1
@ 2astalavista И, к сожалению, если кто-то хочет удалить эффект внешнего расстояния, он не будет работать таким образом с этими атрибутами CSS.
Каз

@Kaz Вам может понадобиться использовать отрицательное поле, чтобы скрыть эту раздражающую часть.

2
Заполнение по умолчанию для TD обычно составляет 1px, а не 0
Jan M

342
table
{
    border-collapse: collapse; /* 'cellspacing' equivalent */
}

table td, table th
{
    padding: 0; /* 'cellpadding' equivalent */
}

2
На самом деле, это единственное, что я мог получить для меня, хотя я применил информацию к идентификатору, чтобы избежать чрезмерного общего характера.
Kzqai

20
Это cellspacing=0эквивалентно Эквивалент для cellspacing=1совершенно другой. Смотрите принятый ответ.
TRiG

3
Не должно table tdи table thпросто быть tdи thсоответственно? Это работает в любом случае, но меньший селектор означает немного более быстрое соответствие
Коул Джонсон

1
@Cole На самом деле, я думаю, что это должно быть table > tr > tdи table > tr > th. Это почти так же быстро, как trи th, и он гарантированно будет работать, если у вас есть вложенная таблица. Просто мой 2с
Левиафанбаджер

@ overyou00 а tableнужен ли селектор? IIRC, <td>является недействительным, если внутри <tr>.
Коул Джонсон

114

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

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


47
В сегодняшнем веке эта реальность - сосание до N-й степени.
Джон К

7
Это почти правильно, но border-collapseработает только в IE 5-7, если в таблице еще не определен cellspacingатрибут. Я написал исчерпывающий ответ, который объединяет все правильные части других ответов на этой странице на случай, если это будет полезно.
Эрик Нгуен

Если честно, кого волнует Internet Explorer? Любой, кто его использует, должен знать, что испорченные сайты - это их вина - за использование такого некачественного браузера. Сайты не должны иметь дело с этим. Пусть Internet Explorer потеряется. Забудьте о поддержке. Нам это не нужно, и это боль, чтобы развиваться.

99

Этот хак работает для 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 вы можете передать больше аргументов, чем ожидалось, и все они будут оценены.


для тех, кто пытается отвечать на электронные письма, обратите внимание, что * не распознается в outlook 2007+ (использует слово в качестве движка рендеринга) campaignmonitor.com/css
ptim

71

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

См QuirksMode ссылки размещенной в других местах по вопросам совместимости. Кажется, он может не работать со старыми версиями Internet Explorer.

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


49

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


43

Оберните содержимое ячейки с помощью 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, потому что это все, что нам разрешено использовать на работе.


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

23

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


21

Этот стиль для полного сброса для таблиц - CELLPADDING , CELLSPACING и границ .

У меня был этот стиль в моем файле 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 */
}

20

ТВН. Для всех поклонников CSS вы можете просто использоватьcellpadding="0" cellspacing="0" так как они не устарели ...

Любой другой, предлагающий наценки на <td>s, очевидно, не пробовал этого.


35
Они фактически устарели в html5.
Kzqai


17

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

td { 
    padding: 20px;
}

И для интервала границы:

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

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


15

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

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

Он работает в Chrome, Internet Explorer (6 и более поздних версиях) и Mozilla Firefox (2 и более поздних версиях).

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


7
ОП никогда не говорил, для чего он использовал таблицу.
Альфабраво


12

Вы можете легко установить отступы внутри ячеек таблицы, используя свойство заполнения CSS. Это правильный способ создать тот же эффект, что и атрибут 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>clarkkent@mail.com</td>
      </tr>
      <tr>
        <td>2</td>
        <td>Peter</td>
        <td>Parker</td>
        <td>peterparker@mail.com</td>
      </tr>
      <tr>
        <td>3</td>
        <td>John</td>
        <td>Rambo</td>
        <td>johnrambo@mail.com</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>clarkkent@mail.com</td>
      </tr>
      <tr>
        <td>2</td>
        <td>Peter</td>
        <td>Parker</td>
        <td>peterparker@mail.com</td>
      </tr>
      <tr>
        <td>3</td>
        <td>John</td>
        <td>Rambo</td>
        <td>johnrambo@mail.com</td>
      </tr>
    </tbody>
  </table>

</body>
</html>


10

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

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

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

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

9

Я использовал !importantпосле обвала границы как

border-collapse: collapse !important;

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


9
!importantпотребовалось бы только для переопределения других настроек CSS в сложной ситуации (и даже в большинстве случаев это неправильный подход).
Юкка К. Корпела

1
Также повторение ответа Дэна, просто добавляет !important, который мог бы быть включен в качестве комментария вместо другого ответа.
vapcguy

8
<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;
}

Скрипки .


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

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


5

Для таблиц, cellspacing и cellpadding устарели в HTML 5.

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

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



4

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

Для заполнения клеток :

Просто назовите простую td/thклетку padding.

Пример:

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

Больше стиля таблицы по ссылке источника CSS здесь вы получите больше стиля таблицы по CSS .


3

Вы можете просто сделать что-то подобное в своем 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>


Правило интервалов между границами игнорируется, когда границы свернуты.
dgrogan

0

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

<table style="border-collapse: separate;border-spacing: 2px;">
    <tr>
        <td style="padding: 4px 4px;">Some Text</td>
    </tr>
</table>

2
Поместить «style» в тег table хуже, чем «table # someId» в вашем css, так как стилизация должна отделяться от содержимого. Но главный вопрос в том, как преобразовать устаревший HTML в правильный CSS. Что вы правильно сделали, но на самом деле вы ничего не добавили в ответ и сосредоточены на не связанной с этим проблеме.
Teepeemm

1
Ничего не добавлено ?! То, что я добавил, было сосредоточено на том, как каждый другой ответ здесь в основном говорит использовать td { padding: ... }или table { border-spacing: ... }вместо того, чтобы применять его непосредственно к таблице. Те ничего не добавляют. Как я уже сказал, когда у вас есть несколько таблиц на вашей странице и вы не хотите на них влиять, вы не хотите этого! Нам не нужна целая страница ответов с надписью «Используйте таблицу стилей!», Когда, возможно, это последнее, что вы хотите, потому что вам нужно форматирование только для одной ячейки или таблицы. Это когда применять его tableили tdнежелательно, а создавать новый класс для него - это излишне.
vapcguy

1
Каждый другой ответ использует таблицу стилей, потому что первоначальный вопрос был «как я могу сделать это с помощью CSS». Если бы вопрос был «как я могу сделать так, чтобы css влиял только на эту одну таблицу», то ваш ответ был бы более уместным (хотя я бы все же поддержал table#someId).
Teepeemm

2
Технически, встроенный стиль по-прежнему CSS, но я не использую таблицу стилей, но я понимаю вашу точку зрения.
vapcguy

1
Потому что идея класса для повторного использования. Для разового, это мало смысла и излишне, ИМХО.
vapcguy

0

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

table.tbl_classname td, th {
    padding: 5px 5px 5px 4px   ;
 }


0

Вы можете проверить приведенный ниже код, просто создайте 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>

ВЫВОД :

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.