Почему стилизация столбцов таблицы не допускается? - PullRequest
17 голосов
/ 13 июля 2009

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

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

Ответы [ 4 ]

11 голосов
/ 13 июля 2009

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

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

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

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

8 голосов
/ 13 июля 2009

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

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

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

3 голосов
/ 13 июля 2009

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

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

0 голосов
/ 13 июля 2009

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

...