Uso de las tablas (I)
7 MAQUETACION.
Una de las principales aplicaciones de las tablas va a ser permitirnos maquetar y distribuir adecuadamente el contenido de nuestras paginas web, de una forma analoga a como se maquetan los periodicos. Esa forma de operar sólo se podía conseguir con tablas hasta la entrada en vigor de las Hojas de Estilo en Cascada, CSS, y mas concretamente de CSS-Positioning.
De esta forma, si queremos distribuir el contenido de una pagina en columnas tendremos que crear un tabla que tenga tantas celdas en una fila como columnas deseemos en nuestra pagina, y en cada una de las celdas colocaremos el contenido de cada columna. Eso sí, deberemos tener especial cuidado en no sobrepasar con el contenido en alto de cada celda en la pagina, ya que si no es así se nos descolocara todo, al intentar adaptarse la celda a su contenido. Por esto, es conveniente siempre establecer una alineación vertical a las celdas, para evitar descompensaciones, mediante el atributo VALIGN="top". Introduciremos por ahora un valor CELLPADDING="8", para que no se nos junten los bloques de texto.
Conviene comenzar asignando un borde de 1 píxel a la tabla, para referenciarnos bien, y cuando hayamos finalizado le quitamos el borde. Esto es lo que se llama una "tabla oculta".
Ejemplo,-
<TABLE WIDTH="100%" BORDER="0" CELLPADDING="8">
<TR VALIGN="top">
<TD WIDTH="33%">Este es el contenido de la primera columna de nuestra maravillosa pagina web...</TD>
<TD WIDTH="33%">Seguimos con el contenido de la segunda columna, para que nos quede un acabado profesional....</TD>
<TD WIDTH="33%">Y acabamos con todo lo que queramos poner en la última columna. ?A que ha quedado todo muy bonito?.</TD>
</TR>
</TABLE>
Este es el contenido de la primera columna de nuestra maravillosa pagina web... Seguimos con el contenido de la segunda columna, par que nos quede un acabado profesional.... Y acabamos con todo lo que queramos poner en la última columna. ?A que ha quedado todo muy bonito?.
? Y si queremos que entre las columnas haya una línea vertical de color?.
Bueno, podríamos pensa que mediante el atributo BORDERCOLOR Podríamos lograr algo parecido, pero esta no es la solución adecuada, ya que los atributos de borde de color sólo los posee Internet Explorer, y si los quisieramos de color gris, asequibles para ambos navegadores, se nos pintarían todos los bordes, con lo que no conseguiríamos el efecto deseado.
La solución correcta pasa por introducir celdas que contengan una imagen en formato gif, del color que deseemos, que tenga un ancho igual al que nosotros deseemos para la línea de separación y un ancho igual al alto de la celda. El inconveniente de este método es que según la resolución de pantalla y del navegador usado, la línea puede aparecer un poco mas alta o un poco mas baja.
Otra posible solución sería mediante el atributo BGCOLOR, situando una celda de ancho 1 ó 2 píxeles entre cada celda de texto, y dandole un color de fondo, pero en este caso deberemos introducir un gif de 1x1 píxeles, de color transparente, en cada una de estas celdas. El motivo de esto se explica mas abajo.
Ejemplo,- Creamos una imagen "linea.gif", de 10px de alto y 1px de ancho. Luego le daremos el alto que nos convenga...
<TABLE WIDTH="100%" BORDER="0" CELLPADDING="8">
<TR VALIGN="top">
<TD><IMG SRC="images /linea.gif" WIDTH="1" HEIGHT="70" BORDER="0"></TD>
<TD WIDTH="33%">Este es el contenido de la primera columna de nuestra maravillosa pagina web...</TD>
<TD><IMG SRC="images /linea.gif" WIDTH="1" HEIGHT="70" BORDER="0"></TD>
<TD WIDTH="33%">Seguimos con el contenido de la segunda columna, para que nos quede un acabado profesional....</TD>
<TD><IMG SRC="images /linea.gif" WIDTH="1" HEIGHT="70" BORDER="0"></TD>
<TD WIDTH="33%">Y acabamos con todo lo que queramos poner en la última columna. ?A que ha quedado todo muy bonito?.</TD>
<TD><IMG SRC="images /linea.gif" WIDTH="1" HEIGHT="70" BORDER="0"></TD>
</TR>
</TABLE>
Este es el contenido de la primera columna de nuestra maravillosa pagina web... Seguimos con el contenido de la segunda columna, par que nos quede un acabado profesional.... Y acabamos con todo lo que queramos poner en la última columna. ?A que ha quedado todo muy bonito?.
Hemos visto arriba que al introducir un valor CELLPADDING= "8"para separar las celdas el resultado obtenido no es el deseado. Si queremos dejar espacio entre las columnas deberemos olvidarnos de los atributos CELLSPACING o CELLPADDING, ya que el resultado no sera el deseado, pues las celdas se nos abriran por todos lados.
La solución pasa por dejar una columna (celda) de ancho la separación que deseemos entre cada columna de texto. Pero si situamos celdas vacias no siempre nos cogeran el ancho que deseemos, ya que entonces los navegadores no reconocen con exactitud el atributo WIDTH. Para solucionar esto, situaremos dentro de las celdas de separación un espacio ( ) o un gif transparente o del color del fondo de 1x1 píxeles. El código y su resultado seran:
<TABLE WIDTH="90%" BORDER="0" CELLPADDING="8">
<TR VALIGN="top">
<TD WIDTH="32%">Este es el contenido de la primera columna de nuestra maravillosa pagina web...</TD>
<TD WIDTH="20"> </TD>
<TD WIDTH="32%">Seguimos con el contenido de la segunda columna, para que nos quede un acabado profesional....</TD>
<TD WIDTH="20"> </TD>
<TD WIDTH="32%">Y acabamos con todo lo que queramos poner en la última columna. ?A que ha quedado todo muy bonito?.</TD>
</TR>
</TABLE>
Este es el contenido de la primera columna de nuestra maravillosa pagina web... Seguimos con el contenido de la segunda columna, par que nos quede un acabado profesional.... Y acabamos con todo lo que queramos poner en la última columna. ?A que ha quedado todo muy bonito?.
Otra cuestión que podemos resolver con tablas es cuando queremos una distribución de pagina tal que tenga unas cabeceras digamos a 5 píxeles del extremo izquierdo y luego una serie de celdas abajo cuyo contenido se situe mas a la izquierda, digamos a 20 píxeles. Para conseguir esto introduciremos una imagen en unas celdas de separación. En el siguiente ejemplo vamos a introducir una imagen de 1x1 píxeles, de color rojo para que la podais ver, aunque en un caso real la pondríamos transparente, para que no se apreciara, con lo que el efecto conseguido sería el correcto.
El código necesario para lograr esto sera del tipo:
<TABLE CELLSPACING="0" CELLPADDING="5" BORDER="0">
<TR>
<TD COLSPAN="2">Cabecera</TD>
</TR>
<TR>
<TD WIDTH="5"><IMG SRC="images/punto.gif" WIDTH="1" HEIGHT="1" BORDER="0"></TD>
<TD>Texto 1º</TD>
</TR>
<TR>
<TD WIDTH="5"><IMG SRC="images/punto.gif" WIDTH="1" HEIGHT="1" BORDER="0"></TD>
<TD>Texto 2º</TD>
</TR>
<TR>
<TD WIDTH="5"><IMG SRC="images/punto.gif" WIDTH="1" HEIGHT="1" BORDER="0"></TD>
<TD>Texto 3º</TD>
</TR>
</TABLE>
Esquema Cabecera
Texto 1º
Texto 2º
Texto 3º
Resultado Cabecera
Texto 1º
Texto 2º
Texto 3º
Notas:
La imagen "punto.gif" debe ser transparente o del mismo color del fondo, y en este caso debe ser de un color de paleta web. Recordemos que Nestcape posee por defecto una paleta con 256 colores únicamente. Si el color no pertenece a esta paleta, el punto se vera de otro color que el fondo, estropeando el efecto que buscamos.
El atributo de tabla CELLPADDING debe tener el valor que deseemos que tenga de separación la cabecera del margen izquierdo.
Por lo tanto, el ancho de las celdas de la imagen debe ser= 20(que queríamos)-(5+5) que nos da el CELLPADDING en la celda de imagen-5 que nos da el CELLPADDING en las celdas de los textos. Resumiendo, con un poco de entrenamiento obtendremos el resultado deseado siguiendo este método.
* Si queremos una disposición de pagina en la que haya columnas con bloques de texto separados por una línea horizontal entre ellos, podemos hacer dos cosas:
Establecer celdas horizontales que contengan una imagen de 1 píxel de alto y de ancho igual al de la celda.
Establecer bloques verticales de texto, introduciendo al final de cada uno un salto de línea y una imagen como la del apartado anterior.
Ejemplo-
<TABLE WIDTH="100%" CELLPADDING="8" BORDER="0">
<TR VALIGN="top">
<TD WIDTH="30%">Este es el contenido de la primera columna de nuestra maravillosa pagina web...
<BR>
<IMG SRC="images/puntorojo.gif" WIDTH="200" HEIGHT="1" BORDER="0">
<BR>
y ahora continuamos con e texto que queramos...
</TD>
<TD WIDTH="30%">Seguimos con el contenido de la segunda columna, para que nos quede un acabado profesional....
<BR>
<IMG SRC="images/puntorojo.gif" WIDTH="200" HEIGHT="1" BORDER="0">
<BR>
y ahora continuamos con el texto de la segunda...
</TD>
<TD WIDTH="30%">Y acabamos con todo lo que queramos poner en la última columna.
<BR>
<IMG SRC="images/puntorojo.gif" WIDTH="200" HEIGHT="1" BORDER="0">
<BR>
?A que ha quedado todo muy bonito?.
</TD>
</TR>
</TABLE>
Este es el contenido de la primera columna de nuestra maravillosa pagina web.
Y ahora continúa la primera columna... Seguimos con el contenido de la segunda columna, para que nos quede un buen acabado.
Y continúa la segunda... Y acabamos con todo lo que queramos poner en la última columna.
Pués si te gusta...! A practicar!
Si no queremos usar una imagen podemos situar una línea horizontal mediante la etiqueta <HR>, pero entonces sólo podremos darle color para Internet Explorer, usando hojas de estilo, pero en Nestcape se vera siempre del color grís estandar.