Las tablas malditas

La web semantica intenta dar signifado estructural al codigo de nuestro sitio, con el fin de mejorar la interoperabilidad entre los sistemas informaticos, sinque tenga que haber la intervención de un humano. Hay mucha terminología y palabras extrañas envueltas dentro de este concepto.
Pero para hacerlo más claro, pondré unos ejemplos.
En el viejo html escribiamos de esta forma el código para darle enfasis a una palabra.
Lorem <b>Ipsum</b> Dolor Sit Amet
Lo que se renderiza de la siguiente forma en el navegador:
Lorem Ipsum Dolor Sit Amet
En el actual xhtml escribimos de la siguiente manera
Lorem <strong>Ipsum</strong> Dolor Sit Amet
Lo que se renderiza como:
Lorem Ipsum Dolor Sit Amet
¿Cual es la diferencia?
En el primer ejemplo, solo es comprensible para un operador humano que a esa palabra se le hace enfásis.
Para un operador informatico, como por ejemplo un buscador, esto no es nada más que solo texto. Es decir, para él no tiene relevancia la palabra que marcamos dentro de <b> ya que es una etiqueta meramente presentacional, es decir no tiene otro objetivo más que decorar el texto al cual envuelve.
En el segundo ejemplo se usa <strong>, esto desplegará el mismo efecto visual que <b>, solo que para un buscador la pabra envuelta dentro de <strong> si tendrá relevancia, tiene significado semántico, el buscador sabrá que es importante.
Como estas etiquetas hay muchas que se quedaron obsoletas y fueron reemplazadas por otras.
Unos ejemplos
| Antes | Despues |
|---|---|
| font-face | se utiliza p, strong, em, blockquote, etc y se aplica estilo mediante CSS |
| center | se utiliza text-align: center; o margin: 0 auto en la hoja de estilo |
| br, img,etc | etiquetas sin cierre deben de cerrarse <br /> |
Así mismo uno de los cambios más significativos con el fin de conseguir una web semantica es el dejar de diseñar con tablas, para ello usamos contenedores <div>, las tablas las usamos para datos tabulares.
¿Porque es importante este cambio?
Al diseñar con tablas
- Aumenta el peso de tu archivo
- hace dificil a los buscadores accesar al contenido
- Entre mas celdas contenga más tarda en renderizarse el sitio
- Hace dificil y tediosa la tarea de modificar las páginas.
- Al ser una etiqueta destinada a desplegar datos tabulares, los buscadores la interpretarán como tal, por lo que la mayoría del contenido importante que incluyas en ella pasara desapercibido
Al diseñar con divs
- Aligeras el codigo de tu sitio
- Facilitas la tarea a los buscadores
- Es más facil mantener la estructura de tu sitio
- Las páginas se renderizan rápido
Esa es la razón de que no se usen tablas para diseñar un sitio, pero no significa que no deban usarse, se deben usar cuando sea requerido.
Nada me enferma más que la gente que desprecia las tablas como si usarlas fuera indebido. Los extremistas se empeñan en criticar cuanta tabla ven, aún y cuando esta esté siendo usada debidamente.
He visto a algunos personajes que preguntaban como hacer para crear una estructura similar a la siguiente con capas (divs)
| Frutas | Compras (KG) | Ventas (Kg) |
| Manzanas | 12 | 10 |
| Peras | 14 | 8 |
| Melones | 13 | 6 |
| Uvas | 10 | 9 |
Aunque es posible, no hay mejor camino que hacerlo con una tabla, además la tabla también se puede dotar de contenido sémantico.
Podemos empezar añadiendole un titulo a la tabla, para ello usamos la etiqueta <caption>
<table> <caption>Compra-Venta Frutas</caption> <tr><td>Frutas</td><td>Compras (KG)</td><td>Ventas (Kg)</td></tr> <tr><td>Manzanas</td><td>12</td><td>10</td></tr> <tr><td>Peras</td><td>14</td><td>8</td></tr> <tr><td>Melones</td><td>13</td><td>6</td></tr> <tr><td>Uvas</td><td>10</td><td>9</td></tr> </table>
Y queda de esta forma
| Frutas | Compras (KG) | Ventas (Kg) |
| Manzanas | 12 | 10 |
| Peras | 14 | 8 |
| Melones | 13 | 6 |
| Uvas | 10 | 9 |
Ahora usamos <thead> que sirve para definir el encabezado, que son las celdas ubicadas en la primera linea de la tabla. En este caso el encabezado abarca las celdas de Frutas, Compras y Ventas, las celdas dentro de <thead> deben de reemplazarse por <th>
<table> <caption>Compra-Venta Frutas</caption> <thead> <tr><th>Frutas</th><th>Compras (KG)</th><th>Ventas (Kg)</th></tr> </thead> <tr><td>Manzanas</td><td>12</td><td>10</td></tr> <tr><td>Peras</td><td>14</td><td>8</td></tr> <tr><td>Melones</td><td>13</td><td>6</td></tr> <tr><td>Uvas</td><td>10</td><td>9</td></tr> </table>
Lo que se visualiza como:
| Frutas | Compras (KG) | Ventas (Kg) |
|---|---|---|
| Manzanas | 12 | 10 |
| Peras | 14 | 8 |
| Melones | 13 | 6 |
| Uvas | 10 | 9 |
El cuerpo de la tabla debe especificarse dentro de <tbody>
<table> <caption>Compra-Venta Frutas</caption> <thead> <tr><th>Frutas</th><th>Compras (KG)</th><th>Ventas (Kg)</th></tr> </thead> <tbody> <tr><td>Manzanas</td><td>12</td><td>10</td></tr> <tr><td>Peras</td><td>14</td><td>8</td></tr> <tr><td>Melones</td><td>13</td><td>6</td></tr> <tr><td>Uvas</td><td>10</td><td>9</td></tr> </tbody> </table>
Y el final de la tabla se define con <tfoot>. (bueno el final de la tabla es </table>)
Cabe decir que este elemento debe de ir antes de la etiqueta <tbody>. De todas formas se visualizará al final de la tabla.
<table> <caption>Compra-Venta Frutas</caption> <thead> <tr><th>Frutas</th><th>Compras (KG)</th><th>Ventas (Kg)</th></tr> </thead> <tfoot> <tr><th>Total</th><td>49</td><td>33</td></tr> </tfoot> <tbody> <tr><td>Manzanas</td><td>12</td><td>10</td></tr> <tr><td>Peras</td><td>14</td><td>8</td></tr> <tr><td>Melones</td><td>13</td><td>6</td></tr> <tr><td>Uvas</td><td>10</td><td>9</td></tr> </tbody> </table>
He aquí el resultado final, nuestra tabla semantica.
| Frutas | Compras (KG) | Ventas (Kg) |
|---|---|---|
| Total | 49 | 33 |
| Manzanas | 12 | 10 |
| Peras | 14 | 8 |
| Melones | 13 | 6 |
| Uvas | 10 | 9 |
Hay ocasiones en que el diseño de un sitio es tan complejo que no hay otra forma de presentarlo que no sea con tablas, tal es el caso de los foros y los portales. Pero como ven, no hay razón para desprestigiar las tablas, las tablas son útiles si se saben usar y diseñar.
Add comment
Fill out the form below to add your own comments
Yo uso tablas para los comentarios de mi blog, se que esta mal, pero no se otra forma de hacerlo.
Traté de hacerlo con divs y la verdad que me resultó imposible, se me desparramaba todo. Asi que lo que voy a hacer es ver el código de esta página y copiartelo
Y tenés razón, es increible como aumentan el tamaño de un archivo el usar tablas. Hace poco me toco ayudarle a remodelar una pagina a un amigo y estaba practicamente toda hecha en tablas, lo saqué y deje lo necesario en tablas y el tamaño se redujo increiblemente.
Saludos y excelente laburo el que te mandaste con el post.
En los comentarios del blog no creo que haya tanto problema. Pero si las usas para el layout principal ahi sí.
Yo tampoco podía hacerlo con divs, hasta que hace relativamente poco aprendí una usar una técnica nueva, display: inline-block.
http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/
Solo requieres dos divs y una lista. Un div para el gravatar y otro para el comentario.
La verdad no pensé que fuera a quedar tan largo el post.
Salu2
Luego pruebo este metodo que mencionas. Gracias.
Muy bueno!!
Esta genial el Blog!
Para mi tambien se me complica usar <DIV> aunque reconozco q debria ser asi, pero el esquema me queda cualquier cosa menos lo que deseo por eso uso las tablas es mas facil.
Saludos
Hola kapry, el div es fácil de manejar entendiendo el modelo de caja. Pero de todas la tabla siempre será la más fácil de manejar aunque no es debido a menos que sea la única forma de maquetar.
I needed to compose you a tiny word to finally say thank you again just for the exceptional advice you have shared here. It’s certainly particularly open-handed of you to give unhampered what exactly most people could have advertised as an e-book to help with making some bucks for themselves, even more so considering that you might well have done it in the event you wanted. These pointers in addition acted to provide a great way to fully grasp that many people have the identical eagerness like my personal own to grasp more and more on the subject of this problem. I’m sure there are several more pleasurable instances in the future for individuals who see your blog post.