Установить 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.