Pourquoi est-colonnes de table de style non autorisés?
-
12-09-2019 - |
Question
W3 précise que seulement quatre règles CSS sont autorisées pour la table colonnes (avec l'élément de <col>
). - frontière, fond, la largeur et la visibilité
Quelqu'un sait les raisons de cette décision? Si vous pouvez avoir des frontières et arrière-plans, pourquoi ne pas les polices et les couleurs?
La solution
Ian Hixie explique en détail ici: Le mystère de la raison pour laquelle seulement quatre propriétés applicables aux colonnes de table . citation pertinente:
La couleur du texte dépend de la propriété « color » de son élément. Sauf indication contraire, la « couleur » propriété par défaut (essentiellement) a « hérite », ce qui signifie « prendre la valeur de l'élément parent ».
Donc, pour un texte dans une cellule, la couleur est déterminée par la propriété « color » de la cellule, qui est tirée de la ligne, qui est tirée de la table, qui est tiré de la mère de la table, etc. .
Qu'en est-il la colonne? Eh bien, la colonne n'est pas l'un des ancêtres de la cellule, il ne fait jamais regarder en! Et le problème est là.
Autres conseils
Juste un coup de poignard sauvage dans l'obscurité sur la base de ma compréhension limitée:
Je pense que le style par des éléments liés à la colonne est limitée parce que même si <col>
et <colgroup>
représentent les colonnes de cellules, il ne les contient pas réellement (ils sont en fait contenues par les <tr>
s). Avec cela vient des questions de préséance et de spécificité et en cascade (puisque la cascade ne peut se faire entre contenu / éléments de conteneurs) - lorsque les règles de style contradictoires de la <tr>
et <col>
(ce qui serait le même niveau dans une hiérarchie d'héritage multiple) se - qui devrait la cellule réellement utiliser?
Quant à savoir pourquoi cette poignée particulière d'attributs de style est permise si:. Aucune idée
Un mot: ambiguïté. Les cellules doivent être des enfants de lignes; il ne serait pas une table autrement. Mais il n'y a pas de colonne pour descendre. L'utilisation colspan
signifie qu'une cellule pourrait être dans deux colonnes. Plutôt que d'essayer de trouver une manière confuse, pourquoi ne pas simplement laisser la place du développeur un class
sur chaque cellule nième?
Si vous regardez attentivement la spécification à laquelle vous établissez un lien, vous verrez les tentatives de résolution d'ambiguïté. La propriété width
spécifie un minimum; le background
prend une banquette arrière à la rangée et de la cellule; et border
fait référence à un « algorithme de résolution des conflits ». La seule raison pour laquelle il y a même un algorithme pour border
est parce qu'il est raisonnablement compris qui devrait « gagner » (voir l'algorithme pour plus de détails). Mais pourriez-vous imaginer essayer de comprendre ce qui color
ou font
doivent « gagner »?
Peut-être parce que chaque ligne de la table ne doit pas nécessairement afficher une cellule pour votre colonne (par exemple en raison d'un colspan). Quelle colonne doit cette cellule hériter son style de? Juste une supposition.