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

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

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

4 ответа

Решение

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам