Por que está denominando colunas da tabela não é permitido?
-
12-09-2019 - |
Pergunta
W3 especifica que apenas quatro regras CSS são permitidos para a tabela colunas (com o elemento <col>
) -. fronteira, fundo, largura e visibilidade
Alguém sabe as razões por trás dessa decisão? Se você pode ter bordas e fundos, por que não fontes e cores?
Solução
Ian Hixie explica em detalhes aqui: O mistério de por apenas quatro propriedades aplicam-se a colunas da tabela . citação relevante:
A cor do texto é dependente da propriedade 'cor' do seu elemento. A menos que especificado, a 'cor' da propriedade (basicamente) padrão é 'herdar', que significa "tirar o valor do elemento pai".
Assim, por algum texto em uma célula, a cor é determinada pela propriedade 'cor' da célula, que é retirado da linha, que é retirado da mesa, que é retirado do pai da tabela, e assim por diante .
E sobre a coluna? Bem, a coluna não é um dos ancestrais da célula, para que ele nunca recebe um olhar-in! E é aí que reside o problema.
Outras dicas
Apenas uma facada selvagem no escuro com base na minha compreensão limitada:
Eu acho que styling através de elementos relacionados coluna é restrito porque embora <col>
e <colgroup>
representam colunas de células, ele realmente não contê-los (eles estão realmente contido pelas <tr>
s). Com isso vem questões de precedência e especificidade e em cascata (desde cascata só pode ser feito entre os elementos contidos / recipiente) - quando conflitantes regras de estilo do <tr>
e <col>
(o que seria o mesmo nível em uma hierarquia de herança múltipla) ocorrem - o que deve a célula realmente usar?
Quanto ao porquê de esse punhado particular de atributos de estilo é permitido no entanto:. Idéia
Uma palavra: ambigüidade. As células têm de ser filhos de linhas; não seria uma tabela de outra forma. Mas não há nenhuma coluna a descer. Usando meios colspan
que uma célula pode estar em duas colunas. Ao invés de tentar chegar a algum confundindo saída, porque não basta deixar o lugar desenvolvedor um class
em cada célula enésimo?
Se você olhar atentamente para a especificação para a qual você ligar, você vai ver as tentativas de ambigüidade resolução. A propriedade width
especifica um mínimo; o background
leva um banco traseiro para a linha e célula; e border
faz referência a um "algoritmo de resolução de conflitos". A única razão pela qual não há sequer um algoritmo para border
é porque ele é razoavelmente entendido que deve "ganhar" (veja o algoritmo para detalhes). Mas você pode imaginar a tentar descobrir qual color
ou font
deve "ganhar"?
Possivelmente porque cada linha na tabela não tem necessariamente de exibir uma célula para a coluna (por exemplo, por causa de um colspan). Qual coluna deve essa célula herdá-la do estilo de? Apenas um palpite.