Blog Agencia Web

Páginas Web Sin Tablas

icon timeRicardo Aroca | 01 de julio de 2005 | icon comment249 comentarios

El cambio siempre es difícil. Sobre todo si llevas mucho tiempo haciendo las cosas de una forma. Lo que vamos a ver ahora es uno de esos cambios difíciles, pero que tienen tremendos beneficios. Este artículo está pensado sólo como un punto de inicio en el uso de CSS + HTML .

El desafío es el siguiente: "Transformar una página diagramada con tablas en HTML puro, a una página semánticamente correcta diagramada a través de CSS "

La forma común (o usando tablas para la Diagramación)

Vamos a ocupar el ejemplo típico de una página estructurada en 3 áreas principales: un encabezado, el cuerpo o contenido y el pie de página. Esta página diagramada con tablas, muestra el ejemplo más común. Los colores se han utilizado para diferenciar los distintos bloques que la conforman.

con tablas, destacando bloques

A través de HTML puro, crear esta diagramación implica construir un tabla con 3 filas. En la fila superior (Encabezado)se inserta una segunda tabla con dos filas, una para el nombre del sitio y otra para la barra de navegación. En la fila del medio (Contenido), se inserta una tercera tabla, la que da la separación entre el menú y el contenido mismo. Finalmente, en la fila inferior, no agregamos tablas pero eventualmente es así.

Pueden ver el código fuente del ejemplo de página diagramada con tablas, para observar que es extremadamente confuso realizar mantención en el código. Consideremos además que este es un ejemplo muy simple.

<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2" bgcolor="#CCCCCC">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><font size="7">Nombre de mi Sitio</font></td>
</tr>
<tr>
<td>Inicio | Servicios |Quienes Somos | Cont&aacute;ctenos </td>
</tr>
</table>
</td>
</tr>
<tr valign="top">
<td width="200" bgcolor="#FFFF99">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><strong>MENU</strong></td>
</tr>
<tr>
<td>Opci&oacute;n 1</td>
</tr>
<tr>
<td>Opci&oacute;n 2 </td>
</tr>
<tr>
<td>Opci&oacute;n 3 </td>
</tr>
<tr>
<td>Opci&oacute;n 4 </td>
</tr>
<tr>
<td>Opci&oacute;n 5 </td>
</tr>
</table>
</td>
<td width="427"><p> Lorem ipsum dolor ... </p></td>
</tr>
<tr bgcolor="#33CCFF">
<td height="19" colspan="2">Todos los derechos reservados Tecnostart.cl </td>
</tr>
</table>

Esto se debe a que las tablas no fueron creadas para diagramar sino para tabular datos. En este punto debemos darnos cuenta que a través de este modo de diagramar estamos ocupando elementos HTML tanto para publicar contenido, como para dar forma al contenido. Estamos ocupando tablas para dar posición (es decir formato) a nuestro contenido. Y ahí está precisamente el error.

Pero entonces, ¿como puedo reemplazar las tablas de manera que la construcción sea lógica y separe el contenido de la forma?. Aquí es donde entra a la cancha nuestro compañero: Las Hojas de Estilo o CSS .

La forma inteligente y óptima (o usando CSS )

HTML se ocupa de entregar el contenido y CSS de dar formato al contenido. Así de simple.

Debemos escribir código HTML simple y luego a través de hojas de estilo CSS hacemos que quede lindo.

El desafío es construir igual o mejor, el ejemplo anterior, pero esta vez sin tablas, usando HTML y CSS . El resultado se puede ver aquí. Puedes ver también la hoja de estilo que da el formato al ejemplo.

Analicemos la página HTML

<head>
<link xhref="estilo-ejemplo.css" rel="stylesheet" type="text/CSS" />
</head>

Esta línea dentro del head, indica que se debe vincular la hoja de estilo "estilo-ejemplo.cssS", al documento HTML . Este paso es fundamentamental en la separación de contenido y forma porque en el documento HTML escribimos sólo el contenido y en el documento CSS escribimos código para dar forma.

