2008-11-24 14 views
17

Soy desarrollador de motores de Winforms y empresas que usa asp.net por primera vez en más de 2 años, y en ese momento noté algunos cambios en las convenciones.¿Por qué usar tablas para el diseño de sitios web es tan malo?

¿Cuál es la lógica detrás del movimiento anti-'tables para el diseño '?

¿Es para permitir que las clases CSS se utilicen para manejar el diseño, y si es así, si esto realmente es un problema en las páginas que está bastante seguro permanecerá estático, o simplemente se considera 'feo'?

+0

posible duplicado de [¿Por qué no usar tablas para el diseño en HTML?] (Http://stackoverflow.com/questions/83073/why-not-use-tables-for-layout-in-html) – Zectbumo

Respuesta

34

Algunos puntos adicionales:

  • no seas un fanático de ello. CSS no es perfecto, y hay algunas cosas que se pueden hacer mucho más fácilmente con tablas. Entonces, si es necesario, pon una pequeña mesa ahí. No te matará.

  • El principal "mal" de los diseños basados ​​en tablas era el tipo de desorden profundamente anidado que solía ser la única manera de obtener un control preciso sobre la página. Tendría tablas dentro de las tablas dentro de las tablas e imágenes transparentes estratégicamente colocadas para controlar el espaciado. Creo que esto es bastante raro hoy en día, y CSS te permitirá limpiar el 90% de este lío.

  • La "web semántica", donde las etiquetas están ahí para dar sentido a la página, no para describir el diseño, es un buen objetivo. Sin embargo, la versión actual de HTML no llega demasiado lejos para alcanzarla.Como resultado, SIEMPRE tendrá muchas etiquetas en sus páginas que están ahí para el diseño, sin otro significado. Eso no significa que no deba tratar de separar el contenido y el diseño tanto como sea posible; solo significa que no llegarás al 100%.

+4

IMO "div sopa "es tan malo como las tablas anidadas, y es más probable que cause problemas de diseño. ¡Al menos las tablas funcionan de manera consistente en todos los navegadores! –

+0

Creo que se puede evitar la sopa div con una buena implementación. Tiendo a considerar cualquier página web que se convierta en "sopa div" como demasiado hinchada (diseño inteligente) en primer lugar. – starmonkey

+0

Vale la pena señalar que hay un elemento diferente entre un elemento que se utiliza para el diseño y no tiene ningún significado (como div) y un elemento que se usa para el diseño y tiene un significado (como una tabla), lo que significa que no No coincide con su abuso como un elemento de diseño. – Quentin

22

Hace que la accesibilidad sea difícil. Imagine que es un navegador de texto y desea leer en voz alta el contenido del sitio web para personas ciegas. La mayoría de los diseños basados ​​en tablas tienden a ser muy difíciles de raspar y de "entender" para una máquina.

HAY mucho elitismo/política/fanatismo en estas discusiones de Tablas vs. CSS, pero a gran escala, los Diseños CSS son más limpios que los diseños basados ​​en Table.

Teóricamente, también son más fáciles de mantener. Diga, ¿quiere mover la navegación de izquierda a derecha? Claro, solo cambia un archivo CSS y estás bien. Pero, una vez más, esto generalmente no ocurre en los sitios web más complejos donde los CSS a menudo están profundamente anidados y son tan complejos que los cambios no son fáciles, mientras que los sistemas de plantillas hacen que los diseños basados ​​en tablas no sean completamente imposibles de mantener.

5

Hay un pretty good article en el sitio que pone el diseño de una página en tablas vs css cabeza a cabeza. Es una lectura bastante interesante y resalta algunos de los principales escollos para el diseñador/desarrollador cuando se utilizan tablas como el código fuente trillado con tablas, a menudo se requiere código fuente adicional y los cambios futuros son inevitablemente complicados.

1

Honestamente, no se preocupe tanto por el uso de tablas. Incluso algunas de las mejores personas semánticamente correctas aconsejan usar tablas si es más fácil para el flujo del documento. Solo use lo que funciona, la desventaja de usar tablas no es tan buena.

+0

-1 por no enfatizar que esto es un retraso – orip

2

La idea es que el marcado de la contenido/significa de la página es una cosa mejor que hacer, no sólo porque hace que sea fácilmente modificable y styleable sino también (posiblemente más importante), ya que mejora la accesibilidad, para aquellos que usan lectores de pantalla, etc. (¡y para los motores de búsqueda!). Lee Dive into Accessibility en algún momento. [Y si tiene datos tabulares, debe usar una tabla, por supuesto.]

Aunque "intente usar CSS, no tablas, para el diseño" es una regla muy importante que debe intentar seguir tanto como sea posible, en última instancia, "hacer lo correcto" tiene algún costo, y cuando es demasiado alto, debe reconsiderar sus prioridades. Ver http://giveupandusetables.com/

1

Con soporte para nuevas propiedades de visualización de CSS en IE8, este debate sobre tablas vs CSS podría finalizar pronto. Dado que es más fácil y sensato pensar en diseños en el formato de tabla/cuadrícula, la disponibilidad de la tabla , tabla-fila, tabla-celda, tabla-título, tabla-columna, tabla-fila-grupo, etc., como propiedades CSS facilitará la implementación del diseño de manera significativa.

Este article tiene una descripción detallada.

16

Vale la pena mencionar que las etiquetas < de la tabla > siguen siendo legítimamente utilizadas cuando se muestran datos tabulares. La regla de oro que uso es si estoy mostrando algo que fácilmente podría vivir en una hoja de cálculo, entonces una etiqueta de tabla es el camino a seguir.

+0

Esto es algo que la gente tiende a olvidar no waydays. Además, también está el diseño de tablas WITH css. La mayoría de los sitios solo usan una fracción de lo que puede hacer una tabla y el estilo de las tablas generalmente ocurre en línea. –

+0

Si uno quisiera producir una página con algo así como un libreto de ópera formateado como columnas paralelas para el texto en italiano e inglés, ¿habría alguna forma práctica además de tablas para mantener la asociación entre cada línea o dirección del escenario en el italiano? y su parte correspondiente de la traducción? – supercat

1
  • cargas lentas
  • semánticamente incorrecta
+1

El tiempo de carga es un buen punto. Una tabla no puede comenzar a renderizarse hasta que la tabla * whole * haya sido analizada.Otras etiquetas se pueden representar de forma gradual. – jalf

2

Esto puede no ser adecuado sobre el tema, pero el problema más frecuente que tengo con diseños de CSS es que pueden ser difíciles de configurar para que siempre Estirar el nodo padre en lugar de desbordarlo. Esto se convierte en un dolor aún mayor cuando se golpea una de las no raras instancias de IE haciendo algo completamente diferente a FF. Arreglar este problema con una tabla suele ser más fácil y más compatible que varias soluciones de JS que de lo contrario se vería obligado a utilizar.

1

La mayoría de las ventajas (más rápido, no spacer.gif, accesibilidad, contenido vs marcado, etc.) ya se mencionaron, pero me sorprende que nadie mencione que css can hacen cosas que las tablas simplemente no pueden o son al menos más fáciles.

Además, solo se trata de usar la herramienta adecuada para el trabajo correcto. Las tablas son para datos tabulares y css se usa para diseñar su contenido. Lo que la gente tiende a olvidar es que también puede style your tables ...

El problema es que falta compatibilidad con el navegador. Por lo tanto, las personas usan hacks.Por lo tanto, los navegadores interpretan css de manera diferente para acomodar esos hacks. Es un circulo interminable.

+0

El soporte del navegador es mucho menos deficiente en estos días. – Quentin

+0

Si puede permitirse ignorar la familia IE. Estoy anticipando el día en que podemos usar css3 como una tecnología viable. ¡El diseño de la plantilla podría salvarle la vida! –

4

Uno de los principales puntos de crítica de los diseños basados ​​en tablas es que son rígido. Se usaron para crear páginas perfectas en píxeles en todos los navegadores. El precio de esto es la rigidez, lo que perjudica el acceso. Un diseño de una pantalla de 800x600 píxeles puede hacer que alguien con una pantalla HD de pantalla ancha tenga que entrecerrar los ojos para leer todo. Cuando un visitante fuerza un aumento del tamaño de fuente en el navegador, rompe el diseño, a veces bastante mal.

Un diseño basado en CSS es flexible y se puede utilizar para crear un diseño que se verá bien (y similar, pero no igual) en cualquier pantalla/tamaño de fuente. La estructura interna mejorada también ayuda a los lectores de pantalla y otras herramientas de accesibilidad, así como a las plataformas/dispositivos móviles.

La etiqueta de la tabla no está obsoleta y todavía tiene un papel que desempeñar en los diseños impulsados ​​por CSS: se debe utilizar al mostrar datos tabulares (como en una hoja de cálculo). Para esto, es perfecto, pero ya no se debe usar para el diseño de página.

+2

Excepto que es una mentira. Pasé la mitad de mi día golpeando mi cabeza contra un diseño de CSS puro de ancho fijo, tratando de hacerlo de ancho fluido y no comportarme de manera idiota, y al final tuve que usar una tabla de diseño para lograr esto. – chaos

+0

@chaos: Lamento que estés teniendo problemas, pero tardé más de un día en familiarizarme con el diseño flexible y la configuración de tipos, y observar muchos buenos ejemplos, jugar con ellos, ver cómo fluyen cuando Los cambio de tamaño, etc. – Galghamon

2

Honestamente, la multitud contra la mesa a menudo son culpables de ser simplemente nazis de las normas. El hecho es que los humanos han estado usando tablas para el diseño ya que "liderar" involucró el uso del plomo real.

El argumento principal contra las tablas es accessiblity; y ese es un tema importante. Sin embargo, CSS es solo una solución de curita para el verdadero culpable: ¡HTML es un lenguaje de marcado horrible!

Si no se suponía HTML para ser para el diseño, entonces ¿por qué tenemos <centro>, <b>, <u>, o <i>? ¿Por qué no tenemos una etiqueta de < > para agrupar semánticamente los párrafos? ¿Por qué tenemos 6 etiquetas de encabezado?

Tenemos que dejar de pretender que HTML es estrictamente semántico cuando claramente no lo es. Si bien CSS es bueno implementando la presentación, no es tan bueno definirla. Si fuera así, no necesitaríamos sopa de div para hacer un diseño de 3 columnas. Lo que realmente debería estar pasando con HTML5 (pero, por supuesto, no) es tener etiquetas de diseño con roles claros, y usar CSS para aclarar lo que hacen esas etiquetas.

+0

Cuanto más lo uso, más siento que falta CSS. Eche un vistazo a esto: http://www.w3.org/TR/2009/WD-css3-layout-20090402/ Hubo algo de entusiasmo sobre esta característica, pero personalmente creo que esto hará que el 90% de los escenarios Necesito una brisa en lugar de una pesadilla. –

Cuestiones relacionadas