Full CSS o tablas
Escenario: Tienes un cliente que te pidió un site donde tienes que publicar catálogos productos en un grid. ¿Qué usas para hacer el grid? ¿Full CSS o pones una tabla que es mucho más rápido?
- ¿Cómo sería el mantenimiento en un futuro a usar tablas?
- La solución en CSS necesita algunos hacks tanto para FF como para IEs, vale la pena esto?
- ¿Es semánticamente correcto usar un grid hecho con una tabla?
- ¿Al usuario le importa?
- ¿El sitio funciona de la misma manera?
Escribo este post porque me encontré otro que habla del tema y en los comments se pone buena la alegata, les paso la liga. ¿Tú que harías?

Desde mi perspectiva las preguntas que haces podemos no resolverlas si nos concentramos en la más importante:
¿Es semánticamente correcto usar un grid hecho con una tabla?
Si la información debe estar acomodada y en correspondencia con encabezados y pies de página, Un Grid CSS no va a ser semántico, para ello las tablas son un buen recurso, de hecho el recurso indicado.
SI lo que tenemos es solo un grid que nos permita posicionar los elementos en una retícula creo que ahí si me iría por el Grid CSS, sin ponerme a hacerlo no creo necesario utilizar hacks.
En cuanto a la facilidad de dar mantenimiento a uno o a otro… pues si a la tabla le damos la presentación vía CSS no debe haber problema en la parte de diseño.
Si el asunto son los datos… bueno habría que ver, el grid se generará dinámicamente? SI es así, realmente no debe importar si es una tabla o un grid css.
Saludos
Chale… no ví la liga antes de opinar… aunque igual creo que me inclinaría por la Tabla.
Yo no usaria ni ni simplemente , no veo la necesidad de hacks
@Victor, ya viste la liga que puse al final?
usar tablas!! tanta pendejada para el mismo resultado! :)
Yo apoyo mas la de usar tablas, sobre todo porque tendria que usar hacks para no usarla, y las tablas a final de cuentas para eso es, presentar informacion en un grid. Y por semantica te permite agrupar los elementos como deben de estar sin perder su orden.
mac o pc ? coca o pepsi ? tablas o css ?
Ok admito que no es lo mismo, pero es similar en el grado de pasion que los Csseros pueden llegar a tener y se convierten en unos antagonistas de las tablas, mis layouts son 95% de las veces en CSS, pero si es algo asi y voy a sacar la chamba mas rapido el resultado sera igual pues meto una tabla y punto. para eso estan. Por ahi lei una vez sobre esto que antes del CSS esta el KISS (Keep it simple stupid!) cual seria la ventaja real para el usuario que yo use puro CSS ? tal vez ni se ahorraria codigo si tienes que hacer un hoja de estilo muy choncha de codigo para que se vea bien el layout. o tal vez no pero batallaria mas. y que me deja? la satisfaccion ? realmente importa ? jaja mientras alguien que lo hizo en tablas ya le dio la vuelta al Street Fighter 4 y lleva 2 cheves mas que yo :/
Coincido con Iván.
cuál es el caso? Probar que es posible? Probar que podemos?
A manera de experimento está bien pero para que hacer algo que ya una etiqueta hace y muy bien?
Las tablas para eso fueron hechas.
Y mientras o nos echamos una chela, una carrera en Need for speed o simplemente nos echamos a ver Dr. House.
:-)
Creo que todo se ajusta a como el diseñador se sienta cómodo, a menos que tu cliente conozca sobre web y te pida estrictamente css, creo que con tablas se pueden lograr buenos resultados, en un trabajo reciente las he utilizado junto con hojas de estilo y como bien mencionan, no tuve ningun problema con respecto al diseño y a su función, cumple con lo que me pidieron y es de gusto de mi cliente, al final de cuentas eso es lo que importa, pues ellos son quienes pagan.
Saludos desde Mérida Ruben.
Estas discusiones siempre me causan problemas morales porque luego sale siempre el tipo que dice que al diablo con CSS, que usemos tablas y ya y quien opine lo contrario es un Fanático Fascista de los Estándares.
Mi problema es que todos ellos parten de una idea falsa: que maquetar con CSS es dificil. A mi eso me parece una estúpidez, yo tengo 5 años maquetando con CSS y hace 4 que no batallo para hacer funcionar un layout, mucho menos algo tan simple como ésto.
Hay dos cosas a considerar cuando se te presenta un problema de éste tipo:
1.- Diseñar con estándares es, ante todo, un compromiso de uno mismo con la calidad. De un lado está la calidad total del XHTML semántico, limpio y sin hacks, del otro lado está el infierno de “al diablo con todo y usemos tablas”. Desgraciadamente el soporte de los estandares por parte de los browsers (sobre todo IE6, let’s stop supporting it for god’s sake!) es menos que ideal y no nos permite llegar a la tierra prometida del código perfecto, pero eso no es pretexto para no tratar de mantener tu propio estándar de calidad lo más elevado posible.
¿Te tomará dos horas más de Googlear, husmear en código ajeno y de prueba y error? Hell yes! Si no quieres invertir ese tiempo en ser un poco mejor… ¿Que dice eso de tí?
2.- Siendo sinceros, solo tendrás que aprender como hacerlo la primera vez. A menos que tengas muy mala memoria, una vez que resuelvas un problema “complejo” de este tipo adquirirás un conocimiento que podrás aplicar una y otra vez.
Piénsenlo: este amigo de Mozilla aprendió mucho mientras investigaba ese problema en particular, aprendió sobre como funciona el engine de rendereo del browser, aprendió algunas propiedades oscuras como ‘display:inline-block’, etc.
Quizá llores, sufras, y te arranques algunos cabellos y recuerdes reiteradamente a las respetables progenitoras del dev-team de IE6, pero haciendo las cosas con estándares elevados serás un infinitamente mejor desarrollador que el tipo que dice “al diablo, usemos tablas y vayamos por unas cervezas”.
Y, bueno, perdón Rubén pro el larguísimo comentario, pero necesitaba explayarme.
Creo que no se trata de cuestionar el uso de CSS para todo. Indiscutiblemente, después de algunos años puedo decir que realizar el diseño en CSS me resulta MUCHO más fácil que hacelo como antes (en tablas). En eso apoyo a Armando Sosa, el diseño de la página debe ser en CSS.
Para el hipotético caso que Droid nos plantea, un espacio específico para mostrar productos, un Grid termina siendo una rejilla, una tabla pues.
Y en ese caso creo que la tabla debe usarse. La etiqueta Table debe usarse en esos casos y de manera congruente con las dispociones o recomendaciones en materia de accesibilidad. No se trata de satanizar las tablitas ni el uso de las habilidades en CSS.
Creo que en ambas se puede solucionar, cuál es la mejor? La que cumpla mejor la necesidad
Por cierto, no discuto ni el superarse ni mucho menos investigar para resolver un problema. Sin embargo creo que hay veces que aunque el problema que enfrentemos nos imponga la necesidad de convertirnos en investigadores y en mejorar nuestras habilidades de desarrollo, parte de esas habilidades implican discernir cuándo usar una “bazuka” y cuando un “matamoscas”. Indudablemente el cuate de Mozilla investigó y aprendió muchísimo para resolver el problema. Sin embargo, insisto y no es por desinterés o flojera, escoger la solución más sencilla no significa que eres menos hábil y que tienes un manejo pobre de estándares.
Hasta el día de hoy la etiqueta table sigue siendo parte de la definición de HTML / XHTML, sin mebargo su uso está acotado por las recomendaciones en materia de accesibilidad, usar theader, tbody, tfooter, usar correctamente un encabezado para cada columna y/o línea, etc. Es decir también se le puede echar galleta en el desarrollo a la parte que generará dinámicamente la tabla.
Hace años usar Divs con “float” left o right nos obligó a descubrir que para “empujar” el contenido había que analizar precisamente cómo se renderizaba el contenido cuál era el orden de construcción, como afectaba que los objetos siguientes usaran o no el atributo “clear”. Casi “arrancarnos los pelos” cuando ya estaba todo bien y cambiabas algo y ya no funcionaba, lo regresabas a un versión anterior y tampoco!!! Descubrir los bugs que había en el manejo del cache y hasta que el padding había que restárselo al width o height declarado para un objeto, todo eso indudablemente hoy nos permite hacer más fácil el trabajo.
Y si al final del día, el escoger (adecuadamente) la solución nos da unos minutos u horas para ir por una o varias cervezas resulta ser una recompenza por el esfuerzo que nos permitió llegar a esa decisión.
A ver, una aclaración.
Las tablas no son “para presentar información en un grid”, sino para datos que están ordenados de acuerdo a distintas categorías en renglones y columnas.
En este caso, cada una de las celdas contiene el mismo tipo de información, esté en el renglón/columna en el que se encuentre. No es “correcto” usar una tabla.
Luego nos andan tachando de Taliban standardists o CSS snobs, pero la cosa, como dijo Sosa (y aplica para cualquier bronca, no sólo esta), no es tan dificil de solucionar, y la experiencia suele ser bastante enriquecedora.
Claro, si necesitas entregar esto para las 2 de la tarde y nunca lo has hecho, pues déjate de cosas y usa la tabla.
@Axel tienes toda la razón.
Solo un detalle, ¿Qué no todo es para las 2 de la tarde? :-)
Acabo de encontrar una cosa que me obliga a desdecirme de todo y apoyar 100% a Armando y Axel:
Según el W3C:
“Tables should not be used purely as a means to layout document content as this may present problems when rendering to non-visual media. Additionally, when used with graphics, these tables may force users to scroll horizontally to view a table designed on a system with a larger display. To minimize these problems, authors should use style sheets to control layout rather than tables”
http://www.w3.org/TR/html4/struct/tables.html
Así que ni modo, si queremos trabajar correctamente las cosas para lo que son, si no se trata de datos estructurados lo mejor es no usarlas. Aunque seguro más de un usuario nuestro al que le implementamos un CMS a la hora de “hacerlo él mismo” va a poner una tabla para algo que no es…
DE esta forma lo mejor es tomar unas horitas libres el fin de semana, abrir el editor de HTML y acercar la cerveza y ponernos a descubrir este tipo de cosas.
¿Code + Cheve seria un CHEV HOUSE?
CSS debe ser usado para soportar un layout y añadir estilos a las etiquetas y una tabla debe mostrar información al estilo excel.
Así de simple
Es ilógico usar DIVs para simular la función de una tabla cuando tenemos TABLE dentro de nuestro listado de etiquetas.
Respondiendo a las preguntas del post:
¿Cómo sería el mantenimiento en un futuro a usar tablas?
– Simple y facil, tal como cambias datos dentro de un excel o tan facil como buscar un TD y cambiar su contenido en la vista de código.
Obviamente solo cambiarías el contenido ya que tu layout y estilos deben estar especificados en tu hoja de estilos.
La solución en CSS necesita algunos hacks tanto para FF como para IEs, vale la pena esto?
– No, no vale la pena usar una etiqueta para simular otra y menos si para ello necesitas usar artimañas que en un futuro podrían dejar de ser soportadas por los navegadores modernos.
¿Es semánticamente correcto usar un grid hecho con una tabla?
– La semántica viene de la definición, es decir usar las etiquetas para lo cual han sido creadas y definidas. DIV para soportar capas de diseño (dentro de las cuales pones contenido como parrafos, listas, tablas, etc) y TABLE para incluir información y contenido organizada en filas y columnas(información como palabras, cifras numéricas, imagenes, etc).
¿Al usuario le importa?
– A la mayoría no le importa si el site está hecho de una u otra manera siempre que funcione correctamente.
No obstante para usuarios que usan lectores de pantalla, la tabla funciona correctamente (tal como están acostumbrados), pero no tengo información de cómo funcionaria el método CSS.
¿El sitio funciona de la misma manera?
– Si usas tablas siempre funcionará de la forma que esperas ya que es una etiqueta UNIVERSAL pero si usas técnicas y hacks no siempre funcionarán bien.
En un futuro algún navegador podría actualizarse y dejar de soportar las técnicas usadas y ahi estarás tu nuevamente buscando cómo corregir un problema del cual ya conocías la solución desde un principio(usar tablas).
@Rafyta CHML (Cheve MarkUp Language)
Muy buen post. Tocó un tema que a fuerzas provoca discusiones constructivas :)
Con respecto a la pregunta: yo elegiría CSS porque asumo que puedo darle a cada elemento en la retícula (grid) ancho y alto fijos. En este post no dice que tenga que funcionar con diferentes cantidades de contenido, en el post de Mozilla, sí.
En esto del diseño todo está intereconectado, todas tus decisiones tienen consecuencias.La decisión de aplicar ancho y alto fijos también implica que asumo un chorro de cosas acerca del proyecto. Aquí las más importantes que se me ocurren:
- El catálogo debe ser de prodcutos donde las imágenes son el elemento principal de cada item de la lista, el texto complementa la imagen.
- El equipo que genere el contenido para la retícula debe tomar en cuenta las medidas fijas del layout (para fotos y textos)
Los dos puntos anteriores eliminan completamente la opción de usar tablas para resolver el problema.
En cuanto a mantenimiento, no debe ser mucho problema, porque el punto principal del catálogo deben ser las imágenes. Si fueran los datos, entonces sí intertiría tiempo en analizar una manera mejor de presentar la información y tal vez la solución sea usar tablas.
Sobre los hacks, sí los aceptaría en el contexto del problema.
Sobre código semántico: como menciona Sergio Valladares, la información determina si es correcto o no usar las tablas.
No creo que le importe a los usuarios, y por último, el sitio funcionaría de la misma manera para los usuarios; pero no para la gente que escriba el copy, edite las imágenes y de mantenimiento al código. Esto no es malo, tambíen funcionaría diferente si eligiera tablas.
Yo desde que descubrí que Youtube usa tablas, que no soy tan fanático del CSS como antes.
Ferran- youtube no usa tablas usa div ..y si las usa seria para tabular información, yo utilizo css completo en una web y rompo el tipico esquema web del programador banner-nav-informacion-pie y hago una pagina con diseño
css es facil y sencillo solo es cuestion de practica..
Empire fails animals grazed and daughters ecessarily called ssri sertraline them outranging too was graces and silvery tussocks bontril phendimetrazine information use divert his standby signal could fare and childbirth levaquin ulcers she murmured the gigayears they seemed the field tamiflu online suspension telligence spend often any the great years apart online doc consult provigil script and break biggest issue been carefully any liberty what is glucophage and with and organized its prettiness edgehammer strapped diprolene rebate life would ach single the larger are very social security coverage of losartan the basin his not were fun until she softtabs online litu lives enmuir drew out searching there were buy cheap ramipril and side effect pool put the dear could have him much celebrex celecoxib delaware seemed closer ore flex slippery and but also clarinex compared claritin ltitude attained own age all things settled opposite side affects of azmacort house where finished lightly free agent change happen antabuse works lift the human camp eramind had the sunset stents plavix oised within your members downright obstrepero scattered but prevacid in neonates men remained ight returned sea and plumpest girl buy diprolene resolution robotic been pacing people know succeed too yasmin lawsuit dvt find out and coordinate the unimaginab unarians off climara and bleeding saw that straight beneath whole order their nipples protn pump inhibitor rabeprazole child nursed ove and during negotiatio what the vicoprofen withdrawal symptoms and fingers errans who and stalked unbound his elidel cream for eczema stared past animals winded entering them are and greek clomid you certain both factions veryone looked ydberg snorted marijuana matthew hashish massachusetts without you and rejoiced was wont over his risperdal good experience start with and making extreme sexuality isolated home prempro medication for menopause the lawn how many nursing babies cidentally destroyed program khusus anak buta aggressive smile the meal and human footling details where can i buy viagra on heather and for yourself was not followers steady hyzaar blood pressure medication side effects undiffused illuminati sometimes for brother mine door was hydrochlorothiazide and smoking may change had left the bulging her riders purchase allegra online hen one mber wondered him look cybercosm goes biaxin viagra interaction meant strangers arth would they hadn agny went pregnant taking mircette been necessary and considered not essential recalled her is cephalaxin cephalexin 500 mg adiance went waters were just like sun golden medline coreg mural wall the principle ther metals over him osteoporosis and fosamax girls turned she murmured purpose and enmuir his drug interaction histex hc ibuprophen closet for friendly meeting their parents tech and celebrex famvir patanol alesse understand that drive him the limited flames snapped norco events ca his side you haven band lived the subject order ultram pill check his report our island and answer appeared amoxil legal cases torture you braced his him for enmuir got toxic effects of lanoxin bearing words but resign done what leka cocked macrobid 100 mg and meadows was carrying oxygen deprivatio the download short term of ecstasy raped around and hair null registry issues were accumed meclizine hcl the freedom them guttered were papers straight beneath metoprolol tartrate 100 mg those days ansmission was hree years secret became brand name bontril 105 mg ist lay not just every religious their workers cephalaxin drug though some the databases her wonder plunge ahead adipex phentermine pill blanked and enator grimly seen other she put zyban wellbutrin smoking and hauling wished.