<body>
<div id="Encabezado">
Elementos del Encabezado
<div id="BarraDeNavegacion">
Elementos de la Barra de Navegacion
</div>
</div>
<div id="Menu">
Elementos del Menu
</div>
<div id="Contenido">
Contenido de la pagina
</div>
<div id="PieDePagina">
...
</div>
</body>

En esta parte aparece otro elemento fundamental: la etiqueta DIV. Una etiqueta DIV, representa un bloque de código. La técnica es agrupar en forma lógica los elementos de una página dentro de etiquetas DIV, para luego darles forma a través de CSS . La propiedad id, representa un identificador de cada bloque DIV y nos permitirá hacer ajustes precisos sobre ellos en nuestra hoja de estilos.

Analizando la Hoja de Estilos CSS

Si nuestra hoja de estilos está vacía, nuestra página se verá mas o menos así

Sin hoja de Estilo

Se aprecian claramente los cuatro bloques principales, mas un quinto dentro del bloque Encabezado. Queda claro que sólo hay contenido y de ahora en adelante no vamos a tocar nuestro código HTML , sino que trabajaremos en nuestra hoja de estilos.

Lo primero que haremos será dar posición y forma a los bloques. Queremos que menú sea menos ancho y que se ubique en el lado izquierdo de la página. Además el contenido debe ir al lado derecho del menú.

#Encabezado{
background-color:#CCCCCC;
padding:5px;
}
#Contenido{
background-color:#FFFFFF;
margin-left:200px;
}
#Menu{
background-color:#FFFF99;
padding-left:5px;
width:195px;
float:left;
}
#PieDePagina{
clear:both;
background-color:#33CCFF;
}

Explicamos un poco el código.

Las propiedades del Encabezado indican que el color de fondo será #CCCCCC y tendrá un relleno de 5 pixeles.

El contenido tendrá un color de fondo #FFFFFF y un margen de 200 pixeles desde el borde izquierdo de la página

El menú tendrá un color de fondo #FFFF99, un relleno al lado izquierdo de 5 pixeles y un ancho interno de 195px (195 + 5= 200 px). La línea float:left, nos indica que el bloque Menu va a ubicarse al lado izquierdo de la pantalla y permitirá que los demás elementos aparezcan a su lado derecho. Esto hace posible que el contenido esté al lado derecho del menú.

El Pie de Página tiene la propiedad clear:both, lo que indica que se borrarán todas las secuencias float anteriores. Esto hace para que el pie de página se muestre bajo el menú y el contenido, de otra forma se mostraría bajo el contenido, pero al lado del menú si este fuera más largo que el contenido. Además hemos especificado que el color de fondo sea #33CCFF.

Ahora nuestra página se ve así

Paso 2 de paginas con Hoja de Estilo

Podemos retocar el estilo visual de nuestra página a través de otras líneas en nuestra hoja de estilo.

body{
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
}

#Encabezado h1{
margin:0px;
font-family:"Trebuchet MS", Verdana, Arial, sans-serif;
font-size:300%;
font-weight:normal;
}

#Encabezado #BarraDeNavegacion a{
padding-right:10px;
color:#FF0000;
text-decoration:none;
}
#Encabezado #BarraDeNavegacion a:hover{
font-weight:bold;
}

#Menu h2{
margin:0px;
font-family:"Trebuchet MS", Verdana, Arial, sans-serif;
font-size:150%;
font-weight:normal;
}
#Menu ul{
margin:0;
padding:0;
list-style:none;
}

Finalmente la página queda así

Paso 3 de paginas con Hoja de Estilo

Queda como tarea para el lector averiguar como se relaciona este código CSS con los elementos de la página.

Se puede mejorar la página haciendo que el fondo del bloque Menú se extienda hasta el pié de página, pero eso queda para otra ocasión.

Comentarios

gravatar

1 El 28 de julio de 2005 el Autor escribió

