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

Почему столбцы таблицы стилей не допускаются?

W3 указывает, что для столбцов таблицы (с элементом <col>) разрешено использовать только четыре правила CSS - граница, фон, ширина и видимость.

Кто-нибудь знает причины этого решения? Если у вас есть границы и фоны, почему бы не шрифты и цвета?

4b9b3361

Ответ 1

Ян Хикси подробно объясняет здесь: Тайна почему только четыре свойства относятся к столбцам таблицы. Соответствующая цитата:

Цвет текста зависит от свойства "color" его элемента. Если не указано, свойство "color" по умолчанию имеет значение "inherit", что означает "принять значение родительского элемента".

Итак, для некоторого текста в ячейке цвет определяется свойством "color" ячейки, которое берется из строки, которая берется из таблицы, которая берется из родительского стола и т.д..

Как насчет столбца? Ну, колонка не является одним из предков клеток, поэтому она никогда не получает вид! И в этом и заключается проблема.

Ответ 2

Просто дикий удар в темноте, основанный на моем ограниченном понимании:

Я думаю, что стилизация через связанные с столбцом элементы ограничена, потому что хотя <col> и <colgroup> представляют столбцы ячеек, они фактически не содержат их (они фактически содержатся в <tr> s). При этом возникают проблемы приоритетности и специфичности и каскадирования (поскольку каскадирование может выполняться только между содержащимися/контейнерными элементами) - когда конфликтующие правила стиля из <tr> и <col> (которые будут одинакового уровня в иерархии множественного наследования) возникает - какая должна использоваться ячейка?

Что касается того, почему эта часть нескольких атрибутов стиля разрешена, хотя: нет идеи.

Ответ 3

Одно слово: двусмысленность. Клетки должны быть детьми рядов; в противном случае это не будет таблица. Но нет столбца, откуда можно спуститься. Использование colspan означает, что одна ячейка может находиться в двух столбцах. Почему бы не позволить разработчику разместить class на каждой n-й ячейке?

Если вы внимательно посмотрите на спецификацию, на которую вы ссылаетесь, вы увидите попытки разрешения двусмысленности. Свойство width указывает минимум; background берет backseat к строке и ячейке; и border ссылается на "алгоритм разрешения конфликтов". Единственная причина, по которой существует даже алгоритм для border, состоит в том, что он достаточно понятен, кто должен "побеждать" (см. Алгоритм для подробностей). Но могли ли вы представить, как попытаться выяснить, какие color или font должны "выиграть"?

Ответ 4

Возможно, потому, что каждая строка в таблице необязательно должна отображать ячейку для вашего столбца (например, из-за colspan). Какой столбец должен эта ячейка наследовать его стиль? Просто предположим.