Escolar Documentos
Profissional Documentos
Cultura Documentos
intentalo con las CSS, ejemplo: <table style='border:1px solid blue;'>...</table> la declaracion CSS es el atributo style. esto solo es una pequea muestra, en CSS se puede hacer cosas mas complejas. prestale unos minutos de lectura al manual de CSS para que conozcas todas las posibilidades que puedes hacer...
No hay nada que me moleste ms que el menosprecio que se tienen a las tablas en XHTML. Menospreciarla en todos los sentidos, tanto como si la utilizaran como un elemento para realizar maquetas como cuando se menosprecia su uso creyendo que las pginas estndar no llevan tablas.
Realmente, las tablas son unos de los elementos que ms respeto debemos tener, sobre todo hay que concentrarse en un concepto: tabular data (datos tabulares). Las tablas fueron concebidas para representar datos de forma tabular, no porciones de una pgina en diferentes celdas. Entonces, cmo se aprovecha una tabla? Pues el primer paso es averiguando qu elementos juegan un papel primordial en ella y qu atributos la benefician.
El elemento <table>
Este elemento es de primer nivel, esto significa que en la escala de etiquetas que escribes cuando inicias una tabla ste siempre tiene que estar al comienzo de todo, como en este ejemplo:
<table summary="Esta tabla contiene los valores de uso de los navegadores en el sitio Minid.net"> <caption>Tabla de uso de navegadores</caption> <thead> <tr> <th>Navegador</th> <th>Agosto</th> </tr> </thead> <tfoot> <tr> <td colspan="2">Datos segn el sistema AWSTATS de Agosto.</td> </tr> </tfoot> <tbody> <tr> <td>Mozilla Firefox</td> <td>95%</td> </tr> <tr> <td>Internet Explorer 6</td> <td>5%</td> </tr> </tbody> </table>
Tabla de uso de navegadores Navegador Agosto Datos segn el sistema AWSTATS de Agosto. Mozilla Firefox 95% Internet Explorer 6 5%
El atributo summary
Es interesante este atributo. Sirve para describir el sumario de la tabla.. Sirve para muchas cosas, pero la primera aplicacin que le encuentro es la comprensin que puede realizar un ordenador y aprovechar esa informacin para otras cosas. Para el usuario slo le queda ver las propiedades de esa tabla con su navegador favorito y ste le indica que contiene el sumario de esa tabla:
El elemento Caption
Si observan el modelo de tabla que hice en el ejemplo anterior de este artculo, podrn darse cuenta que he insertado el elemento <caption>. <caption> (del ingls caption, subttulo) sirve para poner un ttulo a la tabla. Este elemento tiene una reaccin grfica visible: se renderiza al comienzo de la tabla y puede ser formateado con CSS sin problemas, eso se los dejo a vuestra imaginacin. <caption> en cierta forma slo agrega un nivel ms de lectura y comprensin para nuestra tabla. no todas las tablas requieren un subttulo, pero tratndose de dar la mayor cantidad de informacin pueden usarla sabiamente.
Si observan esa tabla, vern que no tiene un gramo de atributos en el cdigo HTML, sin embargo con CSS y una adecuada seleccin de atributos podemos darle un formato final de calidad y muy extensible. Ahora les muestro lo simple que es un formato de CSS para la tabla compare que hice:
table.compare { width: 410px; border: 1px solid #999; margin: 0 auto 1em auto; } table.compare thead th { font: bold .7em/1.4em Verdana, sans-serif; color: #000; text-align: left; padding: .5em; background-color: #FFFFE1; } table.compare tbody th { font: .7em/1.4em Verdana, sans-serif; color: #000; text-align: left; padding: .5em; border-top: 1px solid #eee; background-color: #f9f9f9; } table.compare tfoot td { font: .7em/1.4em Verdana, sans-serif; color: #000; text-align: left; padding: .5em; border-top: 1px solid #eee; background-color: #f9f9f9; } table.compare tbody td { font: .7em/1.4em Verdana, sans-serif; color: #666; text-align: left; border-top: 1px solid #eee; padding: .5em; }
Razonando lo que acabo de presentarles se darn cuenta que incluso hasta ahorramos tiempo y golpes de tecla escribiendo cientos de reglitas de CSS para cada antojo que tenemos sobre una tabla
El elemento <th>
Importantsimo elemento en las tablas. Este elemento es para definir las cabeceras de una tabla. Para que os hagis una idea de lo que hablo, si en una tabla hay 12 celdas apiladas en 4 grupos de 3 celdas por lnea, cules de ellas podran diferenciarse como cabeceras de tablas y cules seran datos reales de la tabla? Es difcil saberlo sin que un humano tenga que comprender esa informacin. Para un robot en la web, que lee cdigo y lo analiza, esa tabla tiene directamente 12 celdas de datos estadsticos y no sabr diferenciar una celda de otra.
Abreviatura IE Moz Op
Esta tabla est hecha como mencionamos con 12 celdas, ninguna dice o afirma que las 3 primeras son cabeceras, dando como resultado una mala clasificacin y un problema aadido para los robots.
Abreviatura IE Moz Op
Esta tabla claramente diferencia las cabeceras, ayudando a los robots a diferenciar entre una cabecera descriptiva y los datos estadsticos de otras. Sin embargo no he utilizado ningn elemento extra como <strong> o <b>, slo he indicado que las cabeceras son <th>. Nunca olvides que cada elemento fue hecho para cumplir una misin, una mala aplicacin de los mismos te desviar del camino que quieres seguir.
El atributo abbr=""
Al igual que en el elemento en linea <abbr>, las cabeceras y las celdas pueden llevar un atributo interesante y de impacto semntico llamado abbr="". Ah puedes definir de forma extensa la abreviacin de una celda o una cabecera. Esto es ideal y prctico para aquellas tablas donde el espacio horizontal es limitado. Un ejemplo claro lo pueden ver en los calendarios que son creados en los weblogs: Donde Lu, Ma, Mie, Jue, Vie, Sap, Dom puede leerse y escucharse como Lunes, Martes, Mircoles, Jueves, Viernes, Sbado y Domingo. Para ello les mostrar este pedacito de cdigo que evidencia dicha propiedad:
<table summary="Calendario de notas escritas en el weblog minad.net"> <thead> <tr> <th abbr="Lunes">Lu</th>
<table summary="Calendario de notas escritas en el weblog minad.net"> <thead> <tr> <th><abbr title="Lunes">Lu</abbr></th> <th><abbr title="Martes">Ma</abbr></th> ...
Tanto el primero como el segundo son correctos, pero el primero es ms ameno para estos casos y tambin ayuda en el ahorro de escritura de caracteres por celda.
El elemento TD
Este elemento es el ms conocido y ms utilizado en el proceso de creacin de tablas. Realmente explicar qu hace me da pereza, pero intentar resumir su propsito: crear celdas de datos. Este elemento en s se diferencia de las cabeceras <th> por su valor neutro, digamos que, en la vida real, un <td> puede ser cualquier cosa pero un th siempre ser un elemento para definir el significado de una lnea o una columna.
Ms cdigo escrito en una tabla. Ms trabajo luego para cambiar de estilo. Ms peso en bytes en el documento. Tarda ms tiempo en renderizar una tabla.
Todo esto con CSS se anula de una forma increble, pero no todo el mundo sabe hacer esto, intentar mostrarles algunas formas que utilizo para ahorrarme de escribir muchas clases o hacer trucos extraos para darle una esttica buena a cualquier tabla.
Es importante tener una tabla bien escrita en HTML para poder formatearla con CSS. Para ello me he servido de un ejemplo que haba visto en la web. Simplemente este modelo de tabla es lo ms chungo que he visto en 5 minutos de bsqueda en Google. El primer paso fue limpiar la tabla de todo tipo de etiqueta que he visto de ms. En el ejemplo Esto es una tabla chunga, podrn ver que han utilizado para comenzar atributos que no hacen ms que molestar y agregar peso a la tabla. Las cosas que borrar estn marcadas con nfasis:
<table border="0" cellpadding="0" cellspacing="0" width="480"> <tbody><tr> <td colspan="5" valign="top"><font size="2"><b>Tabla 3: </b>Ingredientes y porcentajes de las diferentes dietas (base fresca) (Ensayo 2)</font></td>
A los 5 minutos de mirar los datos de la tabla, ca en la cuenta que muchos datos de la misma se pueden representar de mejor forma, sin tener que hacer formas raras, el resultado de la cabecera fue:
<table class="ensayo" summary="Ingredientes y porcentajes de las diferentes dietas (base fresca [Ensayo 2])" cellspacing="0"> <caption>Ingredientes y porcentajes de dietas</caption> <tbody> <tr class="principal"> <th></th> <th>T</th> <th>V5</th> <th>V10</th> <th>V15</th> </tr> <tr class="etapas"> <th colspan="5">Etapa 0-35 <abbr title="Kilogramos">Kg.</abbr> peso vivo:</th> </tr>
Luego de limpiar la tabla un poco y dejando slo los <td> y los <tr>, paso a agregarles las etiquetas de agrupacin que antes haba mencionado: <thead>, <tbody> y <tfoot>.
Agregados de la tabla
Para finalizar el toque de la tabla, habr que escribir el sumario de la tabla usando el atributo summary="..." y ponerle un <caption> como se puede ver en este ejemplo:
<table summary="Ingredientes y porcentajes de las diferentes dietas (base fresca [Ensayo 2])" cellspacing="0"> <caption>Ingredientes y porcentajes de dietas</caption> <tbody>
<table class="ensayo" summary="Ingredientes y porcentajes de las diferentes dietas (base fresca [Ensayo 2])" cellspacing="0">
Es importante, que sepan que camino tomar: usando una clase o usando un ID, no vaya a ser que luego no valide la pgina o se les complique con otras cosas. Una vez terminadas la inclusin de la clase, pasamos a la hoja de estilo propia un archivo de CSS incluido en el servidor o escrito directamente en la misma pgina. En el ejemplo final, observarn que el CSS est en la misma pgina por cuestiones prcticas. Comenzar escribiendo primero las propiedades fsicas de la tabla: qu tamao va a tener, si tendr un borde externo, qu margenes tendr con respecto a otros elementos, etc.
table.ensayo { border: 1px solid #ccc; width: 500px; margin: 20px auto; }
Esto es lo que obtenemos de nuestra tabla llamada compare: borde nico de 1 pxel, ms una anchura de 500 pxeles y un margen superior de 20 pxeles y mrgenes automticos tanto para la derecha como la izquierda ahora prosigo a crear el resto de las cosas, como por ejemplo el elemento <caption>:
table.ensayo caption { font: bold 1em/1.5em "Trebuchet MS", Tahoma, Arial, sans-serif; color: #000; text-align: center; margin: 10px auto; }
El <caption> tendr una tipografa, con un color especial y estar centrado tambin con respecto a la tabla. Luego colorearemos las cabeceras y tambin les incluiremos un tipo de tipografa y paddings para ir dndole forma:
table.ensayo tbody tr.principal th { font: bold .9em/1.5em "Trebuchet MS", Tahoma, Arial, sans-serif; color: #fff; background: #5FACF3; text-align: left; padding: 5px; border: 0; }
table.ensayo tbody tr.etapas th { font: bold .9em/1.5em Trebuchet MS", Tahoma, Arial, sans-serif; color: #fff; background: #DC4503; text-align: left; padding: 5px; border-top: 1px solid #eee; } table.ensayo tbody th { font: bold .9em/1.5em Trebuchet MS", Tahoma, Arial, sans-serif; color: #DC4503; background: #FEFFF1; text-align: left; padding: 5px; border-top: 1px solid #eee; }
Siempre me gusta darle toques de lneas suaves y colores pasteles a las celdas y a las cabeceras ponerles colores un poco ms saturados y oscuros, pero es una cuestin de gusto personal (que cambia con el tiempo), ustedes pueden hacer las pruebas que quieran. Como han observado, todava no he escrito una clase particular para una celda, slo hice (porque este caso es bastante especial) una clase para diferenciar un tipo de linea <tr> de otras, para poder tener dos tipos de cabeceras <th> de diferente color tr.etapas (que en HTML se traduce en <tr class="etapas">). Ahora slo me queda estilizar las celdas normales:
table.ensayo tbody td { font: .9em/1.5em "Trebuchet MS", Tahoma, Arial, sans-serif; color: #666; background: #fff; text-align: left; padding: 5px; border-top: 1px dotted #eee; }
Nuestra tabla ensayo debera quedar como esta que tengo en mi servidor.
Resumen de la leccin
Esta tabla de ejemplo que les he mostrado tiene cambios significativos de todo tipo, desde los mencionados hasta mejoras semnticas como normalizacin de las etiquetas, cabeceras, agrupacin de datos. De todas formas, me hubiera gustado ms cambiar los modelos de datos, presentarlos quizs en otro orden, pero esto era slo un ejemplo. Pueden ver la tabla original y la terminada.
Hay muchas cosas que podemos obviarnos a la hora de crear tablas. Debemos abstenernos de hacer cosillas raras como esta:
El maldito bgcolor="..."
Esta propiedad del HTML se ha ganado mi odio. Sobre todo por la inutilidad de la misma. Slo deja especificar un color a una celda, linea o toda una tabla entera. Esto es algo por supuesto reemplazable en CSS, de tal forma que no se imaginan las cosas que se le puede aplicar a una celda con propiedades de CSS desde una imgen hasta un piln de colores. Por eso NO UTILICES ESTA PROPIEDAD DE HTML BAJO NINGN CONCEPTO.
No seas border
No uses el atributo border="...", te conviene usar una propiedad de CSS.
<table width="770" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td align="center" valign="middle" bgcolor="35A5DB"><img src="images/spacer.gif" width="10" height="10"><img src="images/spacer.gif width="1? height="1?></td> </tr>
La clave siempre est en comenzar a prescindir de dichas imgenes y pasar a una modelacin total de cada objeto con CSS, de modo que si queremos cambiar la posicin de algn objeto lo hacemos modificando nmero en una simple hoja de estilo y no borrando y agregando una decena de imgenes.
Fin de la gua
Ahora es cuestin de que se vayan a la pgina del W3C y terminen de aclarar cualquier duda tcnica. Tambin pueden realizar preguntas en este artculo escribiendo comentarios (NOTA: en la web del autor). Hacer tablas buenas nunca fu tan fcil.