Подтвердить что ты не робот

Нужно ли добавлять cellpacing = "0" cellpadding = "0" в <table>?

Eric meyer reset css предлагает "таблицы по-прежнему нужны" cellspacing = "0" "в разметке". Это необходимо? и в чем преимущество border-collapse: collapse; и border-spacing: 0;?

и он предлагает только использовать cellpacing, а таблица имеет другое свойство, называемое cellpadding?

/* tables still need 'cellspacing="0"' in the markup */
table {
        border-collapse: collapse;
        border-spacing: 0;
}
4b9b3361

Ответ 1

cellpadding не предлагается, поскольку свойство padding css достаточно переопределяет свойства по умолчанию для атрибута таблицы cellpadding. Как говорится в другом ответе, в старых браузерах отсутствует совместимое свойство CSS для cellspacing, оставив атрибут HTML как единственный способ полностью "reset" установить этот параметр на 0. border-spacing: 0; позаботится об этом для браузеров, которые поддерживайте его.

Что касается border-collapse — по умолчанию ячейки таблицы имеют свою собственную границу, а collapse объединяет границы между соседними ячейками вместе, давая видимость (обычно однопиксельной) сетки, которая не достижима каким-либо другим способом, когда cellspacing="0". До border-collapse обычно поддерживалось, поэтому вы увидите таблицы с cellspacing="1" и цвет фона в таблице, а также белые фоны на ячейках таблицы.

border-collapse:collapse; находится в reset.css просто потому, что это самый общий желаемый результат. Если вы не хотите этого режима, вы бы прекрасно удалили это из reset.css.

Ответ 2

Internet Explorer 6 и 7 и, возможно, другие ранние браузеры не распознают атрибут border-spacing и, как следствие, он предлагает вам по-прежнему указывать значения в HTML.

Проверьте таблицу совместимости в SitePoint

Ответ 3

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

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

Не существует стиля CSS для границы таблицы между ячейками до CSS 2, поэтому его нужно отключить, используя атрибут HTML cellspacing="0" в таблице для поддержки старых браузеров, таких как IE 7 *. Если между ячейками есть границы таблицы, то сглаживание границы, естественно, не будет работать, поскольку границы не находятся рядом друг с другом.

* Мне действительно понравилось, что я вызываю IE 7 "более старый браузер";)