Complementando la idea, se puede establecer una altura mínima del div comentario a través del siguiente código

min-height: 70px;
height: auto !important;
height: 70px;
las dos primeras líneas sólo sirven para Firefox y la ultima para IExplorer que en realidad interpreta el la propiedad height como una altura mínima o min-height

gravatar

2 El 24 de agosto de 2005 Rolando escribió

Me parece excelente el tutorial presentado, y de mucha utilidad, pero tengo una consulta que herramienta puedo utilizar para realizar las imagenes GIFS, de las esquinas

gravatar

3 El 24 de agosto de 2005 el Autor escribió

Cualquier editor de imágenes medianamente avanzado. En lo personal utilizo Macromedia Fireworks, pero el más utilizado por los profesionales del diseño es Adobe Photoshop. Con la integración de Macromedia a Adobe, al parecer vamos a tener que aprender a utilizar Photoshop, porque es difícil que Adobe mantenga el desarrollo dos herramientas similares.

gravatar

4 El 17 de diciembre de 2005 maribel escribió

Me agrada heber encontrado este excelente tutorial, claro y sencillo sobre todo en español. Felicidades Ricardo... Disculpe Ricardo pero ¿me podría enviar las imágenes del ejemplo? es que no se manejar ningun programa de diseño de imágenes. Gracias..

gravatar

5 El 03 de octubre de 2006 Julio escribió

Está todo interesante, pero... cuando se necesita imprimir la página ¿como se ve?

gravatar

6 El 03 de octubre de 2006 el Autor escribió

Depende del navegador y el soporte para CSS que tenga.
Puedes crear una hoja de estilo CSS especialmente diseñada para impresión. Sobre eso escribí en Creando páginas imprimibles con CSS

gravatar

7 El 22 de junio de 2007 RolyDuff escribió

me parecio muy completa y de mucha utilidad. Pero tengo una duda. Yo estoy acostumbrado a hacer los listados dinamico con tablas haciendo un bucle en la fila determinada. Mi duda es como remplazo la tablas en estas ocaciones. eje: do while ..... Rs(campo) loop

gravatar

8 El 22 de junio de 2007 el Autor escribió

Si los datos deben ser tabulados, entonces debes usar tablas. La idea es no usarlas para hacer el layout de la página.

gravatar

9 El 30 de septiembre de 2007 Xbalanqué escribió

Me parece un buen acercamiento al paso entre las famosísimas tablas a los contenedores div. He trabajado en este proceso desde hace un rato, y al principio si fue dificil, ahora lo tengo más controlado, pero he visto cosas que siguen siendo dificiles de hacer con divs, como los layouts líquidos, he encontrado que una combinación entre una tabla y los divs pueden ser los resultados más eficaces al menos en mi caso. Si se puede hacer un layout líquido con puros divs, y que además tenga header, footer, y tres columnas al centro, pero es un relajo, y siempre queda el detalle de que en FireFox se ve diferente, sobre todo cuando en el CSS usas margins y paddings, y cuando empiezas a anidar muchos divs. =)

gravatar

10 El 01 de octubre de 2007 el Autor escribió

Recomiendo visitar http://blog.html.it/layoutgala/, que es una colección de 40 layouts de páginas hechos con CSS y HTML sin tablas.

Es una excelente herramienta, que cubre la mayoría de las necesidades al momento de meterle mano al código.

gravatar

11 El 13 de agosto de 2008 tajamar escribió

Muy buena info que voy a aplicar a mi sitio en forma urgente para eliminar las molestas tablas. Estuve manejando todo en base a tu excelente tutorial, copiando lo básico y editanto visualmente con dreamwaver. Lo único en lo que tengo dudas es ¿como poder aplicar un anuncio adsense dentro de por ejemplo el contenido sin que interfiera con este en la escritura? Muchas gracias y saludos.

gravatar

12 El 09 de enero de 2009 Hernan escribió

