Почему стилизация столбцов таблицы не разрешена?

StackOverflow https://stackoverflow.com/questions/1119106

  •  12-09-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top