W3 указывает, что для столбцов таблицы (с элементом <col>
) разрешено использовать только четыре правила CSS - граница, фон, ширина и видимость.
Кто-нибудь знает причины этого решения? Если у вас есть границы и фоны, почему бы не шрифты и цвета?
W3 указывает, что для столбцов таблицы (с элементом <col>
) разрешено использовать только четыре правила CSS - граница, фон, ширина и видимость.
Кто-нибудь знает причины этого решения? Если у вас есть границы и фоны, почему бы не шрифты и цвета?
Ян Хикси подробно объясняет здесь: Тайна почему только четыре свойства относятся к столбцам таблицы. Соответствующая цитата:
Цвет текста зависит от свойства "color" его элемента. Если не указано, свойство "color" по умолчанию имеет значение "inherit", что означает "принять значение родительского элемента".
Итак, для некоторого текста в ячейке цвет определяется свойством "color" ячейки, которое берется из строки, которая берется из таблицы, которая берется из родительского стола и т.д..
Как насчет столбца? Ну, колонка не является одним из предков клеток, поэтому она никогда не получает вид! И в этом и заключается проблема.
Просто дикий удар в темноте, основанный на моем ограниченном понимании:
Я думаю, что стилизация через связанные с столбцом элементы ограничена, потому что хотя <col>
и <colgroup>
представляют столбцы ячеек, они фактически не содержат их (они фактически содержатся в <tr>
s). При этом возникают проблемы приоритетности и специфичности и каскадирования (поскольку каскадирование может выполняться только между содержащимися/контейнерными элементами) - когда конфликтующие правила стиля из <tr>
и <col>
(которые будут одинакового уровня в иерархии множественного наследования) возникает - какая должна использоваться ячейка?
Что касается того, почему эта часть нескольких атрибутов стиля разрешена, хотя: нет идеи.
Одно слово: двусмысленность. Клетки должны быть детьми рядов; в противном случае это не будет таблица. Но нет столбца, откуда можно спуститься. Использование colspan
означает, что одна ячейка может находиться в двух столбцах. Почему бы не позволить разработчику разместить class
на каждой n-й ячейке?
Если вы внимательно посмотрите на спецификацию, на которую вы ссылаетесь, вы увидите попытки разрешения двусмысленности. Свойство width
указывает минимум; background
берет backseat к строке и ячейке; и border
ссылается на "алгоритм разрешения конфликтов". Единственная причина, по которой существует даже алгоритм для border
, состоит в том, что он достаточно понятен, кто должен "побеждать" (см. Алгоритм для подробностей). Но могли ли вы представить, как попытаться выяснить, какие color
или font
должны "выиграть"?
Возможно, потому, что каждая строка в таблице необязательно должна отображать ячейку для вашего столбца (например, из-за colspan). Какой столбец должен эта ячейка наследовать его стиль? Просто предположим.