Manual HTML Actualizado
Manual HTML Actualizado
www.desarrolloweb.com
Manual de HTML
HTML es el lenguaje utilizado como base para crear las páginas web. En este manual explicamos
en profundidad cómo utilizarlo, desde lo más básico a los temas más avanzados.
Parte 1:
Introducción a
HTML
Introducción al manual de HTML y al lenguaje de modelado de páginas web. Veremos
qué es HTML y las primeras nociones que nos ayudarán a realizar las primeras pruebas de
creación de una página web sencilla.
Bienvenidos al manual de HTML de DesarrolloWeb. A través de todos estos capítulos vamos a descubrir el lenguaje
utilizado para la creación de páginas web: el Hyper Text Markup Language, más conocido como HTML.
Puede que en un principio, el hecho de hablar de un lenguaje informático pare los pies a más de uno. No os asustéis, el
HTML no deja de ser más que una forma un tanto peculiar de dar formato a los textos e imágenes que pretendemos ver
por medio de un navegador.
Antes de entrar en materia, lo cual haremos de una forma directa y practica, os recomendamos fervorosamente la
lectura previa de nuestro manual Publicar en Internet. A partir de esta guía, aprenderéis los conceptos más básicos
necesarios para creación de un sitio web. También os permitirá acceder a este manual con unos conocimientos de base
sobre HTML imprescindibles y os dejara bien claro lo que su conocimiento aporta con respecto al simple uso de
editores de HTML. Además, en dicho manual sobre la publicación en Internet, explicamos también algo tan importante
como qué hace falta para subir una página web realizada que tenemos en nuestro ordenador a un servidor de Internet. Si
lo deseamos, lo podemos ver en vídeo en el Videotutorial sobre subir una web a Internet.
El público al que va enfocado este manual es a todos aquellos que, con conocimientos mínimos de informática, desean
hacer mundialmente público un mensaje, una idea o una información usando para ello el medio más práctico,
económico y actual: Internet.
Lo que necesitáis como base para llevar a buen término el aprendizaje (aparte de leer el manual Publicar en Internet) es:
• Saber escribir con un teclado
• Saber manejar un ratón
• Tener ganas de aprender
Como podréis ver, cualquier persona que sepa manejar un ordenador tiene los conocimientos básicos para aprender
HTML. Si le pones un poco de ganas y sigues este manual hasta el final, tendrás las siguientes habilidades o
conocimientos:
• Capacidad para crear y publicar vuestro propio sitio web con un mínimo de calidad.
• Conocimientos de todo tipo sobre las tecnologías y herramientas empleadas en el ámbito de la Red.
• Posiblemente una afición que puede convertirse en pasión y terminar, en algunos casos, siendo un vicio o un
oficio.
Podéis formular vuestras cuestiones y, esperamos que en un futuro ayudar a otros compañeros, enviando discusiones
sobre HTML o bien en la lista de correo de DesarrolloWeb.com.
Para quien no sepa nada sobre crear una página web, y le gusta que le expliquen las cosas desde cero y de manera
visual, recomendamos ver el vídeo donde mostramos el proceso de creación de la primera página básica. Además, para
complementar las explicaciones de este manual, también recomendamos el videotutorial de HTML.
Finalmente, antes de comenzar con el temario, queremos daros una referencia importante a la sección HTML a fondo,
donde publicamos todos los contenidos que tienen que ver con HTML y donde encontrarás este y otros manuales
relacionados con el lenguaje.
Pasemos pues sin más preámbulos a ver de qué se trata el HTML...
HTML es el lenguaje con el que se escriben las páginas web. Las páginas web pueden ser vistas por el usuario
mediante un tipo de aplicación llamada navegador. Podemos decir por lo tanto que el HTML es el lenguaje usado por
los navegadores para mostrar las páginas webs al usuario, siendo hoy en día la interface más extendida en la red.
Este lenguaje nos permite aglutinar textos, sonidos e imágenes y combinarlos a nuestro gusto. Además, y es aquí donde
reside su ventaja con respecto a libros o revistas, el HTML nos permite la introducción de referencias a otras páginas
por medio de los enlaces hipertexto.
El HTML se creó en un principio con objetivos divulgativos. No se pensó que la web llegara a ser un área de ocio con
carácter multimedia, de modo que, el HTML se creó sin dar respuesta a todos los posibles usos que se le iba a dar y a
todos los colectivos de gente que lo utilizarían en un futuro. Sin embargo, pese a esta deficiente planificación, si que se
han ido incorporando modificaciones con el tiempo, estos son los estándares del HTML. Numerosos estándares se han
presentado ya. El HTML 4.01 es el último estándar a septiembre de 2001.
Esta evolución tan anárquica del HTML ha supuesto toda una seria de inconvenientes y deficiencias que han debido ser
superados con la introducción de otras tecnologías accesorias capaces de organizar, optimizar y automatizar el
funcionamiento de las webs. Ejemplos que pueden sonaros son las CSS, JavaScript u otros. Veremos más adelante en
qué consisten algunas de ellas.
Otros de los problemás que han acompañado al HTML es la diversidad de navegadores presentes en el mercado los
cuales no son capaces de interpretar un mismo código de una manera unificada. Esto obliga al webmáster a, una vez
creada su página, comprobar que esta puede ser leída satisfactoriamente por todos los navegadores, o al menos, los más
utilizados.
Además del navegador necesario para ver los resultados de nuestro trabajo, necesitamos evidentemente otra herramienta
capaz de crear la página en si. Un archivo HTML (una página) no es más que un texto. Es por ello que para programar
en HTML necesitamos un editor de textos.
Es recomendable usar el Bloc de notas que viene con windows, u otro editor de textos sencillo. Hay que tener cuidado
con algunos editores más complejos como Wordpad o Microsoft Word, pues colocan su propio código especial al
guardar las páginas y HTML es únicamente texto plano, con lo que podremos tener problemas.
Existen otro tipo de editores específicos para la creación de páginas web los cuales ofrecen muchas facilidades que nos
permiten aumentar nuestra productividad. No obstante, es aconsejable en un principio utilizar una herramienta lo más
sencilla posible para poder prestar la máxima atención a nuestro código y familiarizarnos lo antes posible con él.
Siempre tendremos tiempo más delante de pasarnos a editores más versátiles con la consiguiente ganancia de tiempo.
Para tener más claro todo el tema de editores y los tipos que existen, visita los artículos:
• Editores de HTML.
• Bloc de notas.
• También puedes acceder a descripciones editores más complejos que el Block de Notas, pero más potentes
como Homesite o UltraEdit.
Es importante tener claro todo ello puesto que en función de vuestros objetivos puede que, más que aprender HTML,
resulte más interesante aprender el uso de una aplicación para la creación de páginas.
Así pues, una página es un archivo donde está contenido el código HTML en forma de texto. Estos archivos tienen
extensión .html o .htm (es indiferente cuál utilizar). De modo que cuando programemos en HTML lo haremos con un
editor de textos y guardaremos nuestros trabajos con extensión .html, por ejemplo mipágina.html
Consejo: Utiliza siempre la misma extensión en tus archivos HTML. Eso evitará que te confundas al escribir los nombres de tus
archivos unas veces con .htm y otras con .html. Si trabajas con un equipo en un proyecto todavía más importante que os pongáis todos de
acuerdo en la extensión.
El HTML es un lenguaje de marcas que basa su sintaxis en un elemento de base al que llamamos etiqueta. A través de
las etiquetas vamos definiendo los elementos del documento, como enlaces, párrafos, imágenes, etc. Así pues, un
documento HTML estará constituido por texto y un conjunto de etiquetas para definir la forma con la que se tendrá que
presentar el texto y otros elementos en la página.
La etiqueta presenta frecuentemente dos partes:
Una apertura de forma general <etiqueta>
Un cierre de tipo </etiqueta>
Todo lo incluido en el interior de esa etiqueta sufrirá las modificaciones que caracterizan a esta etiqueta. Así por
ejemplo:
Las etiquetas <b> y </b> definen un texto en negrita. Si en nuestro documento HTML escribimos una frase con el
siguiente código:
<b>Esto esta en negrita</b>
El resultado Será:
Esto esta en negrita
Las etiquetas <p> y </p> definen un párrafo. Si en nuestro documento HTML escribiéramos:
<p>Hola, estamos en el párrafo 1</p>
<p>Ahora hemos cambiado de párrafo</p>
El resultado sería:
Hola, estamos en el párrafo 1
Ahora hemos cambiado de párrafo
<head>
Etiquetas y contenidos del encabezado
Datos que no aparecen en nuestra página pero que son importantes para catalogarla: Titulo, palabras clave,...
</head>
<body>
Etiquetas y contenidos del cuerpo
Parte del documento que será mostrada por el navegador: Texto e imágenes
</body>
</html>
Podemos ya con estos conocimientos, y alguno que otro más, crear nuestra primera página. Para ello, abre tu editor de
textos y copia y pega el siguiente texto en un nuevo documento.
<html>
<head>
<title>Cocina Para Todos</title>
</head>
<body>
<p><b>Bienvenido,</b></p>
<p>Estás en la página <b>Comida para Todos</b>.</p>
<p>Aquí aprenderás recetas fáciles y deliciosas.</p>
</body>
</html>
Ahora guarda ese archivo con extensión .html o .htm en tu disco duro. Para ello accedemos al menú Archivo y
seleccionamos la opción Guardar como. En la ventana elegimos el directorio donde deseamos guardarlo y colocaremos
su nombre, por ejemplo mi_pagina.html
Consejo: Utiliza nombres en tus archivos que tengan algunas normas básicas para ahorrarte disgustos y lios.
Nuestro consejo es que no utilices acentos ni espacios ni otros caracteres raros. También te ayudará escribir siempre las letras en
minúsculas.
Esto no quiere decir que debes hacer nombres de archivos cortos, es mejor hacerlos descriptivos para que te aclaren lo que hay dentro.
Algún caracter como el guión "-" o el guión bajo "_" te puede ayudar a separar las palabras. Por ejemplo quienes_somos.html
Con el documento HTML creado, podemos ver el resultado obtenido a partir de un navegador. Es conveniente,
llegado a este punto, hacer hincapié en el hecho de que no todos los navegadores son idénticos.
Desgraciadamente, los resultados de nuestro código pueden cambiar de uno a otro por lo que resulta aconsejable
visualizar la página en varios. Generalmente se usan Internet Explorer y Firefox como referencias ya que son los
más extendidos.
A decir verdad, en el momento que estas líneas son escritas, Internet Explorer acapara la inmensa mayoría de usuarios
(90% más o menos) y Firefox esta relegado a un segundo plano. Esto no quiere decir que lo debemos dejar totalmente
de lado ya que el 10% de visitas que puede proporcionarnos puede resultar muy importante para nosotros.
Nota: En la disputa por ser el navegador más usado, en la actualidad otros productos vienen tomando fuerza como Chrome, el navegador
de Google. Para el que le interese este tema y conocer datos reales sobre los porcentajes de uso de cada navegador, se puede leer uno de
los informes que publicamos periódicamente, como el ranking de uso de los navegadores en noviembre de 2010.
Pues bien, volviendo al tema, una vez creado el archivo .html o .htm, podemos visualizar el resultado de nuestra labor
abriendo dicha página con un navegador. Para hacerlo, la forma resulta diferente dependiendo del navegador:
Si estamos empleando el Explorer, hemos de ir al barra de menú, elegir Archivo y seleccionar Abrir. Una ventana se
abrirá. Pulsamos sobre el botón Examinar y accederemos a una ventana a partir de la cual podremos movernos por el
interior de nuestro disco duro hasta dar con el archivo que deseamos abrir.
La cosa no resulta más difícil para Netscape. En este caso, nos dirigimos también a la barra de menú principal y
elegimos File y a continuación Open File. La misma ventana de búsqueda nos permitirá escudriñar el contenido de
nuestro PC hasta dar con el archivo buscado.
Nota: También puedes abrir el archivo si accedes al directorio donde lo guardaste. En él podrás encontrar tu archivo HTML y verás que
tiene como icono el logotipo de Netscape o el de Internet Explorer. Para abrirlo simplemente hacemos un doble click sobre él.
Una vez abierto el archivo podréis ver vuestra primera página web. Algo sencillita pero por algo se empieza. Ya veréis
como en poco tiempo seremos capaces de mejorar sensiblemente.
Fijaos en la parte superior izquierda de la ventana del navegador. Podréis comprobar la presencia del texto delimitado
por la etiqueta <title>. Esta es una de las funciones de esta etiqueta, cuyo principal cometido es el de servir de
referencia en los motores de búsqueda como Altavista o Yahoo.
Por otro lado, los elementos que colocamos entre la etiqueta <body> y </body> se pueden ver en el espacio reservado
para el cuerpo de la página.
Se puede ver la página del ejemplo en funcionamiento aquí.
Si ahora hacéis click con el botón derecho sobre la página y elegís Ver código fuente (o View page source) veréis como
en una ventana accesoria aparece el código de nuestra página. Este recurso es de extremada importancia ya que nos
permite ver el tipo de técnicas empleadas por otros para la confección de sus páginas.
Con todo esto asimilado ya estamos en condiciones de adentrarnos un poco más en la descripción de algunas de las
etiquetas más empleadas del HTML.
Posible problema: Al utilizar el Block de Notas en Windows en ocasiones, aunque le digamos que es un archivo .html, el documento se
guarda como si fuera un texto y no una página web. Lo que está pasando es que el Block de Notas tiene predeterminado guardar sus
archivos con extensión .txt y en realidad lo que está guardando en el disco duro es mi_pagina.html.txt
Para conseguir tener el control de las extensiones en el block de notas y en Windows en general podemos acceder a MI-PC y en el menú
de Ver seleccionáis "Opciones de carpeta". En la ventana que sale pulsamos en la solapa "Ver" y nos permite deseleccionar una caja de
selección que pone algo como "Ocultar extensiones para los tipos de archivos conocidos". (Así se hace en Win98, puede variar un poco
en otras versiones de Windows.)
Con ello conseguiremos que se vea siempre la extensión del archivo con el que estamos trabajando y que el Block de Notas nos haga
caso cuando le indicamos que grabe el archivo con otra extensión que no sea .txt
Parte 2:
Formatos básicos
con HTML
Cómo realizar el formato de textos que se colocan en una página web. Aprende a utilizar
tus primeras etiquetas HTML y atributos para definir los contenidos de la página y
aplicar un formato básico.
En los capítulos anteriores hemos presentado a titulo de ejemplo algunas etiquetas que permiten dar formato a nuestro
texto. En este capitulo veremos con más detalle las más ampliamente utilizadas y ejemplificaremos algunas de ellas
posteriormente.
Formatear un texto pasa por tareas tan evidentes como definir los párrafos, justificarlos, introducir viñetas,
numeraciones o bien poner en negrita, itálica...
Hemos visto que para definir los párrafos nos servimos de la etiqueta <p> que introduce un salto y deja una línea en
blanco antes de continuar con el resto del documento.
Podemos también usar la etiqueta <br>, de la cual no existe su cierre correspondiente (</br>), para realizar un simple
retorno de carro con lo que no dejamos una línea en blanco sino que solo cambiamos de línea.
Nota: Existen otras etiquetas que no tienen su correspondiente de cierre, como <img> para las imágenes, las veremos más adelante. Esto
ocurre porque un salto de línea o una imagen no empiezan y acaban más adelante sino que sólo tienen presencia en un lugar puntual.
Podéis comprobar que cambiar de línea en nuestro documento HTML sin introducir alguna de estas u otras etiquetas no
implica en absoluto un cambio de línea en la página visualizada. En realidad el navegador introducirá el texto y no
cambiara de línea a no ser que esta llegue a su fin o bien lo especifiquemos con la etiqueta correspondiente.
Los párrafos delimitados por etiquetas <p> pueden ser fácilmente justificados a la izquierda, centro o derecha
especificando dicha justificación en el interior de la etiqueta por medio de un atributo align. Un atributo no es más que
un parámetro incluido en el interior de la etiqueta que ayuda a definir el funcionamiento de la etiqueta de una forma más
personal. Veremos a lo largo de este manual cantidad de atributos muy útiles para todo tipo de etiquetas.
Así, si deseásemos introducir un texto alineado a la izquierda escribiríamos:
<p align="left">Texto alineado a la izquierda</p>
El resultado seria:
que daría:
Texto alineado al centro
Como veis, en cada caso el atributo align toma determinados valores que son escritos entre comillas. En algunas
ocasiones necesitamos especificar algunos atributos para el correcto funcionamiento de la etiqueta. En otros casos, el
propio navegador toma un valor definido por defecto. Para el caso de align, el valor por defecto es left.
Nota: Los atributos tienen sus valores indicados entre comillas ("), pero si no los indicamos entre comillas también funcionará en la
mayoría de los casos. Sin embargo, es aconsejable que pongamos siempre las comillas para acostumbrarnos a utilizarlas, por dar
homogeneidad a nuestros códigos y para evitar errores futuros en sistemas más quisquillosos.
El atributo align no es exclusivo de la etiqueta <p>. Otras etiquetas muy comunes, que veremos más adelante, entre las
cuales se introducen texto o imágenes, suelen hacer uso de este atributo de una forma habitual.
Imaginemos un texto relativamente largo donde todos los párrafos están alineados a la izquierda (por ejemplo). Una
forma de simplificar nuestro código y de evitar introducir continuamente el atributo align sobre cada una de nuestras
etiquetas es utilizando la etiqueta <div>.
Esta etiqueta por si sola no sirve para nada. Tiene que estar acompañada del atributo align y lo que nos permite es
alinear cualquier elemento (párrafo o imagen) de la manera que nosotros deseemos.
Así, el código:
<p align="left">Parrafo1</p>
<p align="left"> Parrafo3</p>
<p align="left"> Parrafo2</p>
es equivalente a:
<div align="left">
<p>Parrafo1</p>
<p>Parrafo2</p>
<p>Parrafo3</p>
</div>
Como hemos visto, la etiqueta <div> marca divisiones en las que definimos un mismo tipo de alineado.
No vamos a escribir en esta ocasión el código fuente del ejercicio. Podemos verlo en funcionamiento en nuestro
navegador y en la ventana podemos obtener el código fuente seleccionando en el menú Ver la opción Código fuente.
Ver el ejercicio en marcha.
2.1.2.- Encabezados
Existen otras etiquetas para definir párrafos especiales, formateados como títulos. Son los encabezados o Header en
inglés. Como decimos, son etiquetas que formatean el texto como un titular, para lo cual asignan un tamaño mayor de
letra y colocan el texto en negrita.
Hay varios tipos de encabezados, que se diferencian en el tamaño de la letra que utilizan. La etiqueta en concreto es la
<h1>, para los encabezados más grandes, <h2> para los de segundo nivel y así hasta <h6> que es el encabezado más
pequeño.
Los encabezados implican también una separación en párrafos, así que todo lo que escribamos dentro de <h1> y </h1>
(o cualquier otro encabezado) se colocará en un párrafo independiente.
Podemos ver cómo se presentan algunos encabezados a continuación.
<h1>Encabezado de nivel 1</h1>
Encabezado de nivel 1
Los encabezados, como otras etiquetas de HTML, soportan el atributo align. Vemos un ejemplo de encabezado de nivel
2 alineado al centro.
<h2 align="center">Encabezado de nivel 2</h2>
Encabezado de nivel 2
Otro ejercicio interesante es construir una página web que contenga todos los encabezados posibles. Se puede ver a
continuación.
<html>
<head>
<title>Todos los encabezados</title>
</head>
<body>
<h1>Encabezado de nivel 1</h1>
<h2>Encabezado de nivel 2</h2>
<h3>Encabezado de nivel 3</h3>
<h4>Encabezado de nivel 4</h4>
<h5>Encabezado de nivel 5</h5>
<h6>Encabezado de nivel 6</h6>
</body>
</html>
Consejo: No debemos utilizar las etiquetas de encabezado para formatear el texto, es decir, si queremos colocar un tipo de letra más
grande y en negrita debemos utilizar las etiquetas que existen para ello (que veremos en seguida). Los encabezados son para colocar
titulares en páginas web y es el navegador el responsable de formatear el texto de manera que parezca un titular. Cada navegador, pues,
puede formatear el texto a su gusto con tal de que parezca un titular.
Además de todo lo relativo a la organización de los párrafos, uno de los aspectos primordiales del formateo de un texto
es el de la propia letra. Resulta muy común y práctico presentar texto resaltado en negrita, itálica y otros. Paralelamente
el uso de índices, subíndices resulta vital para la publicación de textos científicos. Todo esto y mucho más es posible por
medio del HTML a partir de multitud de etiquetas entre las cuales vamos a destacar algunas.
2.2.1.- Negrita
Podemos escribir texto en negrita incluyéndolo dentro de las etiquetas <b> y </b> (bold). Esta misma tarea es
desempeñada por <strong> y </strong> siendo ambas equivalentes. Nosotros nos inclinamos por la primeras por simple
razon de esfuerzo.
Escribiendo un código de este tipo:
<b>Texto en negrita</b>
Aunque las dos etiquetas hacen el mismo efecto, tienen una peculiaridad que las hace distintas. La etiqueta <b> indica negrita, mientras
que la etiqueta <strong> indica que se debe escribir resaltado. El HTML lo interpretan los navegadores según su criterio, es por eso que
las páginas se pueden ver de distinta manera en unos browsers y en otros. La etiqueta <H1> quiere decir "encabezado de nivel 1", es el
navegador el responsable de formatear el texto de manera que parezca un encabezado de primer nivel. En la práctica los encabezados de
Internet Explorer y Netscape son muy parecidos (tamaño de letra grande y en negrita), pero otro navegador podría colocar los
encabezados con subrayado si le pareciese oportuno.
La diferencia entre <b> y <strong> se podrá entender ahora. Mientras que <b> significa simplemente negrita y todos los navegadores la
interpretarán como negrita, <strong> es una etiqueta que significa que se tiene que resaltar fuertemente el texto y cada navegador es el
responsable de resaltarlo como desee. En la práctica <strong> coloca el texto en negrita, pero podría ser que un navegador decidiese
resaltar colocando negrilla, subrayado y color rojo en el texto.
2.2.2.- Itálica
También en este caso existen dos posibilidades, una corta: <i> e </i> (italic) y otra un poco más larga: <em> y </em>.
En este manual, y en la mayoría de las páginas que veréis por ahí, os encontraréis con la primera forma sin duda más
sencilla a escribir y a acordarse.
He aquí un ejemplo de texto en itálica:
<i>Texto en itálica</i>
2.2.3.- Subrayado
El HTML nos propone también para el subrayado el par de etiquetas: <u> y </u> (underlined). Sin embargo, el uso de
subrayados ha de ser aplicado con mucha precaución dado que los enlaces hipertexto van, a no ser que se indique lo
contrario, subrayados con lo que podemos confundir al lector y apartarlo del verdadero interés de nuestro texto.
El resultado:
La 13CC3H4ClNOS es un heterociclo alergeno enriquecido
Consejo: Cuando anides etiquetas HTML hazlo correctamente. Nos referimos a que si abres etiquetas dentro de otra más principal, antes
de cerrar la etiqueta principal cierres las etiquetas que hayas abierto dentro de ella.
Esto es muy aconsejable, aunque los navegadores entiendan bien las etiquetas mal anidadas, por dos razones:
1. Sistemas como XML no son tan permisivos con estos errores y puede que en el futuro nuestras páginas no funcionen
correcamente.
2. A los navegadores les cuesta mucho tiempo de procesamiento resolver este tipo de errores, incluso más que construir la
propia página y debemos evitarles que sufran por una mala codificación.
Todo lo que se ha visto hasta el momento en el Manual de HTML se puede ver en un vídeo para aprender
visualmente. Si te interesa puedes acceder al Videotutorial de HTML - Parte 1, documento básico y formato de
texto.
A pesar de que por razones de homogeneidad y sencillez de codigo este tipo de formatos son controlados actualmente
por hojas de estilo en cascada (de las cuales ya tendremos tiempo de hablar), existe una forma clásica y directa de
definir color tamaño y tipo de letra de un texto determinado.
Esto se hace a partir de la etiqueta <font> y su cierre correspondiente. Dentro de esta etiqueta deberemos especificar los
atributos correspondientes a cada uno de estos parámetros que deseamos definir. A continuación os comentamos los
atributos principales de esta etiqueta:
Nota: Aquí tenemos un ejemplo de atributo cuyo valor debe estar limitado por comillas ("). Habíamos dicho que las comillas eran
opcionales en los atributos, sin embargo esto no es así siempre. Si el valor del atributo contiene espacios, como es el caso de:
se entendería que face=Comic, pero no se tendría en cuenta todo lo que sigue, porque HTML no lo asociaría al valor del atributo. En este caso
HTML pensaría que las siguientes palabras (después del espacio) son otros atributos, pero como no los conoce como atributos simplemente los
desestimará.
Nombre Color
Aqua
Black
Blue
Fuchsia
Gray
Green
Lime
Maroon
Navy
Olive
Purple
Red
Silver
Teal
White
Yellow
<font color="red">Este texto está en rojo</font>
El la composición de webs juegan un papel muy importante los colores. Se indican en valores
RGB, es decir, que para conseguir un color cualquiera mezclaremos cantidades de Rojo, Verde y
Azul.
Los valores RBG se indican en numeración hexadecimal, en base 16. (Los dígito pueden crecer
hasta 16. Como no hay tantos dígitos numéricos se utilizan las letras de la A a la F.
RRGGBB
Donde cada valor puede crecer desde 00 hasta FF.
2.4.1.- Ejemplo
Cómo se cambiaría la fuente para escribir en rojo:
<font color="#FF0000">Rojo</font>
Al Atributo color le damos un valor RGB en formato hexadecimal. El caracter # se coloca al principio de la cadena.
00
33
66
99
CC
FF
Ejemplos: #3366FF #FF9900 #666666
Se consiguen los colores siguientes:
Por último, te ofrecemos unos archivos con programillas en JavaScript que te pueden ayudar a encontrar los colores
adecuados. Entro otros, podrás encontrar el script que genera la tabla de arriba.
Colores.zip 16Kb
Las páginas HTML pueden construirse con variedad de atributos que le pueden dar un aspecto a la página muy
personalizado. Podemos definir atributos como el color de fondo, el color del texto o de los enlaces. Estos atributos se
definen en la etiqueta <body> y, como decíamos son generales a toda la página.
Lo mejor para explicar su funcionamiento es verlos uno por uno.
La imagen se llama fondo.jpg y suponemos que se encuentra en el mismo directorio que la página. En este caso se
colocaría la siguiente etiqueta <body>
<body background="fondo.jpg">
Consejo: siempre que coloquemos una imagen de fondo, debemos poner también un color de fondo cercano al color de la imagen.
Esto se debe a que, al colocar una imagen de fondo, el texto de la página debemos colocarlo en un color que contraste suficientemente
con dicho fondo. Si el visitante no puede ver el fondo por cualquier cuestión (Por ejemplo tener deshabilitada la carga de imágenes)
puede que el texto no contraste lo suficiente con el color de fondo por defecto de la web.
Creo que lo mejor será poner un ejemplo. Si la imagen de fondo es oscura, tendremos que poner un texto claro para que se pueda leer. Si
el visitante que accede a la página no ve la imagen de fondo, le saldrá el fondo por defecto, que generalmente es blanco, de modo que al
tener un texto con color claro sobre un fondo blanco, nos pasará que no podremos leer el texto convenientemente.
Ocurre parecido cuando se está cargando la página. Si todavía no ha llegado a nuestro sistema la imagen de fondo, se verá el fondo que
hayamos seleccionado con bgcolor y es interesante que sea parecido al color de la imagen para que se pueda leer el texto mientras se
carga la imagen de fondo.
2.5.5.- Márgenes
Con otros atributos de la etiqueta <body> se pueden asignan espacios de margen en las páginas, lo que es muy útil para
eliminar los márgenes en blanco que aparecen a los lados, arriba y debajo de la página. Estos atributos son distintos para
Internet Explorer y para Netscape Navigator, por lo que debemos utilizarlos todos si queremos que todos los
navegadores los interpreten perfectamente.
leftmargin: para indicar el margen a los lados de la página. Válido para iexplorer.
topmargin: para indicar el margen arriba y debajo de la página. Para iexplorer.
marginwidth: la contrapartida de leftmargin para Netscape. (Margen a los lados)
marginheight: igual que topmargin, pero para Netscape. (Margen arriba y abajo)
Tenemos un artículo sobre la utilización de estos atributos para hacer diseños avanzados con tablas en distintas
definiciones de pantalla, que puede ser interesante de leer.
Un ejemplo de página sin margen es la propia página de DesarrolloWeb.com, que estás visitando actualmente. (Por lo
menos a la hora de escribir este artículo) Además, vamos a ver otra página sin márgenes, por si alguien necesita ver el
ejemplo en estas líneas.
<body topmargin=0 leftmargin=0 marginheight=0 marginwidth=0 bgcolor="ffffff">
<table width=100% bgcolor=ff6666><tr><td>
<h1>Hola amigos</h1>
<br>
<br>
Gracias por visitarme!
</td></tr></table>
</body>
Esta página tiene el fondo blanco y dentro una tabla con el fondo rojo. En la página podremos ver que la tabla ocupa el
espacio en la página sin dejar sitio para ningún tipo de margen. Puede verse el ejemplo en una página a parte.
Todo lo que hemos visto hasta ahora en el Manual de HTML lo podemos encontrar en vídeo y en concreto las
explicaciones de los últimos artículos se han recogido en el Vídeotutorial de HTML - Fuentes, colores y estilos de
BODY.
Una página web se ha de ver en paises distintos, que usan conjuntos de caracteres distintos. El lenguaje HTML nos
ofrece un mecanismo por el que podemos estar seguros que una serie de caracteres raros se van a ver bien en todos los
ordenadores del mundo, independientemente de su juego de caracteres.
Este conjunto son los caracteres especiales. Cuando queremos poner uno de estos caracteres en una página, debemos
sustituirlo por su código.
Por ejemplo, la "á" (a minúscula acentuada) se escribe "á" de modo que la palabra página se escribiría en una
página HTML de este modo: página
¼ Œ
½ œ ¡ ¡
¾ Ÿ £ £
© © ¥ ¥
® ® § §
ª ª ¤ €
² ² ¦ Š
³ ³ « «
¹ ¹ ¬ ¬
¯ ¯ ­
µ µ º º
¶ ¶ ´ Ž
· · ¨ š
° ° ± ±
¸ ž » »
¿ ¿
Referencia: Hay un videotutorial en DesarrolloWeb.com que trata sobre enlaces y caracteres especiales. No son temas muy relacionados
entre si, pero seguro que nos sirve como práctica para aprender todo lo que se ha tratado en este artículo.
Parte 3:
Listas en HTML
A continuación comenzaremos a explicar las listas de HTML que implican varias etiquetas
para crear su estructura. Veremos varios tipos de listas que se pueden utilizar para
diversos objetivos.
Las posibilidades que nos ofrece el HTML en cuestión de tratamiento de texto son realmente notables. No se limitan a
lo visto hasta ahora, sino que van más lejos todavía. Varios ejemplos de ello son las listas, que sirven para enumerar y
definir elementos, los textos preformateados y las cabeceras o títulos.
Las listas originalmente están pensadas para citar, numerar y definir cosas a través de características, o al menos así lo
hacemos en la escritura de textos. Sin embargo, las listas finalmente se utilizan para mucho más que enumerar una serie
de puntos, en realidad son un recurso muy interesante para poder maquetar elementos diversos, como barras de
navegación, pestañas etc. Pero esto lo veremos más adelante, cuando apliquemos estilos CSS a las listas.
De momento, en este Manual de HTML, trataremos las listas desde el punto de vista de su construcción y veremos los
diferentes tipos que existen, y que podemos utilizar para resolver nuestras distintas necesidades a la hora de escribir
textos en HTML.
Referencia: Todos los tipos de listas los hemos explicado en vídeo y se pueden revisar en el Videotutorial de HTML, más concretamente
en la entrega siguiente: Vídeo sobre las Listas HTML.
El resultado:
Nota: En algunos navegadores no funciona la opción de cambiar el tipo de viñeta a mostrar y por mucho que nos empeñemos, siempre
saldrá el redondel negro.
En caso de que no funcione siempre podemos construir la lista a mano con la viñeta que queramos utilizando las tablas de HTML.
Veremos más adelante cómo trabajar con tablas.
Vamos a ver un ejemplo de lista con un cuadrado en lugar de un redondel, y en el último elemento colocaremos un
círculo. Para ello vamos a colocar el atributo type en la etiqueta <ul>, con lo que afectará a todos los elementos de la
lista.
<ul type="square">
<li>Elemento 1
<li>Elemento 2
<li>Elemento 3
<li type="circle">Elemento 4
</ul>
Estamos en el Manual de HTML y continuamos estudiando las listas de HTML, con las que crear estructuras atractivas
para presentar la información. En el capítulo anterior vimos las listas desordenadas y ahora estudiaremos las listas
ordenadas.
Para realizar las listas ordenadas usaremos las etiquetas <ol> (ordered list) y su cierre. Cada elemento sera igualmente
indicado por la etiqueta <li>, que ya vimos en las listas desordenadas.
Pongamos un ejemplo:
<p>Reglas de comportamiento en el trabajo</p>
<ol>
<li>El jefe siempre tiene la razón
<li>En caso de duda aplicar regla 1
</ol>
El resultado es:
Reglas de comportamiento en el trabajo
1. El jefe siempre tiene la razón
2. En caso de duda aplicar regla 1
Del mismo modo que para las listas desordenadas, las listas ordenadas ofrecen la posibilidad de modificar el estilo. En
concreto nos es posible especificar el tipo de numeración empleado eligiendo entre números (1, 2, 3...), letras (a, b, c...)
y sus mayúsculas (A, B, C,...) y números romanos en sus versiones mayúsculas (I, II, III,...) y minúsculas (i, ii, iii,...).
Para realizar dicha selección hemos de utilizar, como para el caso precedente, el atributo type, el cual será situado
dentro de la etiqueta <ol>. Los valores que puede tomar el atributo en este caso son:
1 Para ordenar por números
a Por letras del alfabeto
A Por letras mayúsculas del alfabeto
i Ordenación por números romanos en minúsculas
I Ordenación por números romanos en mayúsculas
Nota: Recordamos que en algunos navegadores no funciona la opción de cambiar el tipo de viñeta a mostrar
Puede que en algún caso deseemos comenzar nuestra enumeración por un número o letra que no tiene por qué ser
necesariamente el primero de todos. Para solventar esta situación, podemos utilizar un segundo atributo, start, que
tendra como valor un número. Este número, que por defecto es 1, corresponde al valor a partir del cual comenzamos a
definir nuestra lista. Para el caso de las letras o los números romanos, el navegador se encarga de hacer la traducción del
número a la letra correspondiente.
Os proponemos un ejemplo usando este tipo de atributos:
<p>Ordenamos por numeros</p>
<ol type="1">
<li>Elemento 1
<li> Elemento 2
</ol>
2. Elemento 2
Ordenamos por letras
a. Elemento a
b. Elemento b
Ordenamos por numeros romanos empezando por el 10
x. Elemento x
xi. Elemento xi
Terminamos el tema de listas en el manual de HTML de DesarrolloWeb.com estudiando las listas de definición.
Veremos también la anidación de listas, que resultará un recurso interesante para estructurar datos un poco más
complejos o enumerar elementos con una jerarquía.
El efecto producido:
Diccionario de la Real Academia
Brujula
Señórula montada en una escóbula
Oreja
Sesenta minutejos
Fijaos en que cada línea <dd> esta desplazada hacia la izquierda. Este tipo de etiquetas son usadas a menudo con el
propósito de crear textos más o menos desplazados hacia la izquierda.
El código:
<dl>
<dd>Primer nivel de desplazamiento
<dl>
<dd>Segundo nivel de desplazamiento
<dl>
<dd>Tercer nivel de desplazamiento
</dl>
</dl>
</dl>
El resultado:
Primer nivel de desplazamiento
Segundo nivel de desplazamiento
Tercer nivel de desplazamiento
Referencia: Con esto hemos acabado el tema sobre Listas HTML, sin embargo, podemos completar las explicaciones en el Videotutorial
de HTML, en el Vídeo sobre las Listas HTML.
Parte 4:
Hasta aquí, hemos podido ver que una página web es un archivo HTML en el que podemos incluir, entre otras cosas,
textos formateados a nuestro gusto e imágenes (las veremos enseguida). Del mismo modo, un sitio web podrá ser
considerado como el conjunto de archivos, principalmente páginas HTML e imágenes, que constituyen el contenido al
que el navegante tiene acceso.
Sin embargo, no podríamos hablar de navegante o de navegación si estos archivos HTML no estuviesen debidamente
conectados entre ellos y con el exterior de nuestro sitio por medio de enlaces hipertexto. En efecto, el atractivo original
del HTLM radica en la posible puesta en relación de los contenidos de los archivos introduciendo referencias bajo
forma de enlaces que permitan un acceso rápido a la información deseada. De poco serviría en la red tener páginas
aisladas a las que la gente no puede acceder y desde las que la gente no puede saltar a otras.
Un enlace puede ser fácilmente detectado en una página. Basta con deslizar el puntero del ratón sobre las imágenes o el
texto y ver como cambia de su forma original transformándose por regla general en una mano con un dedo señalador.
Adicionalmente, estos enlaces suelen ir, en el caso de los textos, coloreados y subrayados para que el usuario no tenga
dificultad en reconocerlos. Si no especificamos lo contrario (ya tendremos ocasión de explicar como), estos enlaces
texto estarán subrayados y coloreados en azul. En el caso de las imágenes que sirvan de enlace, veremos que están
delimitadas por un marco azul por defecto.
Para colocar un enlace, nos serviremos de las etiquetas <a> y </a>. Dentro de la etiqueta de apertura deberemos
especificar asimismo el destino del enlace. Este destino será introducido bajo forma de atributo, el cual lleva por
nombre href.
La sintaxis general de un enlace es por tanto de la forma:
<a href="destino">contenido</a>
Siendo el contenido un texto o una imagen. Es la parte de la página que se colocará activa y donde deberemos pulsar
para acceder al enlace.
Por su parte, destino será una página, un correo electrónico o un archivo.
En función del destino los enlaces son clásicamente agrupados del siguiente modo:
• Enlaces internos: los que se dirigen a otras partes dentro de la misma página.
• Enlaces locales: los que se dirigen a otras páginas del mismo sitio web.
• Enlaces remotos: los dirigidos hacia páginas de otros sitios web.
• Enlaces con direcciones de correo: para crear un mensaje de correo dirigido a una dirección.
• Enlaces con archivos: para que los usuarios puedan hacer download de ficheros.
Referencia: Para complementar las explicaciones sobre los enlaces HTML recomendamos ver el videotutorial sobre enlaces.
Son los enlaces que apuntan a un lugar diferente dentro de la misma página. Este tipo de enlaces son esencialmente
utilizados en páginas donde el acceso a los contenidos puede verse dificultado debido al gran tamaño de la misma.
Mediante estos enlaces podemos ofrecer al visitante la posibilidad de acceder rápidamente al principio o final de la
página o bien a diferentes párrafos o secciones.
Para crear un enlace de este tipo es necesario, aparte del enlace de origen propiamente dicho, un segundo enlace que
será colocado en el destino. Veamos más claramente como funcionan estos enlaces con un ejemplo sencillo:
Ir abajo
Supongamos que queremos crear un enlace que apunte al final de la página. Lo primero será colocar nuestro enlace
origen. Lo pondremos aquí mismo y lo escribiremos del siguiente modo:
<a href="#abajo">Ir abajo</a>
Como podéis ver, el contenido del enlace es el texto "Ir abajo" y el destino, abajo, es un punto de la misma página que
todavía no hemos definido. Ojo al símbolo #; es él quien especifica al navegador que el enlace apunta a una sección en
particular.
En segundo lugar, hay que generar un enlace en el destino. Este enlace llevara por nombre abajo para poder distinguirlo
de los otros posibles enlaces realizados dentro de la misma página. En este caso, la etiqueta que escribiremos será ésta:
<a name="abajo"></a>
A decir verdad, estos enlaces, aunque útiles, no son los más extendidos de cuantos hay. La tendencia general es la de
crear páginas (archivos) independientes con tamaños más reducidos enlazados entre ellos por enlaces locales (los
veremos enseguida). De esta forma evitamos el exceso de tiempo de carga de un archivo y la introducción de exceso de
información que pueda desviar la atención del usuario.
Una aplicación corriente de estos enlaces consiste en poner un pequeño índice al principio de nuestro documento donde
introducimos enlaces origen a las diferentes secciones. Paralelamente, al final de cada sección introducimos un enlace
que apunta al índice de manera que podamos guiar al navegante en la búsqueda de la información útil para él.
Como hemos dicho, un sitio web esta constituido de páginas interconexas. En el capitulo anterior hemos visto como
enlazar distintas secciones dentro de una misma página. Nos queda pues estudiar la manera de relacionar los distintos
documentos HTML que componen nuestro sitio web.
Para crear este tipo de enlaces, hemos de crear una etiqueta de la siguiente forma:
<a href="archivo.html">contenido</a>
Por regla general, para una mejor organización, los sitios suelen estar ordenados por directorios. Estos directorios suelen
contener diferentes secciones de la página, imágenes, sonidos...Es por ello que en muchos casos no nos valdrá con
especificar el nombre del archivo, sino que tendremos que especificar además el directorio en el que nuestro
archivo.html esta alojado.
Si habéis trabajado con MS-DOS no tendréis ningún problema para comprender el modo de funcionamiento. Tan solo
hay que tener cuidado en usar la barra "/" en lugar de la contrabarra "".
Para aquellos que no saben como mostrar un camino de un archivo, aquí van una serie de indicaciones que os ayudaran
a comprender la forma de expresarlos. No resulta difícil en absoluto y con un poco de practica lo haréis prácticamente
sin pensar.
1. Hay que situarse mentalmente en el directorio en el que se encuentra la página con el enlace.
2. Si la página destino esta en un directorio incluido dentro del directorio en el que nos encontramos, hemos de
marcar el camino enumerando cada uno de los directorios por los que pasamos hasta llegar al archivo y
separándolos por el símbolo barra "/". Al final obviamente, escribimos el archivo.
3. Si la página destino se encuentra en un directorio que incluye el de la página con el enlace, hemos de escribir
dos puntos y una barra "../" tantas veces como niveles subamos en la arborescencia hasta dar con el directorio
donde esta emplazado el archivo destino.
4. Si la página se encuentra en otro directorio no incluido ni incluyente del archivo origen, tendremos que subir
como en la regla 3 por medio de ".." hasta encontrar un directorio que englobe el directorio que contiene a la
página destino. A continuación haremos como en la regla 2. Escribiremos todos los directorios por los que
pasamos hasta llegar al archivo.
Ejemplo:
<a href="seccion1/paginas/yyy.html">contenido</a>
Los enlaces locales pueden a su vez apuntar ya no a la página en general sino más precisamente a una sección
concreta. Este tipo de enlaces resultan ser un híbrido de interno y local. La sintaxis es de este tipo:
<a href="archivo.html#seccion">contenido</a>
Como para los enlaces internos, en este caso hemos de marcar la sección con otro enlace del tipo:
<a name="seccion"></a>
Como ejemplo, he aquí un enlace que apunta al capitulo anterior al final de la página.
Para acabar con los enlaces vamos a ver los últimos 3 tipos de enlaces que habíamos señalado.
Sólo cabe destacar que todos las direcciones web (URLs) empiezan por http://. Esto indica que el protocolo por el que
se accede es HTTP, el utilizado en la web. No debemos olvidarnos de colocarlas, porque si no los enlaces serán tratados
como enlaces locales a nuestro sitio.
Otra cosa interesante es que no tenemos que enlazar con una página web con el protocolo HTTP necesariamente.
También podemos acceder a recursos a través de otros protocolos como el FTP. En tal caso, las direcciones de los
recursos no comenzarán por http:// sino por ftp://.
Consejo: Cuando coloques enlaces a direcciones de correo procura indicar en el contenido del enlace (lo que hay entre <A> y </A>) la
dirección de correo a la que se debe escribir. Esto es porque si un usuario no tiene configurado un programa de correo en su ordenador
no podrá enviar mensajes, pero por lo menos podrá copiar la dirección de mail y escribir el correo a través de otro ordenador o un
sistema web-mail.
Además de la dirección de correo del destinatario, también podemos colocar en el enlace el asunto del mensaje. Esto se
consigue colocando después de la dirección de correo un interrogante, la palabra subject, un signo igual (=) y el asunto
en concreto.
<a href="malito:[email protected]?subject=contacto a través de la
pagina">[email protected]</a>
Podemos colocar otros atributos del mensaje con una sintaxis parecida. En este caso indicamos también que el correo
debe ir con copia a [email protected].
<a href="mailto:[email protected]?subject=contacto a través de la
pagina&[email protected]">[email protected]</a>
Nota: El visitante de la página necesitará tener configurada una cuenta de correo electrónico en su sistema para enviar los mensajes.
Lógicamente, si no tiene servicio de correo en el ordenador no se podrán enviar los mensajes y este sistema de contacto con el visitante
no funcionará.
Si pinchamos un enlace de este tipo nuestro navegador descargará el fichero, haciendo la pregunta típica de "Qué
queremos hacer con el archivo. Abrirlo o guardarlo en disco".
Podemos ver un ejemplo de enlace a archivo con su consiguiente ventana de descarga de un archivo.
Consejo: No colocar en Internet archivos ejecutables directamente sino archivos comprimidos. Por dos razones:
2. Al preguntar al usuario lo que desea hacer con el fichero le ofrece la opción de abrirlo y guardarlo en disco. Nosotros
generalmente desearemos que el usuario lo guarde en disco y no lo ejecute hasta que lo tenga en su disco duro. Si se decido a
abrirlo en vez de guardarlo simplemente lo pondrá en marcha y cuando lo pare no se quedará guardado en su sistema. Si los
archivos están comprimidos obligaremos al usuario a descomprimirlos en su disco duro antes de ponerlos en marcha, con lo
que nos aseguramos que el usuario lo guarde en su ordenador antes de ejecutarlo.
Si queremos enlazar hacia otro tipo de archivo como un PDF o un mundo VRML (Realidad virtual para
Internet) lo seguimos haciendo de la misma manera. El navegador, si reconoce el tipo de archivo, es el
responsable de abrirlo utilizando el conector adecuado para ello. Así, si por ejemplo enlazamos con un PDF
pondrá el programa Acrobat Reader en funcionamiento para mostrar los contenidos. Si enlazamos con un mundo
VRML pondrá en marcha el plug-in que el usuario tenga instalado para ver los mundos virtuales (Cosmo Player
por ejemplo).
Este sería un ejemplo de enlace a un documento PDF.
<a href="mi_documento.pdf">Descarga el PDF</a>
Dejemos aquí una pequeña reseña sobre un atributo que se está convirtiendo en esencial en los enlaces y que no
habíamos comentado en nuestro manual de HTML, aunque sí habíamos visto algo en nuestro manual de
posicionamiento en buscadores.
Nofollow es un atributo de los links HTML (etiqueta <A>), que sirve para definir o marcar el comportamiento de los
buscadores cuando rastrean nuestra página web en busca de contenidos para indexarlos. Por defecto, cuando un
buscador visita una página web va recorriendo todos sus enlaces y va indexando su contenido en su base de datos de
páginas. Esto es algo que hacen automática y periódicamente. Ocurre tanto con los enlaces internos a otras páginas de
nuestro sitio como con los enlaces externos a otras páginas web. Los motores que recorren las webs de enlace a enlace,
se llaman arañas.
Ahora bien, nosotros podemos, a través del atributo rel="nofollow", decirle a un buscador que no continúe indexando
los contenidos de la página a la que lleva un enlace en particular. Lo haríamos así:
<a href="URL_DEL_ENLACE" rel="nofollow">TEXTO_DEL_ENLACE</a>
Otra técnica relacionada con nofollow, pero más segura, para que no se indexe parte del contenido de nuestra página, es
el uso del archivo robots.txt, que ya hemos comentado anteriormente en DesarrolloWeb.com.
Parte 5:
Imágenes, formatos
gráficos e
optimización
Veremos todo lo que los creadores de webs deben conocer sobre las imágenes, no sólo
cómo incluir imágenes en las páginas, sino también qué formatos gráficos son adecuados
en cada caso y cómo podemos optimizar las imágenes para reducir el tiempo de carga
de las webs.
Sin duda uno de los aspectos más vistosos y atractivos de las páginas web es el grafismo. La introducción en nuestro
texto de imágenes puede ayudarnos a explicar más fácilmente nuestra información y darle un aire mucho más estético.
El abuso no obstante puede conducirnos a una sobrecarga que se traduce en una distracción para el navegante, quien
tendrá más dificultad en encontrar la información necesaria.
El uso de imágenes también tiene que ser realizado con cuidado porque aumentan el tiempo de carga de la página, lo
que puede ser de un efecto nefasto si nuestro visitante no tiene una buena conexión o si es un poco impaciente. Por ello
es recomendable siempre optimizar las imágenes para Internet, haciendo que su tamaño en bytes sea lo mínimo posible,
para facilitar la descarga, pero sin que ello comprometa mucho su calidad.
En este capitulo no explicaremos como crear ni tratar las imágenes, únicamente diremos que para ello se utilizan
aplicaciones como Paint Shop Pro, Photoshop o Gimp. Tampoco explicaremos las particularidades de cada tipo de
archivo: GIF, JPG o PNG y la forma de optimizar nuestras imágenes. Un capitulo posterior al respecto será dedicado a
este menester: Formatos gráficos para páginas web.
Las imágenes son almacenadas en forma de archivos, principalmente GIF (para dibujos) o JPG (para fotos). Estos
archivos los podemos obtener desde diversas vías, como por ejemplo nuestra cámara digital, aunque también pueden ser
creados por nosotros mismos con algún editor gráfico o pueden ser descargados gratuitamente en sitios web
especializados.
Así pues, en estos primeros capítulos nos limitaremos a explicar como insertar y alinear debidamente en nuestra página
una imagen ya creada.
La etiqueta que utilizaremos para insertar una imagen es <img> (image). Esta etiqueta no posee su cierre
correspondiente y en ella hemos de especificar obligatoriamente el paradero de nuestro archivo gráfico mediante el
atributo src (source).
La sintaxis queda entonces de la siguiente forma:
<img src="camino hacia el archivo">
Para expresar el camino, lo haremos de la misma forma que vimos para los enlaces. Las reglas siguen siendo las
mismas, lo único que cambia es que, en lugar de una página destino, el destino es un archivo gráfico.
Aparte de este atributo, indispensable obviamente para la visualización de la imagen, la etiqueta <img> nos propone
otra serie de atributos de mayor o menor utilidad, que listamos a continuación:
pequeños redimensionando la imagen por medio de estos atributos a partir de archivos de tamaño descomunal. Hay que
pensar que el tamaño de una imagen con unas dimensiones de la mitad no se reduce a la mitad, sino que resulta ser
aproximadamente 4 veces inferior.
Ni que decir tiene que una imagen, lo mismo que un texto, puede servir de enlace. Vista la estructura de los enlaces podemos muy
fácilmente adivinar el tipo de código necesario:
Las dimensiones originales de la imagen son 28x21, así que este sería el código fuente:
<img src="img1.gif" width="28" height="21" alt="Tamaño original" border="3">
<br>
<br>
<img src="img1.gif" width="68" height="21" alt="Achatada" border="0">
<br>
<br>
<img src="img1.gif" width="28" height="51" alt="Alargada" border="0">
<br>
<br>
<img src="img1.gif" width="56" height="42" alt="Doble grande" border="0">
Nota: A lo largo de los próximos artículos veremos muchas otras cosas sobre imágenes, pero si lo deseas, también puedes acceder a un
vídeo donde se trata lo visto anteriormente y muchas otras cosas adicionales sobre las imágenes y la creación de webs: Videotutorial
HTML: imágenes.
Vimos en su momento el atributo align que nos permitía alinear el texto a derecha, izquierda o centro de nuestra página.
Dijimos que este atributo no era exclusivo de la etiqueta <p> sino que podía ser encontrado en otro tipo de etiquetas.
Pues bien, <img> resulta ser una de esas etiquetas que aceptan este atributo aunque en este caso el funcionamiento
resulta ser diferente.
Para alinear una imagen horizontalmente podemos hacerlo de la misma forma que el texto, es decir, utilizando el
atributo align dentro de una etiqueta <p> o <div>. En este caso, lo que incluiremos dentro de esa etiqueta será la imagen
en lugar del texto:
Este código mostrará la imagen en el centro:
<div align="center"><img src="logo.gif"></div>
Quedaría así:
Sin embargo, ya hemos dicho que la etiqueta <img> puede aceptar el atributo align. En este caso, la utilidad que le
damos difiere de la anterior.
El hecho de utilizar el atributo align dentro de la etiqueta <img> nos permite, en el caso de darle los valores left o right,
justificar la imagen del lado que deseamos a la vez que rellenamos con texto el lado opuesto. De esta forma embebemos
nuestras imágenes dentro del texto de una manera sencilla.
Aquí podéis ver el tipo de código a crear para obtener dicho efecto:
<p>
<img src="imagen.gif" align="right">Texto tan extenso como queramos que cubrirá la parte izquierda
de la imagen. Sigo poniendo texto para que se vea el efecto, Bla bla bla bla bla bla bla...
</p>
Quedaría así:
Texto tan extenso como
queramos que cubrirá
la parte izquierda de la
imagen. Sigo poniendo
texto para que se vea
el efecto, Bla bla bla bla bla bla bla...
<p>
<img src="imagen.gif" align="left">Texto tan extenso como queramos que cubrirá la parte derecha de
la imagen. Sigo poniendo texto para que se vea el efecto, Bla bla bla bla bla bla bla...
</p>
Quedaría así:
Texto tan extenso como
queramos que cubrirá
la parte izquierda de la
imagen. Sigo poniendo
texto para que se vea
el efecto, Bla bla bla bla bla bla bla...
Si en algún momento deseásemos dejar de rellenar ese espacio lateral, podemos pasar a una zona libre introduciendo un
salto de línea <br> dentro del cual añadiremos un atributo: clear
Así, etiquetas del tipo:
<br clear="left">
Saltara verticalmente hasta encontrar el lateral izquierdo libre.
<br clear="right">
Saltara verticalmente hasta encontrar el lateral derecho libre.
<br clear="all">
Saltará verticalmente hasta encontrar ambos laterales libres.
Ejemplo de clear:
Texto tan extenso como
queramos que cubrirá
la parte izquierda.
El componente gráfico de las páginas web tiene mucha importancia, es el que hace que estas sean vistosas y el que nos
permite aplicar nuestra creatividad para hacer del diseño de sitios una tarea agradable. Es también una herramienta para
acercar los sitios al mundo donde vivimos, si embargo, es también el causante de errores graves en las páginas y hacer
de estas, en algunos casos, un martirio para el visitante.
Las nociones básicas para el uso de archivos gráficos son sencillas, conocerlas, aunque sea ligeramente, nos ayudará a
crear sitios agradables y rápidos. No cometer errores en el uso de las imágenes es fundamental, aunque no seas un
diseñador y las imágenes que utilices sean feas, utilízalas bien y así estarás haciendo más agradable la visita a tus
páginas.
GIF 4 colores - 2 KB
Para los archivos JPG: Ajustaremos la calidad del archivo cuando lo estemos guardando. Este formato nos permite
bajar mucho la calidad de la imagen sin que esta pierda mucho en su aspecto visual.
JPG
calidad 0
3 KB
JPG
calidad 20
5,9 KB
JPG
calidad 50
10 KB
Nota: Si te interesa reforzar todos los conceptos tratados en este artículo y ver cómo optimizamos nosotros imágenes para la web, te
recomendamos ver el Vídeo sobre Formatos gráficos para páginas web.
En capítulos anteriores hemos podido adentrarnos en el elemento básico de navegación del web: El enlace hipertexto.
Hemos visto que estos enlaces son palabras, textos o imágenes que, al pinchar sobre ellos, nos envían a otras páginas o
zonas.
Los mapas de imágenes es un nuevo planteamiento de navegación que incorpora una serie de enlaces dentro de una
misma imagen. Estos enlaces son definidos por figuras geométricas y funcionan exactamente del mismo modo que los
otros enlaces. Podéis ver el funcionamiento de uno en este enlace.
En un principio, estos mapas no eran directamente reconocidos por los navegadores y recurrían a tecnologías de lado
del servidor para ser visualizados. Hoy en día pueden ser implementados por medio de código HTML tal y como
veremos en este capitulo.
Podemos utilizar estos mapas, por ejemplo, en portadas donde damos a conocer cada una de las secciones del sitio por
medio de una imagen. También puede ser muy práctico en mapas geográficos donde cada ciudad, provincia o punto
cualquiera representa un enlace a una página.
En cualquier caso, el uso de estos mapas ha de estar sistemáticamente acompañado de un texto explicativo que dé a
conocer al usuario la posibilidad de hacer clic sobre los distintos puntos de la imagen. Frases como "Haz clic sobre tal
icono para acceder a tal información" resultan muy indicativas a la hora de hacer intuitiva la navegación por los mapas
de imágenes. Por otro lado, no esta de más introducir esa misma explicación en el atributo alt de la imagen.
Así pues, un mapa de imagen esta compuesto de dos partes:
• La imagen propiamente dicha que estará situada como de costumbre dentro de la etiqueta <body> de nuestro
documento HTML.
• Un código, situado en el interior de la etiqueta <map>, que delimitara por medio de líneas geométricas
imaginarias cada una de las áreas de los enlaces presentados en la imagen.
Las líneas geométricas que delimitan los enlaces, es decir, las áreas de los enlaces,
han de ser definidas por medio de coordenadas. Cada imagen es definida por unas
dimensiones de ancho (X) y alto (Y) y cada punto de la imagen puede ser definido
por tanto diciendo a que altura (x) y anchura (y) nos encontramos. De este modo, la
esquina superior izquierda corresponde a la posición 0,0 y la esquina inferior
derecha corresponde a las coordenadas X,Y. Si deseamos saber qué coordenadas
corresponden a un punto concreto de nuestra imagen, lo mejor es utilizar un
programa de diseño grafico como Photoshop o Paint Shop Pro.
La mejor forma de explicar el funcionamiento de este tipo de mapas es a partir de
un ejemplo práctico. Supongamos que tenemos una imagen con un mapa como
esta:
Dentro de ella queremos introducir un enlace a cada uno de los elementos que la componen. Para ello, definiremos
nuestros enlaces como zonas circulares de pequeño tamaño que serán distribuidas a lo largo y ancho de la imagen.
Veamos a continuación el código que utilizaremos:
<table border=0 width=450><tr><td align="center">
<map name="mapa1">
<area alt="Pulsa para ver la página de mis amigos" shape="CIRCLE" coords="44,36,29" href="#">
<area alt="Pulsa para ver mi novia" shape="CIRCLE" coords="140,35,31" href="#">
<area alt="Pulsa para conocer a mi Familia" shape="circle" coords="239,37,30" href="#">
<area alt="Pulsa para conocer mi trabajo" shape="CIRCLE" coords="336,36,31" href="#">
</map>
<img src="images/html/mapa1.gif" width="380" height="72" alt="Mapa de imágenes. Pulsa en cada una de
los círculos." border="0" usemap="#mapa1">
<br>
Podéis observar, tal y como hemos explicado antes, que nuestro mapa consta de dos partes principales: la imagen y la
etiqueta <map> que define las áreas de cada enlace.
Cada área se indica con una etiqueta <area>, que tiene los siguientes atributos:
alt
Para indicar un texto que se mostrará cuando situemos el ratón en el área.
shape
Indica el tipo de área.
coords
Las coordenadas que definen el área. Serán un grupo de valores numéricos distintos dependiendo del tipo de área
(shape) que estemos definiendo.
href
Para indicar el destino del enlace correspondiente al área.
En este caso hemos utilizado unas áreas circulares (shape="CIRCLE"), que se definen indicando el centro del círculo
-una coordenada (X,Y) y el radio, que es un número entero que se corresponde con el número de pixels desde el centro
hasta el borde del círculo.
shape="CIRCLE"
Crea un área circular, que se indica con la coordenada del centro del círculo y el
radio. A la vista de nuestro dibujo, la etiqueta de un área circular tendría esta
forma:
<area shape="CIRCLE" coords="X1,Y1,R" href="#">
shape="POLY"
Este tipo de área, poligonal, es la más compleja de todas. Un polígono queda
definido indicando todos sus puntos, pero atención, los tenemos que indicar en
orden, siguiendo el camino marcado por el perímetro del polígono. A la vista del
dibujo y los nombres que hemos dado a los puntos del polígono, la etiqueta
<area> quedaría de esta forma.
<area shape="POLY" coords=" X1,Y1, X2,Y2, X3,Y3, X4,Y4" href="#">
Parte 6:
Tablas en HTML
Las tablas fueron muy importantes en una época para maquetar páginas web. Hoy lo
adecuado es utilizarlas sólo para presentar información tabulada, es decir, colocada en
una rejilla de filas y columnas. En los siguientes artículos aprenderemos todo sobre las
tablas en HTML.
Una tabla en un conjunto de celdas organizadas dentro de las cuales podemos alojar distintos contenidos. HTML
dispone de una gran variedad de etiquetas para crear tablas, de las cuales veremos una introducción en este artículo.
En un principio nos podría parecer que las tablas son raramente útiles y que pueden ser utilizadas principalmente para
listar datos como agendas, resultados y otros datos de una forma organizada. Nada más lejos de la realidad.
Hoy, gran parte de los diseñadores de páginas basan su maquetación en este tipo de artilugios. En efecto, una tabla nos
permite organizar y distribuir los espacios de la manera más adecuada. Nos puede ayudar a generar texto en columnas
como los periódicos, prefijar los tamaños ocupados por distintas secciones de la página o poner de una manera sencilla
un pie de foto a una imagen.
Actualizado: Estamos en 2011 y hablar de las tablas como solución para maquetación ha pasado a la historia. Las webs de primera y
segunda generación utilizaban este recurso intensivamente para maquetar contenidos en páginas web, además de otros como los píxeles
transparentes para conseguir efectos como márgenes o espacios en blanco. Sin embargo, las webs actuales, o tercera generación, han
acabado con todas esas técnicas que no hacían más que ensuciar el código fuente de las páginas web, mezclando presentación y
contenido. Actualmente toda la maquetación de una página se organiza con CSS, lo que nos da un mayor control de todos los elementos
de la página y la posibilidad de separar todos los estilos para definir el aspecto de una web en un fichero aparte del HTML.
Por ello, en el momento actual las tablas se utilizan mucho menos que en el pasado y realmente la recomendación es usarlas solo en los
casos en los que necesitemos incluir en una página información tabulada, es decir, dispuesta en filas y columnas. Todo uso basado en
tablas para procurar colocar elementos en determinadas posiciones de la página sería incorrecto en las técnicas actuales de diseño de
páginas web.
Como veremos a continuación, existen diversas etiquetas que se deben utilizar en una forma determinada para la
creación de tablas. Por ello, puede que en un principio nos resulte un poco complicado trabajar con estas
estructuras pero, con un poco de práctica podremos crear tablas con absoluta soltura. Si deseamos mostrar datos
de una manera sencilla de leer, dispuestos en filas y columnas, tarde o temprano observaremos que las tablas son
la mejor solución y apreciaremos las posibilidades nos ofrecen.
Para empezar, nada más sencillo que por el principio: las tablas son definidas por las etiquetas <table> y </table>.
Dentro de estas dos etiquetas colocaremos todas las otras etiquetas, textos e imágenes que darán forma y contenido a la
tabla.
Las tablas son descritas por líneas de izquierda a derecha. Cada una de estas líneas es definida por otra etiqueta y su
cierre: <tr> y </tr>
Asimismo, dentro de cada línea, habrá diferentes celdas. Cada una de estas celdas será definida por otro par de
etiquetas: <td> y </td>. Dentro de estas etiquetas será donde coloquemos nuestro contenido.
Aquí tenéis un ejemplo de estructura de tabla:
<table>
<tr>
<td>Celda 1, linea 1</td>
<td> Celda 2, linea 1</td>
</tr>
<tr>
<td> Celda 1, linea 2</td>
<td> Celda 2, linea 2</td>
</tr>
</table>
El resultado:
Nota: Hasta aquí hemos visto todas las etiquetas que necesitamos conocer para crear tablas. Existen otras etiquetas, pero lo que podemos
conseguir con ellas se puede conseguir también usando las que hemos visto.
Por poner un ejemplo, señalamos la etiqueta <th>, que sirve para crear una celda cuyo contenido esté formatedo como un título o
cabecera de la tabla. En la práctica, lo que hace es poner en negrita y centrado el contenido de esa celda, lo que se puede conseguir
aplicando las correspondientes etiquetas dentro de la celda. Así:
A partir de esta idea simple y sencilla, las tablas adquieren otra magnitud cuando les incorporamos toda una
batería de atributos aplicados sobre cada tipo de etiquetas que las componen. A lo largo de los siguientes
capítulos nos adentraremos en el estudio de estos atributos de manera a proporcionaros los útiles indispensables
para una buena puesta en página.
Podemos continuar las explicaciones de tablas en los artículos:
- Atributos para filas y celdas
- Atributos de la tabla y conclusión
- Bordes de tabla en HTML 4
Adicionalmente, queremos destacar la existencia de un vídeo que trata sobre varios de los temas explicados en este y los
próximos artículos: Videotutorial sobre las tablas en HTML.
Hemos visto en el capitulo anterior que las tablas están compuestas de líneas que, a su vez, contienen celdas. Las celdas
son delimitadas por las etiquetas <td> o por las etiquetas <th> (si queremos texto en negrita y centrado) y constituyen
un entorno independiente del resto del documento. Esto quiere decir que:
• Podemos usar prácticamente cualquier tipo de etiqueta dentro de la etiqueta <td> para, de esta forma, dar forma
a su contenido.
• Las etiquetas situadas en el interior de la celda no modifican el resto del documento.
• Las etiquetas de fuera de la celda no son tenidas en cuenta por ésta.
Así pues, podemos especificar el formato de nuestras celdas a partir de etiquetas introducidas en su interior o mediante
atributos colocados dentro de la etiqueta de celda <td> o bien, en algunos casos, dentro de la etiqueta <tr>, si deseamos
que el atributo sea valido para toda la línea. La forma más útil y actual de dar forma a las celdas es a partir de las hojas
de estilo en cascada que ya tendréis la oportunidad de abordar más adelante.
Veamos a continuación algunos atributos útiles para la construcción de nuestras tablas. Empecemos viendo atributos
que nos permiten modificar una celda en concreto o toda una línea:
Otros atributos que pueden ser únicamente asignados a una celda y no al conjunto de celdas de una línea son:
Nota: El atributo height no funciona en todos los navegadores, además, su uso no está muy extendido. Las celdas por lo general tienen el
alto que ncesitan para que quepa todo el contenido que se le haya insertado, es decir, crecen lo suficiente para que quepa lo que hemos
colocado dentro.
El atributo width si que funciona en todos los navegadores y lo tendréis que utilizar constantemente. Si le asignamos un ancho a la celda,
el ancho será respetado y si dicha celda tiene mucho texto o cualquier otro contenido, la celda crecerá hacia abajo todo lo necesario para
que quepa lo que hemos colocado.
Un matiz al último párafo. Se trata de que si definimos una celda de un ancho 100 por ejemplo, y colocamos en la celda un contenido
como una imagen que mida más de 100 pixeles, la celda crecerá en horizontal todo lo necesario para que la imagen quepa. Si el
elemento, aunque más ancho, fuera divisible (como un texto) el ancho sería respetado y el texto crecería hacia abajo o lo que es lo
mismo, en altura, como señalábamos en el anterior párrafo.
Estos últimos cuatro atributos descritos son de gran utilidad. Concretamente, height y width nos ayudan a definir las
dimensiones de nuestras celdas de una forma absoluta (en pixels o puntos de pantalla) o de una forma relativa, es decir
por porcentajes referidos al tamaño total de la tabla. Podéis leer un articulo interesante a propósito de estas dos
modalidades de diseño en nuestro manual de usabilidad.
A titulo de ejemplo:
<td width="80">
Dará una anchura de 80 pixels a la celda. Sin embargo,
<td width="80%">
Dará una anchura a la celda del 80% de la anchura de la tabla.
Hay que tener en cuenta que, definidas las dimensiones de las celdas, el navegador va a hacer lo que buenamente pueda
para satisfacer al programador. Esto quiere decir que puede que en algunas ocasiones el resultado que obtengamos no
sea el esperado. Concretamente, si el texto presenta una palabra excesivamente larga, puede que la anchura de la celda
se vea aumentada para mantener la palabra en la misma línea. Por otra parte, si el texto resulta muy largo, la celda
aumentara su altura para poder mostrar todo su contenido.
Análogamente, si por ejemplo definimos dos anchuras distintas a celdas de una misma columna, el navegador no sabrá
a cual hacer caso. Es por ello que resulta conveniente tener bien claro desde un principio como es la tabla que queremos
diseñar. No esta de más si la prediseñamos en papel si la complejidad es importante. El HTML resulta en general fácil
pero las tablas pueden convertirse en un verdadero quebradero de cabeza si no llegamos a comprenderlas debidamente.
Los atributos rowspan y colspan son también utilizados frecuentemente. Gracias a ellos es posible expandir celdas
fusionando éstas con sus vecinas. El valor que pueden tomar estas etiquetas es numérico. El número representa la
cantidad de celdas fusionadas.
Así,
<td colspan="2">
Fusionara la celda en cuestión con su vecina derecha.
Celda
Esta celda tiene rowspan="2", Normal
por eso tiene fusionada la
celda de abajo. Otra celda
normal
Además de los atributos específicos de cada celda o línea, las tablas pueden ser adicionalmente formateadas a partir de
los atributos que nos ofrece la propia etiqueta <table>. He aquí aquellos que pueden parecernos en un principio
importantes:
Los atributos que definen las dimensiones, height y width, funcionan de una manera análoga a la de las celdas tal y
como hemos visto en el capitulo anterior. Contrariamente, el atributo align no nos permite justificar el texto de cada una
de las celdas que componen la tabla, sino más bien, justificar la propia tabla con respecto a su entorno.
Vamos a poner tres ejemplos de alineado de tablas, centradas, alineadas a la derecha y a la izquierda.
Para que se vea el efecto de alineado Esta tabla está alineada a la derecha
Ejemplo de tabla alineada a a la tabla debemos colocar un texto (aling="right"). Solo tiene una celda.
la derecha al lado y el texto rodeará la tabla,
igual que ocurría con las imágenes alineadas a un lado.
Esta tabla está alineada a la izquierda Para que se vea el efecto de alineado
Ejemplo de tabla alineada a (aling="left"). Solo tiene una celda. a la tabla debemos colocar un texto
la izquierda al lado y el texto rodeará la tabla,
igual que ocurría con las imágenes alineadas a un lado.
Los atributos cellpading y cellspacing nos ayudaran a dar a nuestra tabla un aspecto más estético. En un principio puede
parecernos un poco confuso su uso pero un poco de practica será suficiente para hacerse con ellos.
En la siguiente imagen podemos ver gráficamente el significado de estos atributos.
Podéis comprobar vosotros mismos que los atributos definidos para una celda tienen prioridad con respecto a los
definidos para una tabla. Podemos definir, por ejemplo, una tabla con color de fondo rojo y una de las celdas de color de
fondo verde y se verá toda la tabla de color rojo menos la celda verde. Del mismo modo, podemos definir un color azul
para los bordes de la tabla y hacer que una celda particular sea mostrada con un borde rojo. (Aunque esto no funcionará
en todos los navegadores debido a que algunos no reconocen el atributo bordercolor.
Consejo: Páginas como DesarrolloWeb.com y muchas otras (La mayoría de las páginas avanzadas) que basan su diseño en tablas,
realizan anidaciones de tablas constantemente para meter unos elementos de la página dentro de otros. Se pueden anidar tablas sin límite,
sin embargo, en el caso de Netscape 4 hay que tener cuidado con el número de tablas que anidamos, porque a medida que metemos una
tabla dentro de otra y otra dentro de esta y otra más, aumentando el grado de anidación sucesivamente... podemos encontrar problemas
en su visualización y puede que la página tarde un poco de tiempo más en mostrarse en pantalla.
Vamos a ver un código de anidación de tablas. Veamos primero el resultado y luego el código, así conseguiremos
entenderlo mejor.
<td align="center">
<table cellspacing="2" cellpadding="2" border="1">
<tr>
<td>Tabla anidada, celda 1</td>
<td>Tabla anidada, celda 2</td>
</tr>
<tr>
<td>Tabla anidada, celda 3</td>
<td>Tabla anidada, celda 4</td>
</tr>
</table>
</td>
</tr>
</table>
Se puede ver esta tabla en otra ventana, donde también podremos examinar su código fuente.
Otro ejemplo de tabla con el que podemos practicar:
También la podemos ver en una ventana a parte para extraer su código fuente.
Como ya vimos en nuestro manual de HTML, en los capítulos sobre trabajo con tablas, que se puede asignar un borde a
las tablas. Para ello utilizábamos el atributo border, pero en HTML 4 existe otros atributos para definir cómo queremos
que sean los bordes de las tablas.
Paso a describir cada uno de los distintos valores posibles, que afectan sólo al borde externo de la tabla, quedando los
bordes de las celdas inalterados:
• void: Ningún borde externo
• above: Sólo aparece el borde superior
• below: Sólo el borde inferior de la tabla
• hsides:Se mostrará sólo el borde de arriba y abajo.
• vsides: Sólo los bordes de los lados izquierdo y derecho
• lhs: Se mostrará tan solo el borde izquierdo
• rhs: Se mostrará solamente el borde derecho
• box: Los 4 bordes
• border: También se mostrarán los 4 bordes
Veamos un par de ejemplos de uso del atributo FRAME en tablas:
Tabla sin bordes externos (frame="void")
1 2 3
4 5 6
7 8 9
Tabla con borde externo arriba y abajo (frame="hsides")
1 2 3
4 5 6
7 8 9
tabla no sólo tiene borde la parte externa de la tabla, sino también cada una de sus casillas.
Los distintos valores que puede llevar el atributo RULES para definir los bordes internos son los siguientes:
rules = none | groups | rows | cols | all
12 3
45 6
78 9
Con borde interno para separar filas (rules="rows")
1 2 3
4 5 6
7 8 9
Con HTML 4 existen dos etiquetas que nos permiten agrupar filas o columnas de una tabla, para crear agrupaciones a
las que se les puede definir un estilo de una sola vez, y no fila a fila o celda a celda.
Estas etiquetas son las siguientes:
<TBODY>: Para agrupar conjuntos de filas.
<COLGROUP> : Para agrupar conjuntos de columnas.
Ambas etiquetas tienen soporte a partir de HTML 4, por lo tanto están disponibles en todos los navegadores modernos
más comúnmente utilizados.
Como se puede ver, se tiene una tabla de 3 filas. Se ha marcado un grupo de dos filas con TBODY, justamente las dos
últimas. Para esas filas hemos definido, mediante los atributos de la etiqueta TBODY, un centrado, un color de fondo y
una alineación vertical superior. Los atributos que podríamos utilizar con la etiqueta TBODY son un grupo reducido de
los que podríamos asignar a etiquetas TR o TD: align, bgcolor y valing, class, id, además de manejadores de eventos.
Podemos ver cómo se mostraría esta tabla:
1 2 3
4 Esta es una 6
celda
5
7 8 9
De manera similar, se pueden asignar atributos de hojas de estilo en cascada, utilizando el atributo HTML style, como
se puede ver a continuación:
<table cellspacing="2" cellpadding="2" border="2">
<tbody style="font-size:150%;">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
</tbody>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
</table>
Aunque hay que decir que el grupo de atributos de hojas de estilo que son interpretados, cuando los colocamos en
TBODY, es bastante reducido. Internet Explorer da mejor variedad de atributos aceptados.
Como se puede ver, COLGROUP se utiliza después de abrir la tabla y antes de empezar a meter los contenidos de filas
y celdas.
El atributo span indica el número de columnas que se desean agrupar, empezando por la primera. En nuestro ejemplo se
han agrupado las dos primeras columnas. Los otros atributos que podemos colocar en COLGROUP son los siguientes:
align, id, class, style, valign, width y manejadores de eventos Javascript. Aunque Internet Explorer acepta otros
atributos como bgcolor.
El ejemplo de colgroup se muestra a continuación:
1 2 3
4 5 6
7 8 9
Además, también podemos definir estilos CSS para las agrupaciones de columnas, con el atributo style. Aunque igual
que antes, no todos los atributos de hojas de estilo son tenidos en cuenta. Siendo que, en general, Internet Explorer
interpreta un mayor número de atributos CSS.
Cuando queremos definir estilos para cada una de las columnas de la tabla, de manera que toda columna tenga sus
estilos propios, también utilizamos COLGROUP. En este caso no se debe utilizar el atributo span, sino que se debe de
agregar la etiqueta <COL>, una por cada columna a la que pretendemos asignar estilos. De esta manera:
<table cellspacing="2" cellpadding="2" border="2">
<colgroup>
<col>
<col width=100>
<col style="width: 200px;">
</colgroup>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
</table>
En nuestra tabla, que tenía tres columnas, hemos colocado la etiqueta <COLGROUP> y dentro de esta, tres etiquetas
<COL>, cada una con sus estilos propios.
En el primer COL, como se puede ver, no hay ningún atributo. Eso quiere decir que no estoy asignando ningún estilo a
la primera columna de la tabla. El segundo COL ha definido una anchura de 100 pixels. El tercer COL, también hemos
definido una anchura, pero esta vez con CSS mediante el atributo style.
Los atributos CSS que acepta esta etiqueta también son bastante reducidos en Firefox, aunque Internet Explorer acepta
bastantes más.
Para terminar, mostramos la tabla del último ejemplo:
12 3
45 6
78 9
Parte 7:
Formularios en
HTML
El trabajo con formularios es uno de los principales puntos que debemos aprender en
HTML. Hacen posible muchas de las utilidades clave de una web, como el contacto de
los creadores de las páginas con los visitantes, así como ciertos niveles de interacción
básica y avanzada con el usuario.
Hasta ahora hemos visto la forma en la que el HTML gestiona y muestra la información, esencialmente mediante texto,
imágenes y enlaces. Nos queda por ver de qué forma podemos intercambiar información con nuestro visitante. Desde
luego, este nuevo aspecto resulta primordial para gran cantidad de acciones que se pueden llevar a cabo mediante el
Web: Comprar un articulo, rellenar una encuesta, enviar un comentario al autor...
Hemos visto anteriormente que podíamos, mediante los enlaces a direcciones de email, contactar directamente con un
correo electrónico. Sin embargo, esta opción puede resultar en algunos casos poco versátil, si lo que deseamos es que el
navegante nos envíe una información bien precisa y además requiere que el visitante tenga instalado en su ordenador
algún correo electrónico en un programa como Outlook Express. Es por ello que el HTML propone otra solución mucho
más amplia: Los formularios.
Los formularios son esas famosas cajas de texto y botones que podemos encontrar en muchas páginas web. Son muy
utilizados para realizar búsquedas o bien para introducir datos personales por ejemplo en sitios de comercio electrónico.
Los datos que el usuario introduce en estos campos son enviados al correo electrónico del administrador del formulario
o bien a un programa que se encarga de procesarlo automáticamente.
Si lo que queremos es que el formulario sea procesado por un programa, hemos de especificar la dirección del archivo
que contiene dicho programa. La etiqueta quedaría en este caso de la siguiente forma:
<form action="dirección del archivo" ...>
La forma en la que se expresa la localización del archivo que contiene el programa es la misma que la vista para los
enlaces.
method
Este atributo se encarga de especificar la forma en la que el formulario es enviado. Los dos valores posibles que puede
tomar esta atributo son post y get. A efectos prácticos y, salvo que se os diga lo contrario, daremos siempre el valor post.
enctype
Se utiliza para indicar la forma en la que viajará la información que se mande por el formulario. En el caso más
corriente, enviar el formulario por correo electrónico, el valor de este atributo debe de ser "text/plain". Así conseguimos
que se envíe el contenido del formulario como texto plano dentro del email.
Si queremos que el formulario se procese automáticamente por un programa, generalmente no utilizaremos este
atributo, de modo que tome su valor por defecto, es decir, no incluiremos enctype dentro de la etiqueta <form>
Ejemplo de etiqueta <form> completa
Así, para el caso más habitual -el envío del formulario por correo- la etiqueta de creación del formulario tendrá el
siguiente aspecto:
<form action="mailto:[email protected] (o nombre del archivo de proceso)" method="post"
enctype="text/plain">
Entre esta etiqueta y su cierre colocaremos el resto de etiquetas que darán forma a nuestro formulario, las cuales serán
vistas en capítulos siguientes.
Los formularios se utilizan habitualmente para implementar un tipo de contacto con el navegante, que consiste en que éste pueda
mandarnos sus comentarios por correo electrónico a nuestro buzón.
Para este tipo de utilización de los formularios hemos publicado hace tiempo en DesarrolloWeb.com un artículo que puede resultar muy
interesante para los que deseen un referencia extremadamente rápida para construir un formulario que envíe los datos por correo
electrónico al desarrollador de la página.
Para continuar, vamos a ver cómo insertar cada uno de los campos posibles en un formulario HTML, comenzando por
los campos de texto.
Referencia: Si deseas la formación en vídeo, puedes ver este videotutorial sobre formularios, publicado en DesarrolloWeb.com.
El lenguaje HTML nos propone una gran diversidad de alternativas a la hora de crear nuestros formularios, es decir, una
gran variedad de elementos para diferentes propósitos. Estas van desde la clásica caja de texto, hasta la lista de opciones
en un menú desplegable, pasando por las cajas de validación, etc.
En el artículo anterior del Manual de HTML ya vimos cómo iniciar nuestro formulario con la etiqueta <form> y los
distintos atributos que tenemos que utilizar para configurar su funcionamiento.
En el presente artículo veremos las etiquetas que tenemos que utilizar para crear campos de texto, que pueden ser de dos
tipos. Veamos en qué consiste cada una de estas modalidades y como podemos implementarlas en nuestro formulario.
De este modo expresamos nuestro deseo de crear una caja de texto cuyo contenido será llamado "nombre" (por ejemplo,
en el caso de la etiqueta anterior, pero podemos poner distintos nombres a cada uno de los campos de texto que habrán
en los formularios). El aspecto de este tipo de cajas es de sobra conocido, aquí lo podéis ver:
El nombre del elemento del formulario es de gran importancia para poder identificarlo en nuestro programa de
procesamiento o en el mail recibido. Por otra parte, es importante indicar el atributo type, ya que, como veremos,
existen otras modalidades de elementos de formulario que usan esta misma etiqueta INPUT.
El empleo de estas cajas esta fundamentalmente destinado a la toma de datos breves: palabras o conjuntos de palabras
de longitud relativamente corta. Veremos más adelante que existe otra forma de tomar textos más largos a partir de otra
etiqueta.
Además de estos dos atributos, esenciales para el correcto funcionamiento de nuestra etiqueta, existen otra serie de
atributos que pueden resultarnos de utilidad pero que no son imprescindibles:
size
Define el tamaño de la caja de texto, en número de caracteres visibles. Si al escribir el usuario llega al final de la caja, el
texto que escriba a continuación también cabrá dentro del campo pero irá desfilando, a medida que se escribe, haciendo
desaparecer la parte de texto que queda a la izquierda.
maxlength
Indica el tamaño máximo del texto, en número de caracteres, que puede ser escrito en el campo. En caso que el campo
de texto tenga definido el atributo maxlength, el navegador no permitirá escribir más caracteres en ese campo que los
que hayamos indicado.
Nota: Es importante no confundir el atributo maxlength con el atributo size. Mientras size define el tamaño visible de la caja de texto,
maxlength indica el tamaño máximo real del texto que se puede escribir. Podemos tener una caja de texto con un tamaño aparente (size)
que es menor que el tamaño máximo (maxlength). Lo que ocurrirá en este caso es que, al escribir, si sobrepasamos el espacio marcado
por size, el texto ira desfilando dentro de la caja hasta que lleguemos a su tamaño máximo definido por maxlength, momento en el cual
nos será imposible continuar escribiendo.
value
En algunos casos puede resultarnos interesante asignar un valor definido al campo en cuestión. Esto puede ayudar al
usuario a rellenar más rápidamente el formulario o darle alguna idea sobre la naturaleza de datos que se requieren. Este
valor inicial del campo puede ser expresado mediante el atributo value. Veamos su efecto con un ejemplo sencillo:
<input type="text" name="nombre" value="Perico Palotes">
Perico Palotes
Veremos posteriormente que este atributo puede resultar bastante relevante en determinadas situaciones.
Aunque esperamos que haya quedado claro a medida que se lee en estos capítulos sobre formularios, hemos querido remarcarlo para que
quede muy claro: Cuando queremos utilizar, en cualquer situación elementos de formulario, debemos escribirlos siempre entre las
etiquetas <form> y </form>. De lo contrario, los elementos se verán perfectamente en Explorer pero no en Netscape. (Actualizado: en
estos momentos la mayoría de los navegadores pueden interpretar bien los campos de texto sin que estén en una etiqueta FORM, sin
embargo, la etiqueta FORM sigue siendo imprescindible, porque indica qué se desea hacer con los campos de texto, como el action a
realizar, y engloba qué elementos pertenecen a qué formularios)
Dicho de otra forma, en Netscape no se visualizan los elementos de formulario a no ser que esten colocados entre las correspondientes
etiquetas de inicio y fin de formulario.
Es por ello que para mostrar un campo de texto no vale con poner la etiqueta <input>, sino que habrá que ponerla dentro de un
formulario. Así:
<form>
<input type="text" name="nombre" value="Perico Palotes">
</form>
En este caso, podéis comprobar que, al escribir dentro del campo, en lugar de texto veréis asteriscos.
Estos campos son ideales para la introducción de datos confidenciales, principalmente códigos de acceso o claves. Se ve
en funcionamiento a continuación.
El resultado es el siguiente:
Asimismo, es posible predefinir el contenido del campo. Para ello, no usaremos el atributo value, sino que escribiremos
dentro de la etiqueta el contenido que deseamos atribuirle. Veámoslo:
<textarea name="comentario" rows="10" cols="40">Escribe tu comentario....</textarea>
Escribe tu comentario....
Como se podrá imaginar, los campos de texto son de vital importancia para los formularios, pero no son los únicos tipos
de elementos que podemos colocar dentro de éstos. En el siguiente artículo veremos otros tipos de elementos para
formularios.
En el Manual de HTML de DesarrolloWeb.com ya hemos publicado artículos sobre la creación de formularios y sobre
los campos de texto en todas sus modalidades. Seguramente hayamos percibido que los textos son un manera muy
practica de hacernos llegar la información del navegante. No obstante, en muchos casos, permitir al usuario que escriba
cualquier texto permite demasiada libertad y puede que la información que éste escriba no sea la que nosotros estamos
necesitando. Por otra parte, para determinados casos, los textos libres son difícilmente adaptables a programás que
puedan procesarlos debidamente. Es por ello que, en determinados casos, puede resultar más efectivo proponer una
elección al navegante a partir del planteamiento de una serie de opciones disponibles y definidas por nosotros.
Por ejemplo, pensemos que queremos que el usuario indique su país de residencia. En ese caso podríamos ofrecer una
lista de países para que seleccione el que sea. Este mismo caso se puede aplicar a gran variedad de informaciones, como
el tipo de tarjeta de crédito para un pago, la puntuación que da a un recurso, si quiere recibir o no un boletín de
novedades, etc...
Este tipo de opciones predefinidas por nosotros pueden ser expresadas por medio de diferentes campos de formulario.
Veamos a continuación cuales son:
El resultado es:
Primavera
Esta estructura puede verse modificada principalmente a partir de otros dos atributos:
size
Indica el número de valores mostrados a la vez en la lista. Lo típico es que no se incluya ningún valor en el atributo
size, en ese caso tendremos un campo de opciones desplegable, pero si indicamos size aparecerá un campo donde
veremos las opciones definidas por size y el resto podrán ser vistos por medio de la barra lateral de desplazamiento.
multiple
Permite la selección de más varios elementos de la lista. La elección de más de un elemento se hace como con el
explorador de Windows, a partir de las teclas ctrl o mayúsculas (la flecha hacia arriba, también llamada shift). Este
atributo se expresa sin valor alguno, es decir, no se utiliza con el igual: simplemente se pone para conseguir el efecto, o
no se pone si queremos una lista desplegable común.
No recomendamos especialmente la puesta en practica de esta opción ya que el manejo de las teclas ctrl o shift para elegir varias
opciones puede ser desconocido para el navegante. Evidentemente, siempre cabe la posibilidad de explicarle como funciona aunque no
dejara de ser una complicación para más para el visitante.
Veamos cual es el efecto producido por estos dos atributos cambiando la línea:
<select name="estacion">
por:
<select name="estacion" size="3" multiple>
Primavera
Verano
Otoño
La etiqueta <option> puede asimismo ser matizada por medio de otros atributos
selected
Del mismo modo que multiple, este atributo no toma ningún valor sino que simplemente indica que la opción que lo
por:
<option selected>Otoño</option>
El resultado será:
Otoño
value
Define el valor de la opción que será enviado al programa o correo electrónico si el usuario elige esa opción. Este
atributo puede resultar muy útil si el formulario es enviado a un programa para su procesamiento, puesto que a cada
opción se le puede asociar un número o letra, lo cual es más fácilmente manipulable que una palabra o texto. podríamos
así escribir líneas del tipo:
<option value="1">Primavera</option>
De este modo, si el usuario elige primavera, lo que le llegara al programa (o correo) es una variable llamada estacion
que tendrá com valor 1. En el correo electrónico recibiríamos:
estacion=1
Nota: Hay que fijarse que la etiqueta <input type="radio"> sólo coloca la casilla pinchable en la página. Los textos que aparecen al lado,
así como los saltos de línea los colocamos con el correspondiente texto en el código de la página y las etiquetas HTML que necesitemos.
El resultado es el siguiente:
Primavera
Verano
Otoño
Invierno
Como puede verse, a cada una de las opciones se le atribuye una etiqueta input dentro de la cual asignamos el mismo
nombre (name) para todas las opciones y un valor (value) distinto. Si el usuario elige supuestamente Otoño, recibiremos
en nuestro correo una línea tal que esta:
estacion=3
Cabe señalar que es posible preseleccionar por defecto una de las opciones. Esto puede ser conseguido por medio del
atributo checked:
<input type="radio" name="estacion" value="2" checked>Verano
Veamos el efecto:
Primavera
Verano
Otoño
Invierno
El efecto:
Me gusta la paella
La única diferencia fundamental es el valor adoptado por el atributo type.
Del mismo modo que para los botones de radio, podemos activar la caja por medio del atributo checked.
El tipo de información que llegara a nuestro correo (o al programa) será del tipo:
paella=on (u off dependiendo si ha sido activada o no)
Siguiendo con la explicación de todo lo relativo a formularios que estamos ofreciendo en el Manual de HTML, ha
llegado el momento de explicar cómo podemos hacer un botón para provocar el envío del formulario, entre otras cosas.
Como podremos imaginarnos, en formularios no solamente habrá elementos o campos donde solicitar información del
usuario, sino también habrá que implementar otra serie de funciones. Concretamente, han de permitirnos su envío
mediante un botón. También puede resultar práctico poder proponer un botón de borrado o bien acompañar el
formulario de datos ocultos que puedan ayudarnos en su procesamiento.
En este capitulo, para terminar la saga de formularios, daremos a conocer los medios de instalar todas estas funciones y
acabaremos mostrando un ejemplo de formulario completo.
Enviar
Como puede verse, tan solo hemos de especificar que se trata de un botón de envío (type="submit") y hemos de definir
el mensaje que queremos que aparezca escrito en el botón por medio del atributo value. Este tipo de campos INPUT,
para envío de formularios, a menudo se conocen simplemente como "botones de submit".
Nota: Al enviar el formulario se creará un mensaje con tu programa de correo, que se debe enviar con ese propio programa de correo,
para que llegue al destinatario. Este es el comportamiento típico de los formularios que se programan con HTML, que requiere que el
usuario tenga un programa de correo instalado y configurado para que funcione.
Una duda típica es cómo realizar el formulario para que se envíe directamente desde la página web, sin que el usuario deba tener un
programa de correo, sino que se pulse el botón de enviar y se genere y envíe el mensaje automáticamente. Para ello es necesario realizar
algo de programación, aparte del propio formulario en HTML, en un lenguaje avanzado, que sea del lado del servidor, como PHP, ASP...
En DesarrolloWeb.com tienes todo lo que necesitas para aprender a conseguir el envío automático de correos, con explicaciones
detalladas para obtener los resultados por varias vías. Te recomendamos leer el manual Envío de formularios avanzado.
A diferencia del botón de envío, indispensable en cualquier formulario, el botón de borrado resulta meramente optativo
y no es utilizado frecuentemente. Hay que tener cuidado de no ponerlo muy cerca del botón de envío y de distinguir
claramente el uno del otro, para que ningún usuario borre el contenido del formulario que acaba de rellenar por error.
Esta etiqueta, incluida dentro de nuestro formulario, enviara un dato adicional al correo o programa encargado de la
gestión del formulario. podríamos, a partir de este dato, dar a conocer al programa el origen del formulario o algún tipo
de acción a llevar a cabo (una redirección por ejemplo).
El uso más frecuente de un botón es en la programación en el cliente. Utilizando lenguajes como Javascript podemos
definir acciones a tomar cuando un visitante pulse el botón de una página web.
creación de un formulario que consulta el grado de satisfacción de los usuarios de una línea de autobuses ficticia. El
formulario está construido para que envíe los datos por correo electrónico a un buzón determinado.
Vemos el formulario en esta página. Vosotros tratar de construirlo para ver si habéis entendido bien los temas sobre
formularios.
Nombre
@
Email
Población
Sexo
Hombre
Mujer
Enviar formulario
Borrar todo
El formulario se puede ver también en una página a parte. Recordad que podéis ver el código fuente de cualquier página
web utilizando los menús de vuestro navegador, así podréis revisar el código que hemos utilizado para construir el
formulario.
A continuación también mostraremos el código fuente de este formulario, que es importante que todos le echemos un
vistazo, aunque sea rápidamente.
<form action="mailto:[email protected]" method="post" enctype="text/plain">
Nombre <input type="text" name="nombre" size="30" maxlength="100">
<br>
Email <input type="text" name="email" size="25" maxlength="100" value="@">
<br>
Población <input type="text" name="poblacion" size="20" maxlength="60">
<br>
Sexo
<br>
<input type="radio" name="sexo" value="Varon" checked> Hombre
<br>
<input type="radio" name="sexo" value="Hembra"> Mujer
<br>
<br>
Frecuencia de los viajes
<br>
<select name="utilizacion">
<option value="1">Varias veces al dia
<option value="2">Una vez al dia
<option value="3">Varias veces a la semana
<option value="4">varias veces al mes
</select>
<br>
<br>
Comentarios sobre su satisfacción personal
<br>
<textarea cols="30" rows="7" name="comentarios"></textarea>
<br>
<br>
<input type="checkbox" name="recibir_info" checked>
Deseo recibir notificación de las novedades en las líneas de autobuses.
<br>
<br>
<input type="submit" value="Enviar formulario">
<br>
<br>
<input type="Reset" value="Borrar todo">
</form>
Para acabar, vamos a ver lo que recibirían por correo electrónico en la empresa de autobuses cuando un usuario
cualquiera rellenase este formulario y pulsase sobre el botón de envio.
nombre=Federico Mijo Silvestre
[email protected]
poblacion=Astorga, León
sexo=Varon
utilizacion=2
comentarios=No creo que sea una buena linea. Poner más autobuses.
recibir_info=on
Referencias:
Hemos publicado un taller de HTML con un formulario para valorar la página web. Muy sencillo y práctico. Puede ser interesante para
afianzar estos conocimientos: Taller con formularios.
Además, también te recomendamos ver el videotutorial sobre formularios HTML, donde repasamos todo lo visto hasta el momento sobre
la creación de formularios en páginas web.
En el Manual de HTML de DesarrolloWeb.com ya hemos visto varios artículos para la creación de formularios en
HTML. Pero nos quedaba por ver un par de etiquetas, que no siendo imprescindibles para la realización de formularios,
sí nos pueden ayudar a estructurarlos, mejorando la interfaz de usuario de nuestras páginas.
Los atributos FIELDSET y LEGEND se utilizan en conjunto y sirven respectivamente para definir y etiquetar grupos
lógicos de elementos de formularios. Realmente no afectan a la operativa del formulario, pero sirven para agrupar
elementos en diferentes áreas, de modo que se clarifique la entrada de datos del usuario. Al formar varios grupos de
elementos se puede crear una estructura mucho más fácil de asimilar por el usuario, sobre todo si se trata de formularios
que tengan muchos elementos.
Simplemente creará un cuadrado que agrupará los dos elementos del formulario incluidos dentro del FIELDSET.
Podemos ver el resultado en una página aparte.
para nombrar con una leyenda cada uno de los tres bloques.
Como vemos, hemos creado un LABEL y hemos colocado en el atributo FOR el nombre del campo de formulario que
estamos asociando a ese texto. El resultado es que el texto colocado dentro de LABEL es un elemento interactivo, al
que podemos hacer clic y sería como si hiciésemos clic en el propio campo asociado al LABEL.
Para acabar, comentamos que estas etiquetas se hallan relatadas en otro artículo de DesarrolloWeb.com, con
explicaciones escritas por otro autor, que podrían complementar y ampliar la presente información. Si te interesa,
accede al artículo Las nuevas etiquetas de HTML 4.0 (2).
Parte 8:
Frames o marcos
en HTML
Los frames en HTML, o marcos si preferimos el término en español, son una manera de
mantener fijas algunas partes de la página, mientras se navega por las otras. Fueron en
el pasado un componente habitual de las páginas aunque hoy en día se han quedado en
desuso por diversas razones. Veremos también un caso especial de frames, que se crea
con la etiqueta IFRAME, que es importante conocer porque sí se usa bastante
actualmente.
Una de las más modernas características de HTML son los frames, que se añadieron, tanto en Netscape Navigator como
en Internet Explorer, a partir de sus versiónes 2.0. Los frames -que significan en castellano marcos- son una manera de
partir la página en distintos espacios independientes los unos de los otros, de modo que en cada espacio se coloca una
página distinta que se codifica en un fichero HTML distinto.
Al principio se crearon como etiquetas propietarias del navegador Netscape y rápidamente la potencia del recurso hizo
que el uso de frames se extendiera por toda la web. Poco tardaría Internet Explorer en incluirlos, para que no se le
escapase una novedad tan popular de su competidor. Finalmente, como respuesta a la popularidad entre los
desarrolladores de los frames, el estándar HTML 4.0 incluyó estas etiquetas dentro de las permitidas.
Los frames, como decíamos, nos permiten partir la ventana del navegador en diferentes áreas. Cada una de estas áreas
son independientes y han de ser codificadas con archivos HTML también independientes. Como resultado, cada frame o
marco contiene las propiedades específicas que le indiquemos en el código HTML a presentar en ese espacio. Así
mismo, y dado que cada marco es independiente, tendrán sus propias barras de desplazamiento, horizontales y
verticales, por separado.
Existen en la web muchas páginas que contienen frames y seguro que todos hemos tenido la ocasión de conocer
algunas. Se suelen utilizar para colocar en una parte de la ventana una barra de navegación, que generalmente se
encuentra fija y permite el acceso a cualquier zona de la página web. Una de las principales ventajas de la programación
con frames viene derivada de la independencia de los distintos frames, pues podemos navegar por los contenidos de
nuestro web con la barra de navegación siempre visible, y sin que se tenga que recargar en cada una de las páginas que
vamos visitando.
Un ejemplo de las áreas que se pueden construir en una construcción de frames se puede ver en las imágenes siguientes.
Para el que no haya tenido oportunidad de conocer los frames y su funcionamiento, ofrecemos uno de los ejemplos del
tema de frames que simula la página de una carnicería.
Para las personas que desean aprender sobre frames os indicamos leer los siguientes artículos del Manual de HTML y el
videotutorial sobre el desarrollo con frames.
Las páginas web que están hechas con frames se componen de una declaración de los marcos y tantas páginas en
formato HTML corriente como distintas divisiones hemos definido. La declaración o definición de frames es la única
página que realmente debemos aprender, puesto que las páginas que se van a visualizar en cada uno de los cuadros son
ficheros HTML de los que venimos aprendiendo anteriormente en este manual.
Dicha definición está compuesta por etiquetas <FRAMESET> y <FRAME>, con las que se indicamos la disposición de
todos los cuadros. La etiqueta <FRAMESET> indica las particiones de la ventana del navegador y la etiqueta
<FRAME> indica cada uno de los cuadros donde colocaremos una página independiente.
Las particiones que se pueden hacer con un <FRAMESET> son en filas o columnas. Por ejemplo, podríamos indicar
que deseamos hacer una división de la página en dos filas, o dos columnas, tres filas, etc. Para indicar tanto la forma de
partir la ventana -en filas o columnas- como el número de particiones que pretendemos hacer, se ha de utilizar el
atributo COLS o ROWS. El primero sirve para indicar una partición en columnas y el segundo para una partición en
filas.
Nota: Es importante indicar que no se puede hacer una partición en filas y columnas a la vez, sino que debemos escoger en partir la
ventana en una de las dos disposiciones. Más adelante indicaremos cómo partir la ventana tanto en filas como en columnas, que se hace
con la anidación de frames.
En el atributo COLS o ROWS -sólo podemos elegir uno de los dos- colocamos entre comillas el número de particiones
que deseamos realizar, indicando de paso el tamaño que va a asignarse a cada una. Un valor típico de estos atributos
sería el siguiente:
cols="20%,80%"
Indica que se deben colocar dos columnas, la de la izquierda tendría un 20% del espacio total de la ventana y la de la
derecha un 80%.
rows="15%,60%,25%"
Así indicamos que deseamos tres filas, la de arriba con un 15% del espacio total, la del medio con un espacio
correspondiente al 60% del total y la de abajo con un 25%. En total suman el 100% del espacio de la ventana.
Además del porcentaje para indicar el espacio de cada una de las casillas, también podemos indicarlo en pixeles. De
esta manera.
cols="200,600"
Para indicar que la columna de la izquierda debe tener 200 pixels de ancho y la de la derecha 600. Esto está bien si
nuestra ventana tiene 800 pixels de ancho, pero esto no tiene porque ser así en todos los monitores de los usuarios, por
lo que este modo de expresar los marcos es importante que se indique de la siguiente manera.
cols="200,*"
Así indicamos que la primera columna ha de medir 200 pixels y que el resto del espacio disponible -que será mayor o
menor dependiendo de la definición de la pantalla del usuario- se le asignará a segunda columna.
En la práctica podemos mezclar todos estos métodos para definir los marcos de la manera que deseemos, con pocentaje,
con pixels o con el comodín (*). No importa cómo se definan, la única recomendación es que uno de los valores que
indiquemos sea un asterisco, para que el área correspondiente a dicho asterisco o comodín sea más o menos grande
dependiendo del espacio que tenga la ventana de nuestro navegador. Otros métodos de definir filas y columnas,
atendiendo a este consejo, serían los siguientes:
rows="100,*,12%"
Definimos tres filas, la primera con 100 pixels de ancho, la segunda con el espacio que sobre de las otras dos, y la
tercera con un 12% del espacio total.
cols="10%,50%,120,*"
Estamos indicando cuatro columnas. La primera del 10% del espacio de la ventana, la segunda con la mitad justa de la
ventana, la tercera con un espacio de 120 pixels y la última con la cantidad de espacio que sobre al asignar espacio a las
demás particiones.
Una vez hemos indicado el número de filas o columnas y el espacio reservado a cada una con la etiqueta
<FRAMESET>, debemos especificar con la etiqueta <FRAME> la procedencia de cada uno de los frames en los que
hemos partido la ventana.
Para ello, disponemos del atributo SRC, que se ha de definir para cada una de las filas o columnas. De esta manera.
<FRAME src="marco1.html">
Así queda indicado que el frame que estamos definiendo debe mostrar la página marco1.html en su interior.
Hasta ahora hemos visto bastante información teórica, la suficiente para saber construir nuestras propias estructuras de
frames, pero seguro que para aclarar las cosas vendrá bien hacer alguna práctica. Así que en el próximo artículo
Para ilustrar todo lo que venimos explicando podemos ver el ejemplo sobre cómo se crearía la definición de frames de
la imagen que podemos ver a continuación.
<html>
<head>
<title>Definición de Frames</title>
</head>
<frameset rows="15%,*,75">
<frame src="pagina1.html">
<frame src="pagina2.html">
<frame src="pagina3.html">
</frameset>
</html>
Las páginas que mostraremos en cada marco son documentos HTML iguales a los que venimos creando anteriormente.
Podemos colocar cualquier elemento HTML de los estudiados en este manual, como etiquetas de párrafo, imágenes,
colores de fondo, etc.
Cada documento, como ya hemos indicado, se escribe por separado en su propio archivo HTML. Para el ejemplo del
capítulo anterior podemos definir los archivos HTML de la siguiente manera.
pagina1.html
Es la página que contiene el titular de la web. Simplemente se trata de una etiqueta <H1> de titular. La página tiene su
propio título, con la etiqueta <TITLE>, que no se podrá visualizar por ningún sitio a no ser que se muestre esta página
sin los frames, ya que las páginas dentro de los marcos heredan el título de la definición de los frames.
<html>
<head>
<title>Titulo Carnicería Pepe</title>
</head>
<body bgcolor="#DECC09">
<h1 align=center>Carnicería PEPE</h1>
</body>
</html>
pagina2.html
Es la página que se presentará en el área principal de la definición de frames, es decir, la página que tiene más espacio
para visualizarse y donde pondremos los contenidos de la web. En este caso muestra un mensaje de bienvenida a la
web, que hará las veces de portada.
<html>
<head>
<title>Portada de Carnicería PEPE</title>
</head>
</body>
</html>
Podemos ver cómo queda la página de frames con estos contenidos, que simulan la página de una carnicería.
La única particularidad destacable en el ejemplo del capítulo anterior, y en el manejo de frames en general, se trata de
que cada uno de los enlaces que colocamos en las páginas actualizan el frame donde está colocado este enlace. Por
ejemplo, si tenemos enlaces en la parte inferior de la ventana, en el espacio correspondiente al tercer marco,
actualizarán los contenidos del tercer frame, que es donde están situados los enlaces.
Este efecto que comentamos se puede observar en el ejemplo de la página de la carnicería, tal como quedaría al incluir
los códigos de las distintas páginas.
Lo lógico es que al pulsar sobre un enlace de la barra de navegación actualicemos el frame principal, que es donde
habíamos planeado colocar los contenidos, en lugar del frame donde colocamos la barra de navegación, que debería
mantenerse fija. Para conseguir este efecto debemos hacer un par de cosas:
1. Darle un nombre al frame que deseamos actualizar
Dicho nombre se indica en la etiqueta <FRAME> de la definición de frames. Para ello utilizamos el atributo
name, igualado al nombre que le queremos dar a dicho marco.
2. Dirigir los enlaces hacia ese frame
Para ello debemos colocar en el atributo target de los enlaces -etiqueta <A>- el nombre del frame que
deseamos actualizar al pulsar el enlace.
Después de darle un nombre al frame principal, nuestra declaración de frames quedaría de la siguiente manera.
<frameset rows="15%,*,75">
<frame src="pagina1.html">
<frame src="pagina2.html" name="principal">
<frame src="pagina3.html">
</frameset>
Además, deberíamos colocar el atributo target a los enlaces, tal como sigue.
<a href="pagina2.html" target="principal">Portada</a> |
<a href="productos.html" target="principal">Productos</a> |
<a href="contacto.html" target="principal">Contacto</a>
Una vez realizados este par de cambios podemos ver como los enlaces de la barra de navegación sí actualizan la página
que deben.
Para crear estructuras de marcos en las que se mezclen las filas y las columnas debemos anidar etiquetas
<FRAMESET>. Empezando por la partición de frames más general, debemos colocar dentro las particiones de frames
más pequeñas. La manera de indicar esto se puede ver fácilmente con un ejemplo.
En la imagen se puede ver el resultado final acompañada de la representación sobre la manera de definirlos. En primer
lugar definimos una estructura de frames en dos columnas y dentro de la primera columna colocamos otra parcición de
frames en dos filas. El código necesario es el siguiente.
<frameset cols="200,*">
<frameset rows="170,*">
<frame src="pagina1.html">
<frame src="pagina2.html">
</frameset>
<frame src="pagina3.html">
</frameset>
Nota: hemos colocado un margen en cada una de las líneas de esta definición de frames para conseguir un código más entendible
visualmente. Estos márgenes no son en absoluto necesarios, simplemente nos sirven para ver en qué nivel de anidación nos encontramos.
El ejemplo anterior se puede complicar un poco más si incluimos más particiones. Vamos a ver algo un poco más
En la imagen se observa que el primer frameset a definir se compone de dos filas. Posteriormente, dentro de la segunda
fila del primer frameset, tenemos otra partición en dos columnas, dentro de las que colocamos un tercer nivel de
frameset con una definción en filas en los dos casos. El código se puede ver a continuación.
<frameset rows="60,*">
<frame src="pagina1.html">
<frameset cols="200,*">
<frameset rows="*,150">
<frame src="pagina2.html">
<frame src="pagina3.html">
</frameset>
<frameset rows="*,60">
<frame src="pagina4.html">
<frame src="pagina5.html">
</frameset>
</frameset>
</frameset>
Aparte de la creación de los marcos propiamente dicha, existen muchos atributos con los que configurar su apariencia.
Para ello, tanto la etiqueta <frameset> como <frame> admiten diversos atributos que permiten especificar la forma de
elementos como los bordes de los frames, el margen, la existencia o no de barras de desplazamiento, etc.
Consejo: hay que tener cuidado si eliminamos los bordes de los frames, puesto que la página web puede tener dimensiones distintas
dependiendo de la definición de pantalla del visitante. Si el espacio de la ventana se ve reducido, podría verse reducido el espacio para el
frame y puede que no quepan los elementos que antes si que cabían y si hemos eliminado las barras de desplazamiento puede que el
visitante no pueda ver todo el contenido del marco.
Este mismo consejo se puede aplicar al redimensionamiento de frames, que veremos en el siguiente atributo. Si hacemos que los marcos
no sean redimensionables probablemente tengamos una declaración de frames demasiado rígida, que puede verse mal en algún tipo de
pantalla.
noresize
Este atributo no tiene valores, simplemente se pone o no se pone. En caso de que esté presente indica que el
frame no se puede redimensionar. Como hemos podido ver, al colocar el ratón sobre el borde de los marcos sale
un cursor que nos señala que podemos mover dicho borde y redimensionar así los frames. Por defecto, si no
colocamos nada, los marcos si se pueden redimensionar.
frameborder="yes|no|0"
Este atributo permite controlar la aparición de los bordes de los frames. Con este atributo igualado a "0" o "no" los
bordes se eliminan. Sin embargo, quedan los feos márgenes en el borde. Por lo que hemos podido comprobar funciona
mejor en Netscape que en Internet Explorer. De todos modos, tenemos una nota un poco más adelante para explicar los
frames sin bordes.
Nota: los atributos de frames no funcionan siempre bien en todos los navegadores. Es recomendable que hagamos un test sobre lo que
estamos diseñando en varios navegadores para comprobar que nuestros frames se ven bien en todas las plataformas.
bordercolor="#rrggbb"
Permite especicicar el color del borde del marco.
Referencia: Tenemos un taller de HTML en el que explicamos como realizar un frame sin bordes que se vea bien en los navegadores
más habituales.
El diseño con frames es un asunto bastante controvertido, ya que distintos diseñadores tendrán unas u otras opiniones.
Referencia: Si deseas saber qué son los frames y cómo crearlos consulta los capítulos de Frames de nuestro manual de HTML.
En mi caso, pienso que es preferible no utilizarlos, aunque eso depende del tipo de sitio web que estés construyendo, ya
que en algunos casos sí que sería muy adecuado su uso.
Voy a colocar unas ventajas e inconvenientes del uso de marcos (frames). Siempre es a mi entender, otros pueden tener
otras opiniones.
• La promoción de la página sería, en principio, más limitada. Esto es debido a que sólo se debería promocionar
la portada, pues si se promocionan páginas interiores, podría darse en caso de que los visitantes entrasen por
ellas en lugar de por la portada, creandose el problema descrito en el punto anterior.
• A mucha gente les disgustan pues no se sienten libres en la navegación, pues entienden que esas partes fijas
están limitando su movilidad por la web. Este efecto se hace más patente si la página con frames tiene enlaces
a otras páginas web fuera del sitio y, al pulsar un enlace, se muestra la página nueva con los marcos de la
página que tiene frames.
• Algunos navegadores no los soportan. Esto no es muy habitual, pero si estamos haciendo una página que
queramos que sea totalmente accesible deberíamos considerarlo importante.
• Los bookmarks o favoritos no funcionan correctamente en muchos casos. Si queremos incluir un favorito a una
página de un frame que no sea la portada podemos encontrar problemas.
• Puede que el botón de atrás del navegador no se comporte como deseamos.
• Si quieres actualizar más de un frame con la pulsación de un enlace deberás utilizar Javascript. Además los
scripts se pueden complicar bastante cuando se tienen que comunicar varios frames entre si.
8.8.3.- Conclusión
El trabajo con frames puede ser más o menos indicado dependiendo de las características de la página a desarrollar, es
tu tarea saber si en tu caso debes utilizarlos o no.
Los frames (frame en inglés significa marco) son unas herramientas que han tenido una historia dilatada en el desarrollo
de páginas web con HTML. De ser una etiqueta no estándar ha pasado a ser soportada por todos los navegadores y
formar parte de las especificaciones de HTML. Por otra parte, el frame siempre ha sido una utilidad para hacer páginas
web de uso, cuando menos, controvertido, puesto que tiene ciertas desventajas que muchas veces son más importantes
que la indudable practicidad.
En cualquier caso, en DesarrolloWeb.com ya hemos hablado suficiente sobre la etiqueta Frame y hemos tratado
ampliamente sus ventajas e inconvenientes. En este artículo vamos a hablar de una etiqueta "hermana" que es a día de
hoy mucho más usada, porque resulta más útil y menos problemática que los propios frames. Se trata de iframe, un tag
incluido en las especificaciones de HTML 4.0.
Nota: iframe viene de inline frame, pero en castellano a veces se les llama frames flotantes
Como se ve, los atributos principales de iframe son la página web que se va a mostrar en el espacio y el ancho y alto del
recuadro que reservemos para el frame flotante.
Como se puede ver, la etiqueta iframe tiene su correspondiente etiqueta de cierre. Todo el texto que coloquemos entre la
etiqueta de inicio y la de cierre es texto alternativo, que sólo se mostrará en caso que el navegador del visitante no
acepte la etiqueta iframe.
name: Para especificar el nombre del frame, que podemos utilizar luego para referirnos a él con el target de los links, o
mediante javascript.
id: Para indicar el identificador del iframe, y poder referirnos a él desde javascript.
frameborder: para definir si queremos o no que haya un borde en el frame. Los valores posibles son 0 | 1.
frameborder=0 indicaría que no queremos borde y frameborder=1 que sí.
scrolling: indica si se quiere que aparezcan barras de desplazamiento para ver los contenidos del iframe completo, en el
caso que no aparezcan en el espacio reservado para el iframe. Los valores posibles son: yes | no | auto. El valor "yes" es
para que aparezcan siempre las barras de desplazamiento o barras de scroll, "no" sirve para que no aparezcan nunca y
"auto" es para que aparezcan sólo cuando son necesarias (es el valor por defecto)
marginwidth: Para definir el margen a izquierda y derechar que debe tener la página que va dentro del iframe, con
respecto al borde. Este margen va en pixels, pero prevalecerá el margen que pueda tener asignada la página web que
mostremos en el frame flotante.
marginheight: lo mismo que marginwidth, pero en este caso para el tamaño del margen por la parte de arriba y abajo.
margin: para especificar alineación del frame, igual que se especifica para las imágenes.
style y class: los atributos para definir el aspecto del iframe por medio de hojas de estilo css.
Para acabar, aquí vemos otro ejemplo de iframe con unos cuantos atributos más:
<iframe name=miframeflotante src="colabora.htm" width=400 height=550 frameborder="0" scrolling=yes
marginwidth=2 marginheight=4 align=left>Tu navegador no soporta frames!!</iframe>
Parte 9:
Lo nuevo en HTML
4.0
El estándar HTML 4.0 trajo consigo diversas etiquetas que implementan nuevos
elementos HTML, que podemos incorporar en páginas web.
9.1.1.- Introducción
Cuando Internet empezaba su imparable escalada, la versión del estándar HTML que circulaba era la 2.0, el cuál siguen
soportando los navegadores más actuales. Pero las herramientas de que se disponía no ofrecían un control preciso de los
documentos.
Pero como por aquel entonces el objetivo de Internet estaba fundamentalmente orientado al ámbito académico y no al
de diseño, no se le dio demasiada importancia a la cuestión de lanzar una versión mejorada del estándar hasta que
Netscape, que por aquel entonces era la empresa líder en el sector, tomó la iniciativa de incluir nuevas etiquetas
pensadas para mejorar el aspecto visual de las páginas web.
Por este motivo el IETF (Internet Engineering Task Force) www.ietf.cnri.reston.va.us, o lo que es lo mismo, Grupo de
Trabajo en Ingeniería de Internet, comenzó a elaborar nuevos estándares, los cuales dieron como fruto el HTML 3.0,
que resultó ser demasiado grande para las infraestructuras que había en ese momento, lo cual dificultó su aceptación.
Así pues, una serie de compañías (entre las que estaban Netscape, Sun Microsystems o Microsoft, entre otras), se
unieron para crear lo que hoy se denomina W3C (o lo que es lo mismo, Consorcio para la World Wide Web), que fue
fundado en octubre de 1.994 para conducir a la World Wide Web a su máximo potencial, desarrollando protocolos de
uso común, para normalizar el uso de la web en todo el mundo.
El compromiso del W3C de encaminar a la Web a su máximo potencial incluye promover un alto grado de accesibilidad
para las personas con discapacidades. El grupo de trabajo permanente Web Accessibility Initiative (WAI, Iniciativa para
la Accesibilidad de la Red), en coordinación con organizaciones alrededor de todo el mundo, persigue la accesibilidad
de la Web a través de cinco áreas de trabajo principales: Tecnología, directrices, herramientas, formación, difusión, e
investigación y desarrollo.
De esta iniciativa nació el borrador de HTML 3.2 y en su versión definitiva se introdujeron cambios esenciales para las
posibilidades que empezaban a ofrecer los navegadores, estas inclusiones fueron las tablas, los applets, etc.
En julio de 1.997 nace el borrador del HTML 4.0 y finalmente se aprueba en diciembre de 1.997 este estándar incluía
como mejoras los marcos (frames), las hojas de estilo y la inclusión de scripts en páginas web, entre otras cosas.
Entre el estándar del HTML 3.2 al 4.0 se introdujeron ocho nuevas etiquetas de las cuales daremos una breve
explicación.
Nota: En el HTML 4.0 es imprescindible poner la etiqueta de apertura y la de clausura <Q>.... </Q>.
De esta forma, <COLGROUP> proporciona un formato más agradable a los check boxes sin necesidad de especificar,
propiedades identicas para cada fila.
La etiqueta de inicio < COLGROUP >, requiere otra de cierre.
Con el que obtenemos: (en Nestcape sólo se verá la tabla, no el botón).
Estamos haciendo un repaso de las nuevas etiquetas disponibles en el HTML 4.0. Esta información forma parte de una
serie de artículos que comenzó en Las nuevas etiquetas de HTML 4.0 y se dio continuidad en el la segunda entrega,
bajo el título Las nuevas etiquetas de HTML 4.0 (1).
En el presente texto vamos a hablaros sobre las etiquetas del HTML 4.0 relacionadas con la creación de formularios,
que muchas veces son desconocidas, pero no por ello dejan de ser interesantes. El paseo por esta nueva serie de
etiquetas del HTML viene de la mano de Luciano Moreno y con revisión en 2011 de Miguel Angel Alvarez.
Para aclarar el aspecto de la agrupación de campos con FIELDSET podemos ver el siguiente efecto obtenido al agrupar
un par de elementos de formulario.
Datos personales Nombre:
Edad:
Nota: La única pega es que deberemos introducir el conjunto en una celda de tabla o una capa DIV o cualquier otro tipo de contenedor.
A ese contenedor podemos asignarle un ancho determinado, ya que si no lo hacemos así, el recuadro abarcara todo el ancho de pantalla
disponible. Otra posibilidad es aplicar estilos CSS sobre la etiqueta FIELDSET, en el caso que sepamos usar las Hojas de Estilo en
Cascada.
Ejemplo:
<form action="#" method="post" enctype="text/plain" name="miform">
<table width="200">
<tr>
<td>
<fieldset>
<legend align="left"><font color="red">Caja de texto</font></legend>
pon tu nombre:
<input type="text" size="15">
</fieldset>
</td>
</tr>
<table>
</form>
Referencia: Para los interesados, cabe señalar que en DesarrolloWeb.com existe un artículo que explica estas etiquetas desde otro punto
de vista y con las palabras de otro autor, que se puede leer en el link Etiquetas FIELDSET y LEGEND de formularios.
El texto "Dirección" no está asociado para nada con el campo INPUT. Por ello, al pulsar sobre el texto "Dirección" no
ocurre nada. Esto es así también con otros campos de formulario, como las cajas de checkbox o botones de radio.
<input type="checkbox" name="interesado"> Estoy interesado
Si pulsamos sobre el texto que hay al lado del campo de confirmación "Estoy interesado", ¡no sucede nada! Pero ahora,
con la utilización de la etiqueta LABEL podemos conseguir que, haciendo clic en el texto "Estoy interesado", el control
checkbox cambie de estado.
Ejemplo:
<form action="#" method="post" enctype="text/plain" name="un ejemplo más">
<label>
<input type="checkbox" name="email">
Recibir email
</label>
</form>
Ese ejemplo de LABEL es perfectamente válido y asocia el texto "Recibir email" al campo checkbox de formulario, de
manera que si pulsamos sobre "Recibir email" cambiará el estado del campo checkbox asociado. Sin embargo, en la
etiqueta LABEL podemos utilizar un atributo llamado FOR, que sirve para indicar explícitamente a qué campo de
formulario se está asociando ese texto. Para ello colocamos como valor del atributo FOR el identificador del campo que
estamos asociando a ese LABEL. Esto nos permite una mayor versatilidad a la hora de componer el HTML de nuestra
Si ponemos este ejemplo en marcha, veremos que pulsando en el texto "Hombre" se activa el botón de radio "hombre".
Del mismo modo, si pulsamos sobre el texto "Mujer" se activará la opción del radio button "mujer". Podemos ver ese
pequeño código en marcha a continuación:
Hombre
Mujer
Referencia: Si deseas aprender algo más sobre la etiqueta BUTTON te recomendamos leer el artículo Botones HTML con la etiqueta
BUTTON.
Parte 10:
Sonido en HTML
Veremos diversos modos de colocar un sonido de fondo en páginas web y los tipos de
archivo sonoro que son adecuados para páginas web.
En su corta pero rápida vida, las páginas web han pasado a ser no ya unos meros documentos textuales a los que se
puede acceder por Internet, sino unas verdaderas presentaciones multimedia, que combinan textos con imágenes,
sonidos, videos y elementos de realidad virtual.
Si el primer paso que se dio fue añadir imágenes a las páginas web, tanto estáticas como dinámicas GIF animados), el
siguiente paso consistió en introducir sonidos en las mismas, consiguiendo con ellos el apelativo de multimedia.
Y nos
referiremos en lo sucesivo cuando hablemos de sonido tanto a sonido sintetizado como a verdaderas grabaciones de
audio, de calidad muy elevada.
Ahora bien, aunque los navegadores han sido capaces de interpretar los ficheros de sonido adecuados desde hace ya
algunas versiones, es cierto que la aplicación de sonidos a las páginas web ha estado limitada desde siempre por el
ancho de banda necesario en las conexiones a Internet para poder descargar de forma adecuada dichos ficheros, debido
al tamaño excesivo
de los mismos.
Otra de las limitaciones importantes que encontramos a la hora de incluir ficheros de sonido en nuestras páginas es la
diferentes implementación que hacen de ellos los navegadores web más usados. En efecto, no sólo deberemos usar
etiquetas HTML distintas para Internet Explorer que para Netscape Navigator, sino que a veces la forma misma de
interpretar el sonido puede diferir de uno a otro navegador.
Por último, hay que destacar que a la hora de incluir ficheros de audio en nuestras páginas debemos ser conscientes que
muchos de los formatos usados, sobre todo en grabaciones de calidad, precisan un plugin o programa especial para su
reproducción en el navegador cliente. Y si es cierto que actualmente hay ciertos plugins se han transformado casi en un
estándar en Internet (como el de Real Audio o el de MP3), hay otros posibles que no es normal tener instalados, por lo
que si incluimos ficheros de esos tipos obligaremos al usuario a tener que instalarlos, cosa a la que suele ser reacio.
Vamos a estudiar algunos de los conceptos básicos del sonido digital, aunque sin entrar en demasiadas consideraciones
técnicas. Para aquellos que deseen más información, existen multitud de sitios web que estudian específicamente el
En la que podemos apreciar los diferentes valores de onda que va tomando el sonido.
Todos sabemos que los equipos informáticos no trabajan con datos analógicos, sino que lo hacen con datos digitales,
formados por estados binarios. Por lo tanto, para representar un sonido, desde el punto de vista informático, es preciso
capturarlo en una naturaleza binaria, para lo que se hace un muestreo del mismo, tomando determinados valores de las
ondas y representando dichos valores en formato digital. En cada captura obtendremos un punto de la gráfica anterior.
Pero, ¿Cuántas muestras deberemos tomar?. Este es el verdadero meollo de la cuestión, ya que cuantas más muestras
tomemos, más fiel será el sonido capturado respecto al original, con lo que tendrá más calidad.
Para medir el número de capturas utilizamos la frecuencia del muestreo. Como un Herzio es un ciclo por segundo, la
frecuencia de una captura en Herzios representa el número de capturas que realizamos en un segundo. Así, una
frecuencia de muestreo de 20 KHz (20 Kilo Herzios = 20000 Herzios) realizará 20000 capturas de puntos cada segundo.
El oído humano es captar de captar la asombrosa cantidad de 44000 sonidos por segundo, es decir, 44 KHz. Por lo
tanto, para que un sonido digital tenga suficiente calidad deberá estar basado en una frecuencia similar a ésta. En
general, el valor estándar de captura de sonidos de calidad es de 44,1 Khz (calidad CD), aunque hay capturadoras de
sonido profesionales que llegan hasta los 100 Khz, con objeto de obtener un mayor número de puntos sobre la muestra,
consiguiendo una calidad máxima.
Otro concepto del que habréis oído hablar en torno al sonido digital es el número de bits de una tarjeta de sonido. El
origen de esta magnitud es que, a la hora de capturar el sonido, no sólo es importante el número de muestreos tomados,
sino también la cantidad de información capturada en cada uno de esos muestreos.
Una vez capturado el sonido, para su posterior reproducción en un equipo informático es necesario mandar una serie de
impulsos o posiciones a los altavoces para que creen el sonido a partir de ellos. ¿Cómo?. Bien, produciendo a partir de
esas posiciones movimientos de las membranas de los altavoces, movimientos que transforman de nuevo el sonido
digital en analógico, estado en el que es capaz de viajar por el aire y producir los estímulos necesarios en nuestros
tímpanos, con lo que somos capaces de percibir el sonido original.
Cuantas más posiciones de información se envíen a
los altavoces, mejor calidad tendrá el sonido reproducido.
Con estas bases, se define el número de bits de un sonido digital como el número de impulsos de información
(posiciones) que se envían a los altavoces para su transformación en ondas analógicas.
Las tarjetas de sonido actuales trabajan normalmente con 8 bits de información, con los que se pueden obtener 28=256
posiciones (ceros y unos binarios), aunque hay algunas de mayor calidad que son capaces de trabajar con capturas de 16
bits, que originan 216 = 65536 posiciones de información.
Como dato de referencia, los CDs actuales están basados en sonido grabado a 44 Khz y con un tamaño de muestra de 16
bits. Estas medidas se conocen con el nombre de sonido de calidad CD.
Por último, una vez que el sonido digital llega a nuestros oídos, impactan contra los tímpanos, verdaderas membranas
especializadas que vuelven a transformar las ondas analógicas en impulsos eléctricos, que viajan hasta nuestro cerebro,
donde son interpretados y producen las sensaciones auditivas que todos conocemos.
Una excepción al sonido anteriormente descrito, que podemos denominar "de datos de sonido", es el sonido sintetizado,
en el que no se realiza ninguna captura de ondas sonoras reales, sino que es sonido totalmente digital, generado
directamente en el equipo informático por en reproductor digital conocido con el nombre de MIDI (Music Instrument
Digital Interface). Cuando se desea reproducir una nota musical concreta, se envía un comando MIDI al chip
sintetizador, que se encarga de traducir ese comando en una vibración especial que produce la nota. Mediante este
sistema es posible crear melodías bastante aceptables, aunque nunca tendrán la calidad ni riqueza de una onda sonora
natural capturada.
configurar el nivel de compresión, consiguiéndose calidades similares a las del formato WAVE pero con hasta
10 veces menos tamaño de fichero. Es soportado directamente sólo por Internet Explorer 5.5 y superiores.
• MOD especie de mezcla entre el formato MIDI y el formato WAV, ya que por un lado almacena el sonido en
forma de instrucciones para la tarjeta de sonido, pero por otro puede almacenar también sonidos de
dintrumentos musicales digitalizados, pudiendo ser interpretados por cualquier tarjeta de sonido de 8 bits. No
es un formato estándar de Windows, por lo que su uso es más indicado para sistemas Mac, Amiga o Linux. La
extensión de los ficheros es .mod
• µ-Law Format de calidad similar al formato WAV, es original de las máquinas NeXt, y guarda sus ficheros
con la extensión .au
• Real Audio de calidad media, aunque permite ficheros muy comprimidos, que guarda con extensión .rmp o .ra.
Para su reproducción hace falta tener instalado el plugin Real Audio.
A la hora de trabajar con estos formatos de sonido, deberemos tener en cuenta las limitaciones en su uso, ya que muchos
de ellos no pueden ser reproducidos más que en sistemas operativos concretos, y aún así, con plugins o programas
específicos.
En busca de la compatibilidad, si usamos Windows como sistema operativo conviene usar para ficheros musicales a
reproducir directamente en el navegador los formatos WAV y MIDI, que son los más compatibles.
En cambio, si lo que deseamos es poder brindar a nuestros visitantes la opción de navegar con música ejecutable desde
un programa externo, lo mejor es usar ficheros en formato MP3, ya que en la actualidad la mayoría de los navegantes
tienen instalado en su equipo algún programa reproductor adecuado, pudiendo valer desde software incluido en
Windows, como Windows Media Player, hasta aplicaciones esternas, como Winamp. En este caso, bsata colocar un
enlace normal en nuestras páginas, apuntando al fichero de sonido.
Como ejemplo, si queremos enlazar en nuestra página un fichero MP3, bastaría con escribir:
<a href="sonidos/mp3.mp3" target="_blank"> Pincha aquí para oir la música. </a>
10.3.2.- Resumiendo
cada usuario tendrá configurada su máquina de forma particular, soliendo prevalecer el último software de sonido
instalado, ya que estos programas suelen adueñarse de ciertos tipos de ficheros para su ejecución automática. Entre las
apliaciones posibles de ejecución de ficheros de audio, bien de forma directa o en forma de plugina para los
navegadores, destacan Windos Media Player, Real Player, Winamp, Quick time, etc.
En este artículo vamos a seguir tratando temas relacionados con el sonido en páginas web, viendo la etiqueta
BGSOUND (sonido de fondo) y EMBED (propietaria del antiguo navegador Netscape para embeber distintos
contenidos multimedia). Veremos algunos ejemplos de ambas formas de añadir un sonido, ya sea música o cualquier
otro tipo de sample en una página web.
Antes de empezar, permitirme recordar que estas cosas se tienen que utilizar con cuidado, porque no a todo el mundo le
gusta que las páginas web emitan sonidos durante su visita y tampoco todos los tipos de páginas son adecuadas para
tener una banda sonora.
10.4.2.- BGSOUND
La etiqueta bgsound incorpora sonidos de fondo en una página web, sonidos que se ejecutan automáticamente al
cargarse la página. Es una etiqueta propietaria de Microsoft, por lo que sólo es interpretada por Internet Explorer,
admitiendo los formatos de audio MID y WAV, aunque generalmente también acepta AU y MP3, en versiones actuales
del nevagador o mediante plugins de uso general.
Su sintaxis general, con sus atributos más importantes, es del tipo:
<bgsound src="ruta_fichero" loop="l" balance="b" volume="v"></bgsound>
Donde:
• src="ruta_fichero" fija la ruta en la que se encuentra el fichero de audio a reproducir. La ruta puede ser
relativa a nuestro sistema de carpetas local, absoluta respecto el sistema de carpetas del servidor web o una
URL completa que localice el fichero en Internet.
• loop="l" determina el número de veces (l) que se debe ejecutar el fichero de audio. Si le damos el valor
infinite, el fichero se reproducirá indefinidamente.
• balance="b" determina el balance del sonido entre los dos altavoces del equipo, es decir, la potencia o
intensidad con que se oirá en cada uno de ellos (derecho e izquierdo). Sus valores pueden estar entre -10,000 y
+10,000, correspondiendo el valor 0 a un balance equilibrado entre los dos altavoces.
• volume="v" fija el volumen al que se oirá el sonido, y sus valores pueden variar entre -10,000 (mínimo) y 0
(máximo). No es soportado por los equipos MAC.
Ejemplo:
<bgsound src="../sonidos/wav.wav" balance=0 volume=0></bgsound>
La etiqueta bgsound admite muchas más propiedades (disabled, delay, id, class, controls, etc.). Asímismo, esta etiqueta
es accesible en Internet Explorer mediante código JavaScript, pudiendo modificar en tiempo real sus propiedades
balance, loop, src, y volume, aunque ésta última sólo es accesible en plataformas PC. Para una información completa
sobre todas las propiedades y funcionalidades de este etiqueta podéis visitar la página correspondiente de Microsoft:
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/bgsound.asp
10.4.3.- EMBED
Nestcape Navigator implementó la etiqueta embed para incorporar ficheros de audio. Es ésta una etiqueta de caracter
general, que se usa para la inclusión en las páginas web de todos aquellos archivos ajenos al navegador y que necesitan
por lo tanto la ejecución de algún plugin para su interpretación.
Paradójicamente, Internet Explorer asumió después el uso de esta etiqueta para la inclusión de ficheros de audio, para
llegar a interpretarla mejor y ampliarla con más atributos y propiedades, de tal forma que la ejecución de sonidos con
embed es actualmente más cómoda con este navegador, al incorporar la suite de Microsoft sus propios plugins para la
interpretación de los diferentes formatos de audio. En cambio, si usamos Netscape Navigator nos encontraremos en
muchos casos con un fallo en la reproducción o con un engorroso mensaje de necesidad de algún plugin especial (sobre
todo en las versiones 6x), lo que nos obligará a visitar la página de Netscape para su descarga e instalación, que muchas
veces no será efectiva.
Sea como sea, hay que indicar que esta etiqueta nos va a incluir en la página web un objeto especial, una especie de
consola de mando, denominada Crescendo, que consta de tres botones, similares al de cualquier reproductor de audio:
un botón Play, para comenzar la reproducción (si no está establecida a automática), un botón Pause, para detenerla
momentáneamente y un botón Stop, para detenerla definitivamente (puesta a cero). Esta consola es diferente según el
navegador usado; en el caso de Internet Explorer se muestra la típica consola de Windows Media, cuyo tamaño
podemos configurar, mientras que en Netscape se muestra una consola propia, de tamaño fijo definido.
La sintaxis general de la etiqueta embed es del tipo:
<embed atributo1="valor1" atributo2="valor2"...atributoN="valorN"></embed>
Y en el caso que nos ocupa, de la inclusión de ficheros de audio, los atributos podemos dividirlos en dos tipos:
1. Atributos referentes al sonido:
• src="ruta_fichero", que fija la ruta en la que se encuentra el fichero de audio a reproducir. La ruta puede ser
relativa a nuestro sistema de carpetas local, absoluta respecto el sistema de carpetas del servidor web o una
URL completa que localice le fichero en Internet.
• loop="l/true/false", que determina el número de veces que se debe ejecutar el fichero de audio. Los valores
admitidos son l (número entero de veces), true (infinitas veces) y false (sólo una vez). Sólo es reconocida por
Netscape Navigator.
• playcount="n", que define el número de veces (n) que se debe ejecutar en fichero de audio en el caso de
Internet Explorer.
• type="tipo_fichero", atributo importante, que declara el tipo de fichero de audio que estamos usando, con lo
que el navegador web puede ejecutar el programa o plugin adecuado para la reproducción del fichero. Puede
ser audio/midi, audio/wav, etc.
• autostart="true/false", que determina si el fichero de audio debe empezar a reproducirse por sí sólo al
cargarse la página o si por el contrario será preciso la actuación del usuario (o de código de script) para que
comience la audición.
• pluginspage="URL", que establece, en caso de ser necesario un plugin especial para reproducir el fichero, la
página web donde se puede descragar el mismo. Sólo se activa en el caso de que el navegador no sea capaz de
reproducir el fichero por sí mismo, y es soportada tan sólo por Netscape Navigator.
• name="nombre", que asigna un nombre identificador (debe ser único en la página) a una etiqueta embed
determinada, con objeto de ser accedida luego por lenguajes de script.
• volume="v", que determina el volumen de reproducción del sonido, y que puede variar entre 0 y 100. Es sólo
soportada por Netscape Navigator, que en la consola muestra el valor establecido en su indicador de volumen,
siendo su valor por defecto 50. En en caso de Internet Explorer, el valor del volumen por defecto es 50 en
plataformas PC, y 75 en MAC, siendo necesario actuar sobre el control de volumen de la consola para
modificarlo.
2. Atributos referentes a la consola:
• hidden="true/false", que establece si la consola va a ser visible (false) o no (true). Es éste un aspecto
polémico, ya que si ocultamos la consola obligamos al usuario a oir nuestro fichero, sin posibilidad de
detenerlo ni de modificar el volumen, y si la mostramos estaremos incrustando en la pantalla un objeto que
muchas veces nos romperá el esquema de diseño de nuestra página. Queda determinar su uso en cada caso
concreto.
• width="w", que determina el ancho visible de la consola, en pixels. height="h", que determina el alto visible
de la consola, en pixels. Estos atributos son también muy importantes, caso de que hayamos establecido
hidden= "false", ya que de su valor va a depender la correcta visulazación de la consola. En el caso de Internet
Explorer, que muestra un logo de Windows Media sobre los controles, el tamaño mínimo aceptable debe ser de
140x100 pixels, ya que si no la consola saldrá deformada en exceso o recortada. Y en el caso de Netscape
Navigator, deberemos asignar unos valores de 145x60 pixels, que es lo que ocupa la consola; si ponemos un
tamaño menor, la consola será recortada, perdiendo funcionalidades, y si asignamos un tamaño mayor,
aparecerán espacios grises alrededor de la consola, afeando el aspecto de la página. Si no especificamos estos
atributos y tampoco hidden, nos aparecerán en la página tan sólo los mandos de la consola, sin logotipos
añadidos (Internet Explorer) o la consola recortada (Netscape Navigator).
• align="top/bottom/center/baseline/left/right/
texttop/middle/absmiddle/absbotom", análogo al de la etiqueta IMG, define la alineación horizontal
o vertical de la consola respecto de los elementos de la página.
• hspace="hs", que establece la separación horizontal, vspace="vs", que establece la separación vertical, en
pixels, entre la consola y los elementos de la página que la redean. Análoga a sus equivelentes de la etiqueta
IMG.
Estos son los atributos principales, aunque podemos encontrar referencias de otros admitidos, aunque no suelen ser
operativos en la realidad, ya que no suelen funcionar de forma correcta o son específicos de Nestcape (como toda la
serie de atributos que configuran los controles de la consola.
Ejemplo sin consola:
<embed src="../sonidos/mid.mid" hidden="true" type="audio/midi" autostart="true"></embed>
10.5.2.- La etiqueta A
Si hasta ahora hemos visto cómo podemos incluir en nuestras páginas sonidos de fondo o inicializados por el usuario
mediante interacción con la consola Crescendo, vamos a ver ahora cómo podemos implementar audio mediante el uso
de una de las etiquetas más polivalentes en HTML: la etiqueta A.
Efectivamente, los enlaces son la base del hipertexto, base a su vez de la web, y dentro de sus múltiples usos podemos
considerar el enlace a ficheros de audio. El fichero enlazado puede ser interpretado directamente por el navegador
(porque sea de reproducción directa o se tenga instalado el plugin adecuado) o puede ser ejecutado por un programa
independiente que se abra automáticamente (Winamp, Real Audio, etc.), siendo este el caso más común. Si el usuario
no dispone del programa o plugin adecuado, se le abrirá una ventana de descarga del fichero, con lo que podrá
guardarlo hasta disponer de la aplicación necesaria para su reproducción.
La sintaxis general en este caso será del tipo:
<a href="ruta_fichero">Mensaje</a>
Parte 11:
Otros asuntos
importantes y el
futuro del HTML
Acabamos el manual con esta última parte en la que trataremos algunos asuntos de vital
importancia a la hora de hacer páginas web profesionales. Además veremos el futuro del
HTML, que vendrá con la especificación de HTML 5.
Dentro del marco de nuestro manual de HTML y en líneas generales, podemos decir que el DOCTYPE es una
declaración del estándar usado al construir un documento HTML o XHTML.
Sin embargo, para ser un poco más estrictos, debemos aclarar que el Doctype es propio de documentos XML y SGML,
y por tanto los lenguajes HTML o XHTML son unos simples herederos de algo que ya se venía utilizando.
El estándar que se utiliza en un documento se define utilizando un DTD, que son las siglas de Definition Type
Document, y es una declaración en un metalenguaje para definir otro lenguaje. Dicho de otra manera, el DTD marca las
reglas para la definición de lenguajes como el HTML y en el Doctype estamos indicando simplemente qué DTD se
tiene que utilizar para interpretar el documento HTML que estamos codificando.
Nota: Podemos conocer más lo que es un DTD en el artículo DTD y XML Schema, de la introducción a XML publicada en
DesarrolloWeb.com.
Así, en resumen, podríamos decir que los documentos HTML o XHTML están escritos en un lenguaje y con el Doctype
especificamos este lenguaje y la versión del mismo. Los navegadores leerán esta declaración de doctype e interpretarán
la página atendiendo a las reglas definidas en ese lenguaje.
Nota: Para los navegadores es importante conocer el doctype de la página web, porque de ese modo pueden mostrar la página web con
la versión exacta del lenguaje HTML o XHTML con la que fue construida. Si no tienen una declaración de doctype, interpretarán la
página en lo que se llama "quirks mode", un modo que procura maximizar la compatibilidad de la página con versiones anteriores del
lenguaje HTML. Para más información sobre este enfoque de la explicación del doctype os recomendamos leer el artículo sobre la
declaración doctype en documentos HTML.
De modo que la utilización de la etiqueta es necesaria si deseamos cumplir un estándar de HTML o XHTML, para
especificar qué versión o lenguaje utilizamos y que el browser renderice la página conforme a dicho estándar.
El DOCTYPE tiene una forma como sigue:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
HTML es un lenguaje para modelar páginas web que se utiliza en la Red Global y por tanto, debe permitir crear
documentos escritos en varios idiomas. Bien sabemos que cada idioma tiene determinados caracteres, que forman las
palabras, y algunos de ellos pueden ser hasta específicos de una lengua en concreto, como por ejemplo la letra Eñe "ñ"
del español o la ce cedilla "ç" del catalán, portugués etc. Pero no solo están las letras de cada alfabeto, sino también
algunos signos como el dólar o euro, que también deben poderse representar en una página web.
En el mundo informático en general los archivos de texto pueden escribirse con varios juegos de caracteres distintos.
Esto es algo que la mayoría de las personas no tiene ninguna necesidad de saber, por lo que, cuando guardamos un
archivo de texto en un programa como el Bloc de Notas, nadie nos pregunta qué juego de caracteres estamos utilizando
o queremos usar.
Existen diversos juegos de caracteres, que tienen un conjunto mayor o menor de letras y símbolos, dependiendo para lo
que fueron diseñados. Quizás alguien haya oído hablar, o visto nombrar por alguna parte, el juego de caracteres UTF-8,
que es uno de los más comunes, o el ISO-8859-1, que es el predeterminado en la mayoría de los editores de texto plano,
en Windows. Es decir, aunque no lo sepamos, cuando se guarda un archivo de texto en el ordenador, se codifica
utilizando un juego de caracteres determinado.
Como ya podemos hacernos una idea, el juego de caracteres no es más que un conjunto de letras y símbolos utilizados
en la escritura y ahora ya sabes que cualquier fichero informático que contiene texto plano (archivos .txt o .html por
ejemplo) está codificado con un juego de caracteres. A la hora de crear páginas web en HTML debemos tener en cuenta
esto porque, dependiendo del juego de caracteres utilizado, tendremos disponibles unos u otros símbolos a la hora de
redactar los textos de una página web.
En este artículo, que escribimos para completar el Manual de HTML de DesarrolloWeb.com, pretendemos ofrecerte
todas las claves sobre la elección y definición de los juegos de caracteres en tu página web, de manera que no tengas
nunca el típico problema de no verse correctamente los acentos, letras como la ñ u otros símbolos como los mayores y
menores que.
en caso que no lo hagamos, los navegadores intentarán detectarlo automáticamente. Claro está que, si nosotros mismos
indicamos qué juego de caracteres usamos, será mucho mejor porque el navegador no tendrá que deducirlo por su
cuenta y nos ahorraremos posibles errores de interpretación.
Para informar en el código fuente HTML del conjunto de caracteres que utilizamos se dispone de una etiqueta META,
que se coloca en la cabecera del documento (en el HEAD). Esa etiqueta tiene esta sintaxis.
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
Como vemos, dentro de esta etiqueta se está informando el "charset" (set o conjunto de caracteres) utilizado, que en este
caso sería "ISO-8859-1". Si estamos trabajando con UTF-8 podríamos utilizar esta META para informar sobre ello:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Nota: En HTML indicar el juego de caracteres es meramente opcional, pero en XHTML siempre se debe señalar en el documento
básico. XHTML utiliza por defecto el juego de caracteres UTF-8 y si lo indicamos en la etiqueta META, debemos tener en cuenta el
cierre de esa etiqueta, utilizando un código como este:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
o bien:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
Nota: Estaría bien comentar que estamos obligados a utilizar siempre los caracteres especiales cuando queramos colocar en el texto los
mayores y menores que (">" o "<"), para no confundirlos con las aperturas y cierres de etiquetas.
Mediante las diferentes etiquetas META que podemos colocar en un sitio web disponemos de una variedad amplia de
metainformaciones para comunicar a cualquier sistema que lea nuestra página web. En este artículo vamos a presentar
una etiqueta interesante para definir cómo se tienen que comportar los motores de búsqueda a la hora de visitar nuestra
página y mostrarla entre los resultados de búsquedas realizados en el buscador. Se trata la etiqueta meta de robots.
La etiqueta META de Robots sirve para personalizar el comportamiento de robots de indexación, tipo Google, a la hora
de procesar nuestra página web. Cada una de las páginas de nuestro sitio puede tener una declaración de la etiqueta
meta de robots distinta, con lo que podemos incluso definir de manera independiente cómo deseamos que se trate cada
una de las páginas que componen el web.
En DesarrolloWeb.com hemos publicado anteriormente informaciones acerca de distintas etiquetas META en artículos
dispersos. Además, tenemos un Generador de Etiquetas Meta que también puede resultar de interés para los lectores.
Nota: Conviene recordar que también se puede definir el comportamiento de los robots de búsqueda con nuestro sitio, a la hora por
ejemplo de permitir o no indexar las distintas páginas, mediante el archivo robots.txt.
Como se puede ver, se define el etiqueta META y se acompaña de dos atributos esenciales:
Name: que para la etiqueta META que controla los comportamientos en motores de indexación el valor es "robots".
Content: se indica las directivas que queremos que apliquen los motores de indexación cuando visitan la página.
caché, no se muestre el título y descipción del Open Directory Project y sólo se muestre el título de la página en los
resultados de las búsquedas.
En el momento de escribir este artículo, la especificación de HTML 5 está todavía en fase de borrador, no obstante, en
algunos navegadores, recientemente se están poniendo en marcha, de forma experimental, algunas de las características
que traerá consigo este nuevo estándar. Paralelamente, van surgiendo nuevas informaciones y referencias que explican
qué es HTML 5, lo que hace que nos sintamos cada vez más impacientes por conocer bien las nuevas particularidades
del lenguaje y sobre todo, por comenzarlas a aplicar en nuestros desarrollos.
Este artículo de DesarrolloWeb.com pretender ofrecer algunas pistas para conocer el camino que actualmente está
recorriendo el lenguaje de marcación para convertirse en una realidad, a la vez que explicar un poco cuáles son las
novedades más importantes que están por venir.
especificación del HTML 5 y a ellos debemos muchas de los avances que están por llegar con relación al lenguaje. Es
una organización abierta, donde cualquiera puede participar libre gratuitamente. De hecho, según comentan en su web,
están realmente interesados en las opiniones e intereses de las personas que trabajan con el desarrollo web, para crear
unas especificaciones que respondan a las necesidades reales de los profesionales de Internet.
11.4.4.- Conclusión
Hemos podido comprobar que existen numerosos esfuerzos para la creación de las nuevas especificaciones del HTML
5, llevados a cabo por distintas organizaciones, independientes, pero que trabajan en un frente común.
En el siguiente artículo veremos qué es HTML 5, cuándo estará listo y cuáles son las principales novedades que traerá.
En el artículo anterior publicado en DesarrolloWeb.com, "El futuro del desarrollo web: HTML 5" explicamos las
razones por las que es verdaderamente importante esta nueva versión del lenguaje de marcación HTML y vimos quiénes
son los que están llevando a cabo su especificación.
Ahora convendría explicar qué es exactamente HTML 5, ya que no es simplemente una nueva versión del lenguaje de
marcación HTML, sino una agrupación de diversas especificaciones concernientes a el desarrollo web. Es decir, HTML
5 no se limita sólo a crear nuevas etiquetas, atributos y eliminar aquellas marcas que están en desuso o se utilizan
inadecuadamente, sino que va mucho más allá.
Así pues, HTML 5 es una nueva versión de diversas especificaciones, entre las que se encuentran:
• HTML 4
• XHTML 1
• CSS Nivel 2
• DOM Nivel 2 (DOM = Document Objetc Model)
A la par, HTML 5 pretende proporcionar una plataforma con la que desarrollar aplicaciones web más parecidas a las
aplicaciones de escritorio, donde su ejecución dentro de un navegador no implique falta de recursos o facilidades para
resolver las necesidades reales de los desarrolladores. Para ello se están creando unas APIs que permitan trabajar con
cualquiera de los elementos de la página y realizar acciones que hasta hoy era necesario realizar por medio de
tecnologías accesorias.
Estas API, que tendrán que ser implementadas por los distintos navegadores del mercado, se están documentando con
minuciosidad, para que todos los Browsers, creados por cualquier compañía las soporten tal cual se han diseñado. Esto
se hace con la intención que no ocurra lo que viene sucediendo en el pasado, que cada navegador hace la guerra por su
parte y los que acaban pagándolo son los desarrolladores y a la postre los usuarios, que tienen muchas posibilidades de
acceder a webs que no son compatibles con su navegador preferido.
• Nuevas APIs para interfaz de usuario: temas tan utilizados como el "drag & drop" (arrastrar y soltar) en las
interfaces de usuario de los programas convencionales, serán incorporadas al HTML 5 por medio de un API.
• Fin de las etiquetas de presentación: todas las etiquetas que tienen que ver con la presentación del
documento, es decir, que modifican estilos de la página, serán eliminadas. La responsabilidad de definir el
aspecto de una web correrá a cargo únicamente de CSS.
Como se puede ver, existirán varios API con los que podremos trabajar para el desarrollo de todo tipo de aplicaciones
complejas, que funcionarán online y offline. Quizás se entienda mejor por qué HTML 5 es un proyecto tan ambicioso y
que está llevando tanto tiempo para ser elaborado.
Durante los últimos meses HTML 5 está en boca de todos. Se ha generando gran expectativa alrededor de un sin
número de tecnologías que nos trae el nuevo lenguaje de la web, no solo por parte de los desarrolladores, sino también
de usuarios, debido a que las nuevas especificaciones del HTML mejoran sensiblemente la experiencia de la
navegación.
Con HTML5 se pretende facilitar el desarrollo aplicaciones web, las cuales siguen unos parámetros de compatibilidad,
tanto usuarios de ordenadores de escritorio, como para los que usan o navegan a través desde un dispositivo móvil. En
este artículo vamos a tratar una de esas utilidades que tienen como objetivo mejorar las capacidades de las aplicaciones
web. Se trata de los nuevos elementos para formularios HTML.
Los formularios en HTML5 se extienden para dar respuesta a diversas necesidades que se habían detectado en el pasado
y en concreto con la llegada de los dispositivos de movilidad. Smartphones, tablets, etc. ganan cada día más
aficionados, debido a su practicidad y portabilidad. Hoy estos dispositivos tienen gran potencia, a nivel de hardware y
software, y ante estos nuevos avances la web debía responder con algunas herramientas para mejorar la usabilidad, en
este caso de los formularios HTML clásicos.
Con las nuevas especificaciones del lenguaje de la web, se va mejorando en gran medida la experiencia de navegación e
interacción del usuarios. Con el uso de dispositivos móviles táctiles, no se cuenta con un teclado físico, por eso las
aplicaciones y sistemas operativos implementan lo que se llama el teclado virtual, que le permita al usuario realizar la
entrada de texto de una forma similar a la que se utiliza en los ordenadores de escritorio.
A lo largo de este articulo y algunos otros que vendrán a futuro, estaremos hablando y viendo de primera mano todas las
bondades con las que cuentan los formularios web. En algunos casos se trata de elementos nuevos para los formularios,
en otros casos simplemente se reforman elementos existentes para ofrecer alguna ventaja. En general al desarrollador le
caen como anillo al dedo, pues permiten ahorrarse diversos trabajos que teníamos que realizar con algunas tecnologías
auxiliares como javascipt.
Nota: Con toda esta evolución del lenguaje de la web, se hace un poco mas fácil la escritura de aplicaciones web, pues recordemos que
con HTML5 no solo se crean nuevas etiquetas, sino que también hay una evolución de tecnologías auxiliares como el mismo lenguaje
del cliente Javascript, además del DOM, y una muy importante nueva versión del popular CSS. Todos éstos contribuyen a una nueva
forma de concebir a la web tanto para los que desarrollamos, como para los que exploran la web.
11.6.1.- Los nuevos elementos o etiquetas con las que podemos contar en un
formulario HTML5
En esta sección veremos cuáles son los cinco nuevos elementos que podemos integrar dentro de cualquier formulario
web. Con estos nuevos elementos obtenemos mayor interactividad en nuestras aplicaciones web, realizando tareas que
normalmente se llevaban a cabo con ayuda de códigos Javascript un tanto complejos. Ahora, con las nuevas
especificaciones de HTML5, es posible realizar las mismas tareas, con la inmensa ventaja de usar etiquetas nativas, que
generan campos destinados a algunos trabajos en particular, evitándonos usar elementos clásicos a los que asignar
funcionalidades con programación.
Debemos aclarar que algunos elementos, de los que se han incorporados en las nuevas especificaciones de HTML5,
pueden parecer muy poco practicos. En ocasiones puede que se difícil encontrarle una utilidad dentro de nuestras
aplicaciones web, sin embargo, mencionaremos los cinco nuevos elementos aunque no vayamos a trabajar con todos en
esta serie de artículos sobre los formularios y sus nuevas herramientas y elementos.
Nota: La potencia de estos nuevos elementos radica en su uso simplificado. Algunos oncliso disponen de nuevas API de programación
Javascript, que se integran muy fácilmente en cualquier entorno de desarrollo que utilice tecnología HTML5.
11.6.2.- Algunos detalles sobre los cinco nuevos elementos de los formularios
Como hemos podido ver anteriormente son cinco nuevas etiquetas, con las que podemos contar en los formularios web.
A continuación vamos a hacer mención de cada una, además de los posibles usos que podemos dar en nuestras
aplicaciones web, con el propósito de que todos ustedes se hagan una idea sobre lo que podemos lograr con estas
nuevas etiquetas.
Etiqueta METER:
Esta nueva etiqueta se usa para representar escalas de medidas conocidas, de ahí su nombre: Meter, el cual tiene
relación directa con medida. Se puede emplear para representar escalas de medición conocidas como longitud, masa,
peso, entre otras.
Etiqueta PROGRESS:
Con esta etiqueta no hay que hacer mayor explicación, pues como su nombre lo indica, se usa para crear barras de
progreso. Podemos emplearlas o usarlas en procesos de larga duración, como la descarga de archivos, para indicar a
cualquier usuario de nuestra aplicación el progreso de la operación que se está realizando.
Elemento DATALIST:
Es una extensión que sirve para crear campos de autocompletado. Sirve para especificar una lista de datos u opciones
que se pueden utilizar para sugerir el autocompletado de elementos como INPUT. Por tanto, para utilizar un
DATALIST, tenemos que combinar ese elemento con otros elementos de formulario al que le colocamos atributos
nuevos para asociar el DATALIST para hacer el autocompletado.
Etiqueta KEYGEN:
Usada para generar pares de claves, clave pública y privada. Al enviar el formulario al servidor por cualquiera de los
métodos HTTP, en el cliente se guarda una clave privada la clave pública se empaqueta y se envía al servidor.
Etiqueta o elemento OUTPUT:
Muestra el resultado de un cálculo matemático, su uso básico puede ser tan básico como el de mostrar una simple suma
de dos números.
De momento, dejamos por aquí este listado de nuevos elementos de formulario, citando a los lectores a un próximo
articulo, donde veremos el uso de algunos de estos nuevos elementos.
Cuando uno habla de formularios, se refiere también a la interacción entre los usuarios y una aplicación web, basada en
la introducción de datos de entrada. En muchas ocasiones, la entrada de datos puede convertirse en una tarea tediosa
para los desarrolladores, quienes tienen que buscar que métodos son los mejores para introducir datos de una manera
intuitiva y validarlos por medio de la programación.
Es frecuente ver, en aplicaciones web medianamente bien realizadas, rutinas de validación de datos que permiten al
usuario rellenar los formularios con la información correcta. El trabajo para la validación de los datos generalmente se
realiza con un lenguaje del lado del cliente como Javascript, aunque algunos prefieren lenguajes de servidor para validar
datos.
Nota: No siempre es recomendable validar los datos en el servidor, por el abuso de transacciones HTTP que pueden producirse. Por ello,
el mejor método para la validación es JavaScript en el lado del cliente, o una mezcla entre ambas arquitecturas, cliente y servidor.
Lamentable hay quienes no reconocen las bondades del lenguaje de programación del lado del cliente estándar, Javascript, aunque esto
poco a poco va pasando a la historia y ahora más con el HTML5.
Gracias a HTML5 los desarrolladores hemos ganado unas importantes herramientas para validar datos en un formulario,
de una forma más fácil, con menos rutinas de código. Incluso en algunos casos no es necesario siquiera hacer nada de
JavaScript, pues existen mecanismos para verificar la corrección de los datos, con solo un poco de HTML.
11.7.1.- Doce tipos nuevos de INPUT para mejorar el trabajo con formularios
Para los que en algún momento sintieron que los INPUT disponibles en los formularios clásicos se quedaban cortos,
HTML5 tiene la respuesta. A decir verdad, muchos habremos podido pensar eso en alguna ocasión, sobre todo cuando
hemos tratado de desarrollar aplicaciones dirigidas a dispositivos móviles. HTML5 está pensado para ser usado en
múltiples entornos, y por tal razón se han credo doce nuevos tipos de INPUT.
Nota: Aunque pueda parecer que no tiene demasiada importancia la creación de todos estos tipos de INPUT nuevos, podemos decir que
es un gran paso adelante. Aun más ahora, que se pueden desarrollar aplicaciones nativas para dispositivos, con ayuda de algunos
framework como Titanium o Phonegap, del que publicaremos un manual en Desarrolloweb.com muy pronto. Incluso, como
exploraremos también en este sitio, con HTML5 vamos a poder crear aplicaciones nativas en Windows 8. Como puede verse con el
nuevo lenguaje de la web se nos abren nuevos horizontes y todas estas nuevas implementaciones serán muy utilizadas en todos esos
nuevos entornos de aplicaciones.
A continuación mencionamos cada uno de los doce nuevos INPUT que están presentes en la quinta especificación del
lenguaje HTML, con una breve explicación de cada uno.
INPUT tel:
Este tipo de input viene predispuesto con un formato para escribir números telefónicos. En realidad no hace ninguna
validación, pero sí se puede implementar una con la nueva API de validación de JavaScript.
INPUT number pre formateado:
Sirve para escribir solo números. En algunos navegadores, cuando se ejecuta el evento onSubmit no se hace el envío en
caso que el campo number esté lleno de caracteres que no sean numéricos.
INPUT search:
Además de proporcionar un campo de entrada, se le agrega un icono de búsqueda para distinguirlo de un campo de
navegación.
INPUT color:
Este input nos brinda una paleta de colores donde el usuario puede escoger un color de forma dinámica. Es lo que
Nota: Si quieres ver los nuevos INPUT funcionando en navegadores de escritorio, recomendamos usar la última versión de Google
Chrome (la versión 13 en adelante debería funcionar). Firefox también puede servir, puesto que se actualiza bastante rápido.
Si bien los nuevos INPUT son revolucionarios, también existen varias ventajas que nos traen diversos nuevos atributos,
venidos también a raíz de la evolución de los formularios de HTML5. Con esos atributos nuevos podemos hacer cosas
realmente interesantes sin mayores problemas. En este artículo vamos a realizar un ejemplo con dos de ellos.
Atributo placeholder:
Sin duda habrás visto en muchas ocasiones un efecto efecto sobre los campos INPUT, en páginas como Twitter, donde
hay un texto que indica la información que el usuario debe ingresar. Al situar el foco encima del campo, ese texto
desaparece para que el usuario escriba lo que desee. Pues bien, ese efecto se consigue con el atributo placeholder de una
manera inmediata. Podemos ponerlo en práctica con un código como el siguiente.
<input type="text" placeholder="Ingrese el nombre">
Solo hay asignar al atributo placeholder el texto que deseamos que aparezca en el INPUT, y una vez se situe el foco en
el campo de texto, simplemente desaparece.
Atributo autofocus:
El efecto logrado mediante el atributo autofocus es igual al de las páginas de búsqueda como Google, donde al cargar la
pagina el foco de la aplicación ya se encuentra en un INPUT. Su uso sería tan simple como este.
<input type="search" style="border-color:#12c5a1" autofocus>
Para mayor claridad os dejamos un ejemplo básico con estos atributos asignados a campos INPUT.
<!DOCTYPE html>
<html lang="es">
<head>
<title>Prueba1</title>
<style>
input{
border-radius:7px;
border-color: #cfc;
}
</style>
</head>
<body>
La nueva versión del lenguaje HTML trae consigo muchas novedades. Como vimos en el artículo Qué es HTML5, el
nuevo estándar está compuesto de diversas tecnologías de lo más variado, para suplir todas las necesidades de la Web
actual y de los nuevos dispositivos de movilidad.
En esa línea comprensión de lo que es HTML5, cabe destacar que existen varios lenguajes que están siendo
actualizados con el nuevo estándar, como HTML, CSS o Javascript. Si tuviésemos una pila de asuntos que
representasen cada una de estas novedades, la del propio lenguaje HTML sería la menor, seguida de CSS y luego de
Javascript. Sin embargo, hay varias cosas que debemos conocer sobre el lenguaje de etiquetado en esta nueva versión,
que están cambiando enormemente la manera en la que se conciben y desarrollan los sitios web actuales.
Nota: Podríamos definir otras clasificaciones o incluso subgrupos en cada uno de los anteriores items, pero de momento está bien para
aclarar cuáles son las novedades clave que trae HTML5.
Dentro de cada grupo tenemos multitud de nuevas etiquetas que comentaremos brevemente a continuación.
Algunas etiquetas son realmente nuevas y otras como EMBED ya existían y se han incorporado al estándar.
Etiquetas para Multimedia: Algunos elementos nuevos servirán para integrar contenido multimedia, pues sabemos que
cada día esos nuevos tipos de información están más presentes en la Web.
• AUDIO: Para insertar sonido dentro de una web.
• VIDEO: Para insertar clips de vídeo.
• EMBED: Para embeber contenido externo de otro tipo, como el traído de diversos plugins que se
comercializan actualmente o se comercializarán en el futuro.
• SOURCE: Permite especificar varias fuentes diferentes cuando se insertan elementos en AUDIO y VIDEO.
• TRACK: Permite especificar varias pistas de sonido o vídeo para los elementos AUDIO y VIDEO.
Nota: En DesarrolloWeb.com existen diversos talleres de HTML5 que explican diversos usos de las etiquetas AUDIO y VIDEO, que
podemos leer si nos pasamos por el Taller de HTML5.
Nota: Para ver descripciones más detalladas sobre este asunto recomendamos la lectura del artículo Nuevos elementos de formularios en
HTML5.
Pero hablando de novedades en formularios, no debemos dejar de remarcar que HTML5 también trae diversos nuevos
usos de INPUT, que nos sirven para especificar qué tipo de información concreta queremos introducir en ellos. Ello
proporciona utilidad especial a esos campos INPUT, pensando también en los dispositivos móviles y la forma con la
que tratan dichos campos. Todo eso se explica con detalle en el artículo Las mejoras de los elementos INPUT de
HTML5.
Dibujos completos en HTML5, lienzo de CANVAS:
Luego tenemos una utilidad nueva que merece la pena verla por separado, puesto que nos va a transformar la manera
con la que se experimentará la web. Se trata de un lienzo en donde se puede dibujar cualquier cosa e incluso hacer
animación compleja.
CANVAS: Una etiqueta que genera un lienzo en la página donde realizar cualquier tipo de diseño, soporta dibujo de
todo tipo de formas, degradados, imágenes, etc.
Nota: La etiqueta CANVAS del HTML simplemente delimita un área de la página donde se puede dibujar, pero para realizar esos
dibujos se tiene que utilizar el lenguaje Javascript, a través del API de Canvas. Para aprender a diseñar en un CANVAS os
recomendamos la lectura del Manual del Elemento Canvas del HTML5.