Sé que hay varios buenos argumentos que prefieren el posicionamiento de CSS sobre los diseños basados en tablas. Lo que me pregunto es si el modelo CSS está completo (asumiendo un navegador relativamente moderno) con respecto a TODAS las capacidades de las tablas. ¿Hay diseños que las tablas pueden lograr que son imposibles o poco prácticos con CSS?¿Qué pueden hacer las tablas que el posicionamiento CSS no puede?
Respuesta
Cambiaría a diseños basados en css si pudiera. Los argumentos sematic son correctos, pero hay consideraciones prácticas.Las tablas:
- impiden absolutamente 'envoltura flotar' en un div caerá a la siguiente línea, porque no hay suficiente espacio para ello
- le dan columnas misma altura
- permiten diseños dinámicos, donde las anchuras y las alturas no se conocen hasta el tiempo de ejecución
- proporcionan colspans y rowspans
- reducir el número de preguntas para preguntar cómo hacer las cosas sin tablas :)
Hay propiedades de visualización CSS (tabla-celda, etc.) que imitan algo de esto, pero no creo que el soporte esté lo suficientemente extendido como para usarlas (a menos que pueda controlar la selección de su navegador de usuario).
El sitio en el que trabajo requiere anchos de columnas dinámicos en los diseños. Múltiples clientes usan las mismas plantillas de sitio, y no tengo idea de lo que pondrán en el menú o en el encabezado de página o las celdas de contenido. (Y no tengo idea de lo que encontrarán atractivo, que es otro problema ...) Usar una sola tabla externa para diseñar las secciones principales del sitio permite la flexibilidad que necesito sin preocuparme de que un menú ligeramente demasiado ancho presione el cuadro de contenido principal hasta la siguiente fila, o que los colores de fondo no llenen la altura requerida.
En un mundo perfecto (para mí), tendríamos <table>
s para datos tabulares, y otro conjunto de etiquetas casi idéntico para diseños: llámelo <layout>
(junto con la fila correspondiente y las etiquetas de celda). O bien, agregue un atributo 'modo' a la etiqueta <table>
; los valores serían 'datos' y 'diseño' para que los lectores de pantalla y los motores de búsqueda puedan saber qué hacer. Tal vez en html 6 ...
Editar: Debo añadir, en cuanto a la cosa 'flotante' - hay una pregunta actual sobre SO con una respuesta que funciona bastante bien here. No es perfecto, y yo también es demasiado complicado, pero resolvería el problema en muchos casos.
Las tablas son válidas y deben utilizarse para datos tabulares, y no para estructura. Personalmente, veo que las tablas se utilizan como una salida fácil, y nunca me he encontrado con una situación que no se pueda resolver con CSS.
Las tablas son definitivamente más fáciles para el posicionamiento vertical y las columnas de altura completa, pero de nuevo esto se puede superar con CSS.
yo no soy una persona que aboga por esquinas en la programación del corte, pero hay casos en que un "hack" es sólo mejor que hacer algo la forma "ideal". Las tablas Html funcionan. En cada navegador. Siempre. Son simples de entender y mantener. CSS es lo opuesto a esto cuando se trata de diseñar divs. – Nemi
@Nemi - Boo! Entonces, ¿para qué sirven los estándares? –
+ -0 Estoy respetuosamente en desacuerdo. Hay * situaciones * que no se pueden manejar sin tablas ni JavaScript. Los diseñadores del estándar CSS hicieron un mal trabajo al proporcionar alternativas a 'table' para su uso en diseños: por qué, no lo sé.En cuanto a "la salida más fácil", les puse que cuando se elige entre una construcción de cinco líneas '
+0 para el primero, -1 para el 2 ° y 3 °, +1 para el 4 ° y el 5 °. : D – ANeves
@sr pt: Me alegro de que me haya dado +0 por la primera, en lugar de -0 ... En serio, he visto soluciones parciales para la mayoría de estas cosas, pero nunca para anchos verdaderamente dinámicos (mi 3er). ¿Tienes algo para mí? – Ray