tablas tabla estilos ejemplos diseño bordes avanzado html css css-tables col

estilos - tablas en html5



¿Por qué no se permiten columnas de tabla de estilo? (4)

W3 especifica que solo se permiten cuatro reglas CSS para las columnas de la tabla (con el elemento <col> ): borde, fondo, ancho y visibilidad.

¿Alguien sabe las razones detrás de esta decisión? Si puedes tener bordes y fondos, ¿por qué no las fuentes y los colores?


Ian Hixie explica en detalle aquí: El misterio de por qué solo cuatro propiedades se aplican a las columnas de la tabla . Cita relevante:

El color del texto depende de la propiedad ''color'' de su elemento. A menos que se especifique, la propiedad ''color'' (básicamente) por defecto es ''heredar'', lo que significa "tomar el valor del elemento principal".

Entonces, para algún texto en una celda, el color está determinado por la propiedad ''color'' de la celda, que se toma de la fila, que se toma de la tabla, que se toma del padre de la tabla, y así sucesivamente.

¿Qué pasa con la columna? Bueno, la columna no es uno de los antepasados ​​de la célula, ¡por lo que nunca recibe un vistazo! Y ahí radica el problema.


Posiblemente porque cada fila en la tabla no necesariamente tiene que mostrar una celda para su columna (por ejemplo, debido a un colspan). ¿De qué columna debe esa celda heredar su estilo? Solo una suposición.


Solo una puñalada salvaje en la oscuridad basada en mi entendimiento limitado:

Creo que el estilo a través de elementos relacionados con columnas está restringido porque aunque <col> y <colgroup> representan columnas de celdas, en realidad no las contiene (en realidad están contenidas por <tr> s). Con esto vienen temas de precedencia, especificidad y cascada (ya que la cascada solo se puede hacer entre elementos contenidos / contenedores) - cuando hay reglas de estilo en conflicto desde <tr> y <col> (que serían el mismo nivel en una jerarquía de herencia múltiple) Ocurre, ¿cuál debería usar realmente la célula?

Sin embargo, en cuanto a por qué se permite ese puñado particular de atributos de estilo: ni idea.


Una palabra: ambigüedad. Las células tienen que ser hijos de filas; de lo contrario no sería una mesa. Pero no hay columna para descender. Usar colspan significa que una celda podría estar en dos columnas. En lugar de tratar de encontrar una salida confusa, ¿por qué no dejar que el desarrollador coloque una class en cada celda nth?

Si observa detenidamente la especificación a la que se vincula, verá intentos de resolución de ambigüedad. La propiedad de width especifica un mínimo; el background toma un asiento trasero en la fila y la celda; y el border referencia a un "algoritmo de resolución de conflictos". La única razón por la que hay incluso un algoritmo para el border es porque se entiende razonablemente quién debe "ganar" (consulte el algoritmo para obtener más detalles). Pero, ¿podrías imaginarte tratando de averiguar qué color o font debería "ganar"?