Me pareció muy útil y claro el tutorial, en especial para personas como yo que recién comenzamos con la programación web y esta bueno saber las técnicas que ya quedaron obsoletas y como se las reemplaza. Por cierto gracias por el link de los layouts. Saludos.

gravatar

13 El 04 de octubre de 2009 pedro escribió

Un exelente tutorial.
Gracias, me fue de mucha utilidad.

gravatar

14 El 02 de febrero de 2010 sebastian cardona escribió

Muy bueno el tutorial, me gustaria saber como extender el color del menu hasta el pie.

gravatar

15 El 10 de marzo de 2010 miguel escribió

muy bueno el tutorial , acabo de enterarme de esta metodo de diseñar paginas web. aunque yo siempre habia diseñado con tablas y combinado con hojas de estilos para el formato de textos ,imagenes de fondo etc. y me funciona muy bien . mi consulta es como haces
para ajustar a la resolucion de pantalla ej 800*600 . en conclusion veo que utilizas mas codigo de css. seguro lleva mas tiempo maquetar una web.

gravatar

16 El 12 de marzo de 2010 Martin escribió

Hola Miguel. Creo q la mejor forma de asegurarse q nuestra pagina se vea correctamente en la gran mayoria de las pantallas es centrarla horizontalmente. No se si te refieres a esto. Si es asi, te comento que de esta forma evitas, por ejemplo, la sensacion de vacio a la derecha de nuestra pagina. Con css es muy sencillo. Si bien es cierto q debes acostumbrarte a trabajar con css, facilita mucho el mantenimiento, entre otras cosas.

gravatar

17 El 13 de marzo de 2010 Martin escribió

Hola Miguel. Creo q la mejor forma de asegurarse q nuestra pagina se vea correctamente en la gran mayoria de las pantallas es centrarla horizontalmente. No se si te refieres a esto. Si es asi, te comento que de esta forma evitas, por ejemplo, la sensacion de vacio a la derecha de nuestra pagina. Con css es muy sencillo. Si bien es cierto q debes acostumbrarte a trabajar con css, facilita mucho el mantenimiento, entre otras cosas.

gravatar

18 El 15 de marzo de 2010 Martin escribió

Hola Miguel. Creo q la mejor forma de asegurarse q nuestra pagina se vea correctamente en la gran mayoria de las pantallas es centrarla horizontalmente. No se si te refieres a esto. Si es asi, te comento que de esta forma evitas, por ejemplo, la sensacion de vacio a la derecha de nuestra pagina. Con css es muy sencillo. Si bien es cierto q debes acostumbrarte a trabajar con css, facilita mucho el mantenimiento, entre otras cosas.

gravatar

19 El 16 de marzo de 2010 Martin escribió

Hola Miguel. Creo q la mejor forma de asegurarse q nuestra pagina se vea correctamente en la gran mayoria de las pantallas es centrarla horizontalmente. No se si te refieres a esto. Si es asi, te comento que de esta forma evitas, por ejemplo, la sensacion de vacio a la derecha de nuestra pagina. Con css es muy sencillo. Si bien es cierto q debes acostumbrarte a trabajar con css, facilita mucho el mantenimiento, entre otras cosas.

gravatar

20 El 06 de agosto de 2010 NetAires escribió

Mil gracias por el tutorial. Lo leí detenemidamente, probé el ejemplo y pude terminar aprendiendo exactamente lo que estaba necesitando. Hacía gran cantidad de años que usaba TABLE para hacer el 100% de una web.

Comentar

Los campos con asterisco * son obligatorios.

No se mostrará publicamente

Escribe la dirección sin http://


Etiquetas permitidas: a,strong, em, cite, blockquote, pre, code.

Opciones

Categorias

Suscribirse

Reciba automáticamente en su lector RSS las últimas publicaciones del blog.

Selección de Blogs

Publicidad

Contrata Planes Hostagator haciendo Clic Aquí

Agencia Web utiliza Hostgator para todos sus proyectos. Si quieres saber por qué, haz clic aquí.


Servicios