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