Нужно ли добавлять 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;
}
Ответы
Ответ 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 "более старый браузер";)