Diseño Web III Parcial - HTML
Diseño Web III Parcial - HTML
Diseño Web III Parcial - HTML
WEB
3 PARCIAL
II QUIMESTRE.
Estructura básica de una página Web - html, head y body
Para crear una página web se necesita un documento HTML utilizando tres elementos o tags
principales que cualquier sitio Web usa: html, head y body.
Un documento web (o página web) es, como hemos apuntado en la introducción, un conjunto de tags
HTML que se escriben en un editor de texto plano (sin formato) y se ejecutan en un navegador web.
Para crear un verdadero documento HTML comenzará con tres elementos contenedores:
<html>
<head>
<body>
Sólo hay una manera correcta de combinar estos tres elementos. He aquí su colocación exacta, con el
doctype al comienzo de la página:
<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
...
</body>
</html>
2
Toda página Web utiliza esta estructura básica. Los puntos suspensivos (...) muestran dónde insertaría
la información adicional.
Una vez colocado el esqueleto XHTML, debe añadir dos conectores más a la mezcla.
Toda página Web requiere un elemento <title> en la sección del encabezado. A continuación, deberá
crear un contenedor para el texto en la sección del cuerpo de texto (<body>).
Un elemento contenedor de texto multiuso es <p>, que representa un párrafo. Veamos con más detalle
los elementos que hay que agregar:
<title>: Establece el título de la página Web, el cual tiene varias funciones. Primero, los
navegadores lo muestran en la parte superior de la ventana. Segundo, cuando un visitante crea
un marcador para la página, el navegador emplea el título para etiquetarlo en el menú
Marcadores (o favoritos). tercero, cuando la página aparece en una búsqueda Web, el motor
de búsqueda suele enseñar este título como primera línea en los resultados, seguido de un
fragmento del contenido de la página.
<p>: Indica un párrafo. Los navegadores no los sangran pero añaden un pequeño espacio
entre varios consecutivos para mantenerlos separados.
<!DOCTYPE html>
<html>
<head>
<title>
Bienvenido a mi sitio Web
</title>
</head>
<body>
<p></p>
</body>
</html>
Si abre este documento en un navegador Web, verá que la página está vacía, pero ahora aparece el
título.
Cuando un navegador muestra una página Web, el título se presenta en la parte superior de la ventana,
con el texto al final. Si el suyo utiliza la navegación por pestañas, el título también aparece en ellas.
Tal y como está ahora, este documento HTML es una buena plantilla para futuras páginas. La
estructura básica está en su lugar; simplemente necesita cambiar el título y añadir algo de texto.
Lo primero que tenemos que saber es que en toda página web existen dos partes claramente
diferenciadas: la cabecera, o head, y el cuerpo, o body.
3
Vamos hacer es crear una carpeta, dentro de "Mis documentos", para almacenar los ficheros de prueba
que vayamos a usar.
A esta carpeta la llamaremos pruebas-html en el resto de los ejercicios. Con la carpeta abierta, haga
doble clic sobre el ícono que representa al bloc de notas.
<!DOCTYPE html>
<html>
<head>
<title>Título de la página</title>
</head>
<body>
</body>
</html>
Es vital que la extensión sea .html, ya que sólo por la extensión el sistema operativo reconoce este
archivo como un documento web, y no como un simple y archivo de texto.
El nombre del archivo deberá escribirse como está, en minúsculas y sin espacios ni caracteres
especiales.
Los únicos signos de puntuación admitidos son el punto (sólo uno), que lo usaremos para separar el
nombre de la extensión y el guión bajo.
El nombre podrá contener letras y números, pero deberá empezar por una letra. Así mismo, nos
abstendremos de meter en el nombre de un archivo letras acentuadas, eñes, cedillas, o cualquier otro
carácter de algún alfabeto local.
Puede que todas estas precauciones le parezcan excesivas ahora. La mayoría de ellas son realmente
innecesarias en Windows, pero no olvide que está trabajando en la Red.
4
Los servidores web son mucho más sensibles a determinados aspectos del nombre de los ficheros que
su máquina local.
Otra norma importante es que los archivos llevan una extensión, pero las carpetas en las que las
guardamos no. Así pues, en el nombre de una carpeta nunca incluiremos puntos.
Una vez que haya guardado su código en su carpeta con el nombre adecuado, cierre el bloc de notas.
En su carpeta, además del bloc de notas, verá el ícono que representa al archivo que acaba de grabar.
Observe que el ícono recuerda al de Explorer o Google Chrome (suponiendo que alguno de ellos sea
su navegador por defecto).
Esto es así porque al haber guardado el fichero con la extensión .htm el sistema operativo reconoce
este fichero como documento web (también llamado documento html).
Si graba incorrectamente la extensión, el ícono será diferente y no podrá usar su archivo como
documento web.
Para ejecutar la página que acaba de crear, haga doble clic sobre el ícono. Automáticamente, se abrirá
el navegador y se cargará la página. La ruta completa de acceso y el nombre del fichero aparecerán en
la barra de dirección.
Ahora veamos en detalle cuál es el código de esta página que hemos creado y qué es lo que hace.
En primer lugar, encontramos el tag <html>. Este tag se emplea siempre para iniciar el código html.
Es la forma de decirle al navegador que en este punto empieza el código. Por esta razón se pone esta
línea siempre como la primera del código.
No incluiremos ningún tag antes de este, con excepción del DOCTYPE. Por el contrario, al final del
código tenemos el tag </html> , que le indica al navegador que el código finaliza en ese punto.
No deberemos incluir ningún tag ni nada más después de esta línea. Observe que el tag de finalización
es igual al de inicio, pero incluyendo la barra inclinada al principio.
Dentro del código html encontraremos claramente diferenciados los dos bloques que mencionamos
antes: el head (cabecera) y el body (cuerpo de la página).
<!DOCTYPE html>
<head>
<title>Título de la página</title>
</head>
Al igual que el código general, la cabecera tiene un principio indicado por <head> y un final indicado
por </head>.
Todo lo que queramos incluir en la cabecera irá colocado entre estas dos líneas.
5
Como decíamos antes, en la cabecera incluiremos algunos datos generales de configuración de la
página. En esta plantilla sólo hemos incluido el título de la página.
El título de la página se incluye entre los tags <title> y </title>, que indican, respectivamente, el
comienzo y final de dicho título.
El título es un literal (una cadena de texto) que aparecerá en la barra de título del navegador en tiempo
de ejecución (cuando se ejecute la página), tal como muestra el detalle de la figura siguiente:
Quiero recalcar que este título es solamente eso: un texto libre para que aparezca en la página y no
tiene nada que ver con el nombre que le dimos al fichero.
Una vez completado el head, pasamos a la segunda sección de toda la página web: el body o cuerpo.
El body incluye, tal como lo mencionaba anteriormente, todo lo que queramos visualizar en el área de
navegación.
Se inicia con el tag <body> y se finaliza con el tag </body>. Como vemos en el archivo que hemos
creado, de momento no hemos incluido nada.
Por esta razón, al ejecutar la página, se ve el área de navegación vacía. Dentro del body iremos
metiendo código e iremos visualizando los resultados.
Lo primero que vamos hacer es incluir texto en la página para que se muestre en el área de
navegación.
Para ello, cierre el navegador y, dentro de la carpeta en la que está trabajando, arrastre el ícono de
plantilla.html sobre el bloc de notas. De esta forma, se abrirá el bloc de notas y cargará el código
fuente que había tecleado anteriormente.
En la zona del código reservada para body de la página entre las líneas <body> y </body> teclee lo
siguiente:
<!DOCTYPE html>
<html>
<head>
<title>
Título de la página
</title>
6
</head>
<body>
Esto es una línea de texto
</body>
</html>
A continuación haga clic en el menú ARCHIVO y, dentro de éste, elija la opción GUARDAR COMO
… asegúrese de guardarlo en su carpeta.
Como nombre de fichero ponga texto-simple.html. Una vez guardado, cierre el bloc de notas y
ejecute el fichero haciendo doble clic sobre su ícono.
Como ve para mostrar un texto en el área de navegación, basta con incluir dicho texto dentro del
cuerpo de la página.
En el próximo artículo vamos a aprender muchas cosas acerca del texto: su presentación, su color, etc.
Cómo poner un color de fondo en nuestra página y cómo modificar el texto, formatearlo, cambiar el
tamaño, la tipografía, entre otras cosas.
Vamos a aprender cómo poner un color de fondo en nuestra página y cómo modificar el texto,
formatearlo, cambiar el tamaño, la tipografía, etc.
Además, aprenderemos algunos recursos para colocarlos en la parte de la página que nos interese.
7
Con lo que aprendamos en este artículo ya seremos capaces de hacer una página sencillita. Más
adelante, ya veremos cómo darle más alegría.
Configurando el fondo
Son varias las cosas que podemos configurar de fondo. En este artículo aprenderemos algunas de
ellas.
Por ejemplo, ¿Se ha fijado en la barra de desplazamiento que aparece a la derecha del área de
navegación? Bueno, pues resulta muy útil… si su página es lo suficientemente grande como para no
caber completa en la pantalla. De esta forma, puede desplazarse arriba y abajo.
Pero si su página cabe en el área de navegación sin necesidad de desplazarse, la barra no es necesaria.
Y, sin embargo, aparece allí. Está inhabilitada, pero está. Y podría ser su deseo que no apareciera.
Incluso puede mejorar el diseño final de la página. Para ello, necesitamos usar un atributo. Los
atributos son parámetros que se añaden a los tags para configurar su funcionamiento.
La técnica más moderna y adecuada sería combinar nuestro documento web (HTML) junto con una
hoja de estilo (CSS) para lograr quitar la barra de scroll. La ventaja de esta térnica es que se aplica a
todos los navegadores, garantizando la compatibilidad. Nuestro documento Web por nombre sin-
barra.html quedará de la siguiente manera:
<!DOCTYPE html>
<html>
<head>
<title>Título de la página</title>
<link href="css/estilo.css" type="text/css" media="all">
<head>
<body>
Esto es una página sin barra de scroll
</body>
</html>
Como ve, la barra ha desaparecido. De todas formas, debe asegurarse de no usar este efecto si su
página necesita desplazamiento, ya que, si quita la barra, el usuario no tendrá modo de ver toda la
página. La alternativa es grabar el atributo scroll con el valor “auto”. Así aparecerá la barra sólo si es
necesario.
Quizá una de las posibilidades más llamativas a la hora de montar una página sea el uso de colores
para el fondo de la misma. En los ejemplos del artículo anterior hemos creado una página cuyo color
de fondo es el blanco. Este es el color por defecto del área de navegación. Veamos cómo cambiar eso.
Para ello necesitamos añadirle al tag <body> otro atributo. En concreto, el que usamos para cambiar
el color de fondo de la página es bgcolor, y le asignamos un valor que indique el color que deseamos.
La palabra bgcolor es acrónimo de background color (color de fondo). Por ejemplo: si queremos que
nuestra página tenga como color de fondo el amarillo, el tag <body> quedará de la siguiente forma:
<body bgcolor="yellow">
En este artículo vamos a aprender muchas cosas sobre colores, y el color del fondo de una página es,
sin duda, lo primero que capta el usuario. Veamos cómo modificarlo. Abra con el bloc de notas el
código texto_simple.htm del artículo anterior y modifique el tag <body> para que el código le quede
de la siguiente forma:
8
<DOCTYPE! html>
<html>
<head>
<title>Título de la página </title>
</head>
<body bgcolor="yellow">
Esto es una línea de texto.
</body>
</html>
Este código lo guarda con el nombre fondo_amarillo.htm. Cierre el bloc de notas y ejecute el código
que acaba de crear. El resultado lo ve en la siguiente figura:
Como ve, toda la página tiene el fondo amarillo. Esto es así porque el atributo bgcolor, que es el que
se ha encargado de establecer este color, está asociado al tag body que es, como ya sabe, el encargado
de definir el área de navegación de la página.
Quiero que se fije también en que el tag que abre el body incorpora ahora un atributo, pero el tag que
cierra el body no ha sido modificado. Esto es así siempre en HTML. Aunque la apertura de un tag
utilice atributos, el cierre no los lleva incorporados. Nunca incluya atributos en el cierre de un tag.
Todos los colores que pueda ver en su monitor están formados a partir de unir determinadas
9
Éste es un buen momento para ver cómo se definen los colores en HTML.
Podemos establecer los colores de fondo con su nombre en inglés, por ejemplo: red, pink, skyblue o
lightgreen. Esto es válido en la mayoría de los casos.
De hecho, existe una variedad suficiente de nombre de colores como para satisfacer todas nuestras
necesidades.
Pero existe una manera alternativa de establecer el color. Para ello necesitamos saber cómo se crean
los colores en el monitor.
Para definir un color cualquiera en el monitor se hace a partir de una combinación de tres colores:
rojo, verde y azul.
Todos los colores que pueda ver en su monitor están formados a partir de juntar determinadas
proporciones de estos tres colores.
Por esta razón los llamamos colores primarios (o también colores básicos).
Y si está pensando que en el colegio nos decía el “profe” que los colores primarios eran el magenta, el
cyan y el amarillo, le diré que sí, pero no. Aclarémoslo.
El magenta, el cyan y el amarillo son colores primarios de la tinta. A partir de esos tres se forman los
demás colores en tinta (para imprimir).
Por ejemplo, el verde está formado por azul y amarillo. Si mezcla los tres colores primarios tinta,
obtendrá el negro. Por esta razón, a la mezcla de estos tres colores-tinta se la conoce como síntesis
substractiva.
Sin embargo, el monitor de su ordenador emite luz. Y los colores de la luz, o colores luz, se basan en
otros tres colores primarios que son, como hemos dicho, el rojo, el verde y el azul. La mezcla de estos
tres colores en la mayor cantidad posible da como resultado el blanco.
Por esta razón se dice que los colores-luz se mezclan por síntesis aditiva. El esquema de esto se ve en
la siguiente figura:
10
Como hemos dicho, nosotros vamos a usar los colores luz, ya que, en definitiva, luz es lo que emite el
monitor.Cualquier color que necesitemos crear se forma mezclando distintas proporciones de rojo,
verde y azul.
Le podemos indicar a nuestro código HTML un color cualquiera en el que cada uno de los colores
primarios reciba un valor entre 0 y 255. Esto hace un total de 256 posibles proporciones para cada uno
de tres colores primarios.
Dicho así, a lo mejor no impresiona demasiado, hasta que se pone uno a pensar que el número
resultante de posibles combinaciones es de 256*256*256=16,777,216 colores posibles.
Así pues, el amarillo estaría formado por el máximo posible de rojo, el máximo posible de verde y
nada de azul, es decir, sería la combinación 255.255.0.
Los valores de los colores primarios los expresaremos siempre en ese orden: en primer lugar la
proporción de rojo, después la de verde y por último la de azul. Por eso, a este formato de colores
se le conoce como RGB (Red, Green, Blue).
En muchos libros y programas verá que se refiere a este formato con el nombre traducido RVA (de
Rojo, Verde, Azul).
Sin embargo, no es tan fácil. Los creadores de HTML decidieron que había llegado el momento de
complicarnos un poco la vida y han hecho el lenguaje de tal modo que los valores de los tres colores
primarios hay que expresarlos en hexadecimal y con dos dígitos.
Como sabe, la numeración hexadecimal permite emplear las letras de la A a la F, asignándole los
valores numéricos de 10 a 15 correspondientemente.
Esto, en realidad, viene dado por una serie de normas y fundamentos de numeración que se
establecieron en los primeros tiempos de la informática (si, cuando los ordenadores iban a válvulas) y
que siguen vigentes en nuestros días por haber demostrado su eficiencia en muchos terrenos.
Por lo tanto , el color amarillo, que lo definíamos como 255 de rojo, 255 de verde y 0 de azul,
expresado en hexadecimal sería FFFF00.
Los primeros dos dígitos expresan la proporción del rojo (FF=255), los dos siguientes la del verde y
los dos últimos la de azul. Además HTML nos pide que añadamos, delante de la combinación de
colores, el signo # (conocido popularmente como almohadilla o cucarachita).
<body bgcolor="yellow">
Sería equivalente a:
<body bgcolor="#FFFF00">
Este mismo sistema que hemos aprendido para fijar el color de fondo nos servirá para establecer los
colores de texto y de otros elementos de la página web.
Existen lo que se llaman colores seguros para la web. Son una paleta de 216 posibles combinaciones.
11
Son colores seguros para web aquellos que se visualizan exactamente igual en una plataforma PC
que en una Macintosh, ya sea con un navegador Internet Explorer o con Firefox.
Una vez más, debemos tener en cuenta que estamos trabajando para la red. Nuestra página puede ser
vista por usuarios con distintas plataformas y deben poder verla igual.
Los colores seguros para la web son aquellos que están formados por cualquier combinación de los
valores 00, 33, 66, 99, CC o FF. Así pues, los siguientes colores son ejemplo de colores seguros para
la web:
#FF66CC
#FFFFFF
#00CC99
#FF3366
Y, en general cualquiera que cumpla con la condición de que los tres valores (el de rojo, el de verde y
el de azul) respondan a uno de los valores especificados.
También debemos de tener en cuenta que el color de texto debe contrastar con el de fondo, de tal
forma que la lectura de la página sea cómoda para el usuario. No olvide que, ya de por sí, leer sobre el
monitor es mucho más incómodo que leer sobre papel.
Si además el texto apenas destaca sobre el fondo, estaremos invitando al usuario a que se vaya a otra
página. En general, optaremos por tonos pastel o tonos apagados para el fondo.
Los colores chillones se emplean casi exclusivamente en páginas de juegos, de música moderna o
erótica. La combinación de texto negro sobre fondo blanco suele dar buen resultado en muchas
ocasiones.
El valor que se le pasa a un atributo puede ir indistintamente entre comillas o sin ellas. Por ejemplo,
las dos sentencias que aparecen a continuación son equivalentes:
<body bgcolor="#FFFF00">
<body bgcolor=#FFFF00>
Sin embargo, si ponemos comillas al principio del valor, deberemos ponerlas al final, y viceversa. Por
ejemplo, las siguientes sentencias no funcionarían adecuadamente.
<body bgcolor="#FFFF00>
<body bgcolor=#FFFF00">
Los colores en un sitio web influyen en la capacidad de atracción, conversión o rechazo, denotan un
efecto subliminal provocando impulsos al usuario.
12
La teoría de los colores se ha ido desarrollando con numerosos estudios cuyos inicios datan del siglo
XV y se asocian a nombres como Batista Alberti, Da Vinci, Newton, y muchos más. Estos estudios
son hoy la base de la “Ciencia de la Visión” y se utilizan en Marketing como forma de comprender el
mensaje que un color – o combinación de varios – puede transmitir de manera aislada. Pero,
lamentablemente, son pocos los que hacen uso del poder de los colores en la creación de piezas de
comunicación, incluyendo los sitios web.
Recientemente leía un post de Seth Godin en el cual comenta el problema de diseño de la señalética
del aeropuerto de Minneapolis que, si bien es bastante nueva y cool, encontrar la dirección para dar
con la parada de taxis resulta muy complicado. Para descubrir el porqué, se me ocurrió entonces
proponer este breve ejercicio.
Consigna:
Piensa que estás en ese aeropuerto por primera vez, llegado de un largo viaje, buscando las señales
que te indiquen hacia dónde ir….
¿Estás allí? Bien, ahora ¿de qué color esperarías encontrarte las siguientes señales?
Muy probablemente, a menos que se seas daltónico de toda la vida, provengas de una tribu amazónica
muy poco civilizada o hayas aterrizado recientemente desde un planeta remoto, habrás asignado el
color verde a “Salida”, el amarillo a “Taxis” y el rojo a “Solo personal autorizado”. ¿Cierto?
Seth escribía enojado por qué demoró el doble en encontrar la señal de taxis que resultaba estar en
blanco y negro, muy coherente con el diseño del resto de la señalética y colores del aeropuerto, pero
muy poco práctico al saltarse unos estándares muy poderosos como se habrá podido comprobar en el
ejercicio anterior. De eso trata, entre otras cosas, el poder de los colores…
¿Acaso los colores en un sitio web pueden impactar en la capacidad de atracción y conversión del
mismo?
En la siguiente tabla podrás ver las emociones o impulsos que denota el efecto subliminal de los
colores y algunos casos en los que puede convenir utilizarlos con ejemplos de sitios web conocidos
que hacen buen uso de ellos.
Azul Seguridad Cuando necesitas que confíen en ti y/o tu oferta es intangible.
Verde Calma y Confianza Cuando buscas que la gente se decida. Ideal para botones.
Cuando tu audiencia es de hombres adultos y el tópico es deporte o
Rojo Energía y Vigor
juego.
13
Amarillo Optimismo y Alegría Cuando buscas que tus visitas se diviertan o resaltas una super oferta.
Romanticismo y
Rosa Cuando tu audiencia es de mujeres, especialmente si son jóvenes.
Fantasía
Naranja Acción Cuando reclamas participación o acción. Ideal también para botones.
Cuando comercializas productos o servicios de lujo y buscas
Negro Poder y Riqueza
transmitir la idea de valor o seriedad.
Para establecer el color del texto en toda la página recurrimos al atributo text del tag body, que recibe
un valor para determinar el color del texto.
<!DOCTYPE html>
<html>
<head>
<title> Colores </title>
</head>
<body bgcolor="#66CC99" text="#0000FF">
Texto azul sobre fondo verde
</body>
</html>
14
Texto en un sitio Web - Diferencias tags strong, em, b, i, u
Los elementos lógicos han dominado el marcado HTML desde XHTML 1.0, eliminando muchos
elementos en formato físicos como font, u, s, entre otros más.
Antes o después, todo creador Web descubre que diseñar para la red es muy distinto a desarrollar algo
que va a ser impreso.
Antes de liberar a su creador gráfico de páginas Web interior, deberá superar unos cuantos obstáculos
conceptuales.
Consideremos la diferencia entre una página hecha con HTML y una generada en un procesador de
texto.
Estos programas muestran el aspecto exacto del documento antes de imprimirlo, sabe qué tamaño
tendrán los encabezados, qué fuente usan , si el texto envuelve de una línea a otra, etc. Si ve algo que
no le gusta, lo cambia mediante los menús y comandos de formato.
El procesador de texto, en otras palabras, le ofrece un control absoluto sobre cada detalle de su
página.
La Web es un lugar más libre. Al crear un documento HTML no tiene ni idea de cómo se verá esa
página en el ordenador de otro.
Esa persona puede tener su navegador configurado para no mostrar imágenes, o enseñar caracteres de
tamaño grande en lugar de hacerlo con dimensiones estándar, o puede haber reducido la ventana y
haberla colocado en una esquina de su escritorio.
Además, los visitantes que acceden a su sitio mediante teléfonos obtendrán otra visualización (y
completamente distinta). En resumen, no puede controlar los detalles de presentación en la Web de la
manera en que puede hacerlo en un formato impreso.
Sin embargo, es posible ofrecer toda la información que un navegador Web necesita para presentar
sus páginas adecuadamente.
Esto se hace estructurando las páginas de modo que los navegadores traten los elementos de la página
de forma coherente, independientemente de la configuración del navegador de sus visitantes.
Antes de comenzar a crear páginas Web con marcado HTML, deberá comprender otro concepto: la
diferencia entre estructurar un documento (dividir su contenido en componentes distintos como
encabezados, párrafos, listas, etc.) y darle formato (hacer que esos elementos sean atractivos
aplicando cursivas, cambiando el tamaño de texto, añadiendo color, etc.)
Los administradores Web novatos que no entienden esta diferencia a menudo terminan dando formato
cuando deberían estar estructurando, lo que resulta en páginas desordenadas y un HTML complicado
de mantener.
15
En los inicios de la Web, este lenguaje usaba dos tipos de elementos para enfatizar la diferencia entre
la estructura del documento y su formato:
Los elementos lógicos han dominado el marcado HTML desde que se inventó XHTML 1.0 reforzó su
dominio y eliminó muchos de sus elementos físicos (como <font> para cambiar el tipo de letra y <u>
para subrayar texto.)
HTML5 va un paso más allá; cambia la definición de dos elementos físicos que los programadores
Web más tozudos no querían abandonar: <b> y <i>. Ahora, <b> ya no significa texto en negrita, sino
texto desplazado estáticamente, e <i> ya no hace mención al texto en cursiva, sino texto en voz
alternativa, como palabras extranjeras o términos técnicos.
Siempre muestran texto <b> en negrita y texto <i> en cursiva, a menos que use una hoja de estilo que
indique lo contrario.
Pero el cambio de definición refuerza una modificación fundamental en la forma de pensar: los
elementos HTML deben escribir la función lógica de las partes textuales, no su presentación
tipográfica.
Seguramente se pregunte por qué los gurús de HTML tenían tanto interés en eliminar el formato de
los documentos HTML. Veamos algunos motivos:
NOTA:
La visión de una Web en la que los elementos indican qué contiene una página (precios, tallas,
direcciones de correo, etc.) en lugar de qué aspecto tiene, se llama Web semántica. Según los
16
visionarios que construyeron Internet, ésta podría conducir a una edad de oro del acceso a la
información y a las búsquedas super inteligentes.
Dividir el texto en párrafos nos da la posibilidad de organizarlo en la página. Considere escribir una
idea por párrafo con sólo utilizar 3 o 4 líneas.
<html>
<head>
<title> Organización
</title>
</head>
<body>
Esto debería de ser una línea de texto.
Y esto debería de ser otra.
</body>
</html>
Cuando lo ejecute verá en pantalla todo el texto en una sola línea, en lugar de las dos líneas que ha
tecleado, tal como se muestra en la siguiente figura:
<html>
<head>
<title>
17
Organización
</title>
</head>
<body>
Esto debería de ser una línea de texto <br>
Y esto debería de ser otra.
</body>
</html>
El resultado se ve en la figura:
Si necesita las líneas más separadas, puede introducir más saltos de línea (más tags <br>) en el
código, como en el siguiente ejemplo:
<html>
<head>
<title>
Organización
</title>
</head>
<body>
Esto debería de ser una línea de texto, <br><br><br><br>
Y esto debería de ser otra.
</body>
</html>
18
o en muchas. Por ejemplo, el último código que hemos probado funcionaría exactamente igual si lo
hubiéramos escrito así:
Pruebe a teclear el código anterior en una sola línea del bloc de notas y guárdelo en el disco con el
nombre todo_junto.htm. Cuando lo ejecute, verá el mismo resultado que en el caso del código
varios_saltos.htm. Sin embargo, este sistema presenta una grave deficiencia: cuando queremos
arreglar en el código algo que no funciona o queremos mejorarlo o ampliarlo no hay quien pueda
seguir o modificar el código desorganizado. Piense que, de momento, estamos trabajando con códigos
muy simples y con pocas líneas, pero es normal que una página web profesional tenga más de
trescientas líneas de código HTML. El poner las líneas una debajo de la otra y seguir unos criterios de
indentación obedece, principalmente, a razones de legibilidad.
Además cuando usemos tablas (tranquilo, ya llegaremos) verá que se producen ligeros cambios de
apariencia en la página si colocamos el código en una sola línea o en varias. En relación con este
aspecto, hay algo que debe saber y mejor que se lo diga ahora, que acabamos de empezar. HTML es
un lenguaje muy flexible en cuanto a su sintaxis. Como ve, es lo mismo la disposición del código.
Además, hay ciertos tags que pueden omitirse sin problemas. Por ejemplo, un código funcionará
exactamente igual aunque suprima los tags <html> y </html>, y algunos otros. Sin embargo, no debe
acostumbrarse a eso. El consorcio W3C del Instituto CERN de Suiza, creadores del HTML, nos da
unas especificaciones para que las sigamos. Si no lo hacemos, nuestro código fuente puede funcionar
bien en apariencia… hasta que u día empiece a fallar sin que sepamos por qué.
En otro orden de cosas, después de HTML quizá quiera ir más allá y conocer Javascript, Java, Visual
Basic u otros lenguajes de programación (espero que quiera hacerlo). Estos son mucho más rígidos en
su sintaxis que HTML y cualquier error hace que no funcionen o lo hagan incorrectamente. Es mejor
no adoptar malas costumbres desde el principio. Si ya ha programado en algún otro lenguaje
anteriormente le será más fácil comprender la importancia de esto. En este temario le voy a exponer el
lenguaje siguiendo, en todo momento, las especificaciones del consorcio. Hágame caso. – No es
consejo gratuito, es fruto de la experiencia.
Bien. Tras este pequeño sermoncito. Hemos visto cómo introducir saltos de línea en el texto. Pero,
¿Cómo introducir un cambio de párrafo? Es más ¿Por qué querría dividir alguien el texto en párrafos?
Responderemos primero a la segunda pregunta. Por una parte, dividir el texto en párrafos no da otra
posibilidad de organizarlo en la página. Por otra parte, existe en HTML (Y sobre todo en DHTML)
diversos tags que se aplican sobre un párrafo completo. Así podremos determinar qué texto se ve
afectado por esos tags. Ya iremos viendo cuáles son; de momento, haga un acto de fe y créase lo que
le digo. Veamos cómo crear párrafos de texto. Teclee el siguiente código y guárdelo en su disco con
el nombre usar_parrafos_1.htm:
<html>
<head>
<title>
Uso de párrafos en HTML
</title>
</head>
<body>
<p>
Con cien cañones por banda, <br>
Viento en popa a toda vela, <br>
No corta el mar, si no vuela <br>
Un velero bergantín.
</p>
<p>
Bajel pirata al que llaman, <br>
19
Por su bravura, el temido; <br>
En todo el mar conocido, <br>
Del uno al otro confín.
</p>
<p>
La luna en el mar riela, <br>
En la lona gime el vieto <br>
Y alza, en blanco movimiento, <br>
Olas de plata y azul.
</p>
<p>
Y va el capitán pirata, <br>
Cantando alegre en la popa. <br>
Asia a un lado, al otro, Europa <br>
Y allá, a su frente Estambul.
</p>
</body>
</html>
Ahora que ya sabemos algo más acerca del texto, vamos a tratar de alinearlo en la página. En primer
lugar, fíjese en que el texto se coloca, automáticamente, en el lado izquierdo de la página, salvo un
pequeño margen. Lo primero que vamos a ver es cómo modificar o eliminar ese margen. Para ello,
necesitamos añadirle más atributos al tag <body>.
Podemos controlar el margen que queda por la izquierda de la página y el margen que queda en la
parte superior de la misma. Los márgenes se especifican en número de pixeles. Por ejemplo, vamos a
teclear el código necesario para eliminar completamente los márgenes izquierdo y superior de la
página. Teclee el siguiente código y guárdelo como sin_margen_1.htm.
<html>
<head>
<title>
Eliminar márgenes
</title>
</head>
<body leftmargin=0 topmargin=0>
Esto está sin márgenes
</body>
</html>
20
Esto dará como resultado lo que ve en la figura anterior, en la que se aprecia que el texto se ha
colocado sin márgenes en la página. La pequeñísima separación que existe entre la parte superior del
texto y el borde superior del área de navegación no es un margen, sino el espacio vertical de los
caracteres. Los márgenes quedan introducidos a 0.
Sin embargo, estos atributos sólo funcionan cuando la página se ejecuta con Microsoft Internet
Explorer. Si la página se ejecuta con Netscape Navigator, el margen izquierdo se llama anchura de
margen y se controla con el atributo marginwidth. El margen superior se llama altura de margen y se
controla con el atributo marginheight. La línea que abre el body en el código anterior, por lo tanto,
debería de quedar así:
Como estamos trabajando para la Red (es decir, para millones de usuarios), deberíamos preparar la
página para que se viera igual en todos los navegadores principales.
Para ello, sólo debemos añadir los cuatro atributos, tal como vemos en el siguiente código, al que
llamaremos sin_margenes2.htm.
<html>
<head>
<title>
Eliminar márgenes
</title>
</head>
<body leftmargin=0 topmargin=0 marginwidth=0 marginheight=0>
Esto esá sin márgenes
</body>
</html>
De esta forma, podemos asegurarnos cuales serán los márgenes en ambos navegadores. La cuestión es
ésa: que los dos navegadores presenta algunas diferencias de comportamiento y que deberemos
asegurarnos, en la medida de lo posible, de que la página funcione en ambos.
Además, quiero que reflexione sobre una cosa. Un tag, ya sea body o cualquier otro, puede recibir
todos los atributos que considere necesarios para el buen funcionamiento de la página. La única
limitación a este respecto es que respete la sintaxis del lenguaje (por otra parte no demasiado exigente,
como vimos antes) para que todo vaya como la seda. Tampoco existe un orden determinado para la
colocación de los atributos. Por ejemplo, las dos líneas siguientes tendrían el mismo efecto:
Además, podemos darle a nuestros contenidos (texto u otros contenidos que ya iremos viendo) una
rudimentaria alineación usando el tag <div>. Este tag cumple distintos objetivos, totalmente
independientes uno del otro, según los atributos que le pasemos. El atributo aling se encarga de crear
alineaciones del texto en la página. Para recibir el valor “center”, si deseamos alinear el texto en el
centro de la página, o el valor “right”, si deseamos alinearlo a la derecha.
<html>
<head>
<title>
21
Ejemplo de alineaciones
</title>
</head>
<body>
Este texto aparece a la izquierda.
<div aling=center>
Este texto aparece centrado.
<div aling=right>
Este texto aparece a la derecha.
</div>
</body>
</html>
Como puede apreciar en la siguiente figura, el texto comprendido entre los tags <div> y </div> es el
que se ve afectado por la alineación.
Para alinear los contenidos al centro de la página puede usar también el tag <center>, como ve en el
siguiente ejemplo. Teclee el código y guárdelo como alinear_2.htm.
<html>
<head>
<title>
Ejemplo de alineaciones
</title>
</head>
<body>
Este texto aparece a la izquierda
<center>
Este texto aparece centrado
</center>
<div align=right>
Este texto aparece a la derecha
</div>
</body>
</html>
22
Fíjese que el resultado es el mismo que en el ejemplo anterior. Esta vez el texto que queremos
centrado aparece entre los tags <center> y </center>. Y como esto funciona igual que el uso de <div
align=center> elegiremos la última solución, en virtud de la ley del mínimo esfuerzo.
Los comentarios HTML son visibles en el código fuente de la página para explicar código, pero no se
representan en la parte visual del navegador Web.
Este elemento se usa para agregar un comentario a un documento HTML. Un comentario HTML
comienza con <!–– y el comentario se cierra con ––>.
Los comentarios HTML son visibles para cualquiera que vea el código fuente de la página, pero no se
representan cuando el navegador procesa el documento HTML.
Como en cualquier otro lenguaje de programación, los comentarios tienen dos objetivos principales:
Resultado en el navegador
23
Efectos simples HTML - Tags b, i, u, s, h1 - h6 y blockquote
Para modificar la apariencia del texto en HTML se utilizan etiquetas para crear negritas, cursivas,
subrayados encabezados, tachados y citas textuales.
Ya sabemos más cosas acerca del texto en HTML. Ahora vamos a ver cómo podemos darle a ese
texto algunos efectos simples para modificar su apariencia.
<html>
<head>
<title>
Ejemplo de efectos simples
</title>
</head>
<body>
<b>
Esto es letra negrita.
</b>
<br>
<i>
Esto es letra cursiva
</i>
<br>
<u>
Esto aparece subrayado
</u>
<br>
<s>
Esto aparece tachado
</s>
<br>
Este texto no tiene efectos.
> </body>
</html>
Con esto ya tenemos unos efectos aplicados, que nos permiten hacer bastantes cosas. Dese cuenta de
lo extremadamente fácil que resulta, en HTML, darle a un texto la apariencia adecuada en cada caso.
Aunque poco a poco, iremos viendo otros efectos más complejos, la filosofía de este lenguaje es la
facilidad de uso.
Eso no quiere decir que sea “coser y cantar”, por supuesto. Cuando lleguemos a conocer el DHTML,
veremos que todo lo que ahora modificamos de forma sencilla, se puede modificar también de otro
modo más sofisticado, aunque desde luego, más eficiente.
Elegir una técnica u otra dependerá, en todo caso, de cada diseño puntual. Sólo con la práctica,
podremos saber qué tipo de trabajos debe hacer en cada caso.
También podemos cambiar varios efectos en un sólo texto. Veamos un ejemplo. Teclee el siguiente
código y almacénelo como efectos_simples_2.htm.
<html>
<head>
<title>
Ejemplo de efectos simples
</title>
</head>
<body>
<b><i><u>
Esto es letra negrita, cursiva y subrayada.
</u></i></b>
<br>
Este texto no tiene efectos.
</body>
</html>
<html>
<head>
<title>
Ejemplo de efecto simple
</title>
</head>
<body>
<b><i><u>
Esto es letra negrita, cursiva y subrayada.
</b></i></u>
<br>
Este texto no tiene efectos.
<body>
</html>
Este código sería incorrecto, ya que los tres tags que se encuentran anidados se cierran en el mismo
orden en que se han abierto. Es decir, no están realmente anidados, sino más bien, solapados. En este
caso concreto, el código funciona igual, debido a que los tags que hemos empleado son muy
sencillitos.
Sin embargo, esto es una excepción. Lo normal si se emplean tags solapados, en lugar de anidados, es
que se produzcan fallos imprevisibles.
Podemos necesitar usar un texto como un encabezamiento o titular de otro texto, como si fuera un
artículo de un periódico. Veamos cómo hacerlo. Teclee el siguiente código y guárdelo como
encabezamiento_1.htm.
<html>
<head>
<title>
Encabezamientos
</title>
</head>
<body>
<h1>
Esto es el titular
</h1>
Esto es el texto normal. <br>
Como ve, continua debajo del titular
</body>
</html>
26
de párrafo, aunque en la mayoría de los casos, es preferible controlar nosotros mismos los saltos de
párrafo, cambios de tamaño y otros efectos. No se preocupe. Con el tiempo y la experiencia,
aprenderá a crear los textos como usted desee, con toda flexibilidad.
Se emplean distintos tags para titulares, sub-titulares, notas de pie, etc., simplemente cambiando el
número 1 que aparece en este tag por otro número (hasta 6), tal como muestra el siguiente ejemplo.
Teclee el código y guárdelo como encabezamiento_2.htm.
<html>
<head>
<title>
Encabezamientos
</title>
</head>
<body>
<h1>Esto es texto con h1. </h1>
<h2>Esto es texto con h2.</h2>
<h3>Esto es texto con h3.</h3>
<h4>Esto es texto con h4.</h4>
<h5>Esto es texto con h5.</h5>
<h6>Esto es texto con h6.</h6>
Esto es el texto normal.<br>
Como ve, continúa debajo del titular.
</body>
</html>
Ahora supongamos que estamos creando una página web de temas matemáticos. Es posible que
tengamos que emplear superíndices para representar determinadas fórmulas o expresiones aritméticas.
Veamos cómo hacerlo. Teclee el siguiente código y grábelo como índices_1.htm.
27
<html>
<head>
<title>
Superíndices y Subíndices
</title>
</head>
<body>
Esto es un texto normal
<sup>
Esto es un superíndice
</sup>
<br>
Esto es texto normal
<sub>
Esto es un subíndice
</sub>
</body>
</html>
Como ve, el texto comprendido entre los tags <sup> y </sup> aparece como superíndice. El texto
comprendido entre los tags <sub> y </sub> aparecen como subíndices. Estos tags no general saltos de
línea ni de párrafo, y no reciben ningún atributo.
Veamos otro efecto que le podemos dar al texto. Como ya sabe, cuando introducimos texto en el
código no se mantienen los saltos de línea a menos que lo indiquemos específicamente mediante <br>
u otro sistema. Además el navegador tampoco respeta las tabulaciones, ni varios espacios, ni líneas
vacías… en fin, prácticamente nada. Sin embargo, existe un pequeño truco para engañar al navegador
y hacerle que respete el formato original del texto. Teclee el siguiente código de ejemplo y grábelo
como formateo_1.htm.
<html>
<head>
<title>
Uso de preformato
</title>
28
</head>
<body>
Esto es una línea de texto con varios
espacios en blanco.
Esto es otra línea
con tabulaciones.
Esto está tres líneas más abajo
<body>
</html>
<html>
<head>
<title>
Uso de preformateo
</title>
</head>
<body>
<pre>
Esto es una línea de texto con varios espacios en blanco.
Esto es otra línea con tabulaciones
Esto está tres líneas más abajo.
</pre>
</body>
</html>
Fíjese que ahora se presenta, exactamente el formato que le dimos al texto en el código. Sin embargo,
aparece un efecto inesperado: ha cambiado el tipo de letra. Por defecto, el navegador usa la tipografía
conocida como Times Roman.
29
Cuando empleamos el tag <pre> la tipografía por defecto es la que se conoce como Courier New.
Todo eso podemos cambiarlo mediante el uso del tag <font> que veremos en el siguiente apartado.
Si lo que queremos es, simplemente sangrar el texto sin más, podemos encerrar el texto que deseamos
que aparezca sangrado entre los tags <blockquote> y </blockquote>. Teclee el siguiente listado y
guárdelo como sangrado_1.htm.
<html>
<head>
<title>
Uso de sangrados
</title>
</head>
<body>
Texto normal. No aparece sangrado.
<blockquote>
Texto sangrado.<br>
Más texto sangrado.
</blockquote>
Este texto es normal
</body>
</html>
Como ve, el uso del tag <blockquote> introduce un sangrado en el texto. Además también introduce
un salto de párrafo cuando se abre <blockquote> y otro cuando se cierra </blockquote>
Cómo configurar partes independientes del hipertexto HTML para una página Web en colores,
tipografía y tamaño del texto.
30
Ya sabemos cómo aplicar algunos efectos sencillitos al texto, la verdad es que, con la combinación
adecuada de esos efectos “sencillitos” ya se pueden obtener bastantes cosas. Sin embargo, vamos
aprender a sacarle más jugo al texto.
Aquí vamos aprender a configurar partes independientes del texto, en color tipografía y tamaño.
En la introducción de esta sección vimos cómo darle un color al texto de toda la página mediante el
atributo text del tag <body>. Prescindamos ahora de ese atributo y vamos a reconfigurar el texto de
toda la página mediante el tag <basefont>. Teclee el siguiente código y grábelo como fuentes_1.htm.
<html>
<head>
<title>
Uso de fuentes
</title>
</head>
<body>
<basefont color=”#0000FF”>
El texto de esta página está en color azul. <br>
Así lo hemos determinado mediante <br>
El uso de basefont.
</basefont>
</body>
</html>
Estos cambios de tamaño no tiene nada que ver con los encabezamientos de h1 a h6 que vimos en el
apartado anterior. El tamaño de la letra con <basefont> puede ir de 1 a 7, siendo que el 1 es la letra
más pequeña y el 7 la más grande. El tamaño por defecto de la letra es el equivalente al valor 3. Esto
lo hacemos con el atributo size. Teclee el siguiente código y guárdelo como fuentes_2.htm.
<html>
<head>
31
<title>
Uso de fuentes
</title>
</head>
<body>
<basefont color=”0000FF” face=”arial” size=2>
El texto de esta página está en color azul. <br>
Así lo hemos determinado mediante <br>
El uso de basefont.
</basefont>
</body>
</html>
<html>
<head>
<title>
Uso de fuentes
</title>
</head>
<body>
<basefont color=”0000FF” face=”arial” size=2>
En esta página vamos a ver <br>
Un uso cambiado de Font y basefont. <br>
El texto de esta página está en color azul. <br>
Así que hemos determinado mediante <br>
El uso de basefont. <br>
<Font color=”FF0000 face=”comic sans ms” size=4>
Este texto aparece <br>
Afectado por el tag font. <br>
</font>
Aquí volvemos al texto <br>
Normal de la página. <br>
</basefont>
</body>
</html>
32
El resultado de la ejecución de este código se ve en la siguiente figura:
En ella puede apreciar cómo poco a poco, vamos adquiriendo mayor libertad para darle a cada parte
de nuestro documento el aspecto que nos apetezca. De esta forma, podemos lograr unos acabados
bastante atractivos para nuestro texto.
Observe que las propiedades del tamaño equivalen a 4, color rojo y tipografía Comic Sans MS sólo
afecta al texto comprendido entre <font> y </font>.
En el tag <font>, el atributo size se puede fijar de forma absoluta o relativa. Se establece el valor de
size de forma absoluta cuando se le pasa, como en el ejemplo anterior, directamente entre 1 y 7. Se
establece el valor de forma relativa cuando le pasamos un número precedido del signo + o del signo -.
En ese caso, el valor es relativo al tamaño por defecto del texto de la página. Vamos a aclarar esto.
Supongamos el ejemplo que acabamos de ver, fuentes_3.htm. En el tag <basefont> le pasamos el
atributo size con el valor 2. Por lo tanto, el tamaño por defecto del texto de la página es 2. Ahora, en
el tag font vamos a sustituir el atributo size=4 por size=+2. El resultado es el mismo, ya que toma el
tamaño por defecto 2 y le suma 2, obteniendo el tamaño de 4. Si le pasamos el tag font el atributo
size=+7, el resultado sería 9, pero como el valor máximo permitido es 7, en 7 se queda.
Y algo más sobre las tipografías. Hemos visto que podemos establecer la tipografía del texto citando
el nombre de la fuente. Sin embargo, es preciso que el archivo que contiene esa tipografía esté,
físicamente, presente en el disco duro del ordenador. Las tipografías se almacenan en archivos con la
extensión .ttf o bien con la extensión .fon. No olvide que está trabajando para la red. Si su página la
visita un usuario que no tiene en su ordenador las tipografías que usted ha empleado, el navegador
buscará, por su cuenta, la tipografía por defecto (Times New Roman) y la usará. Por esta razón, si
emplea fuentes muy exóticas, es posible que su página quede de lujo… en su ordenador, pero que
nadie más pueda verla tal como usted la diseñó. Vamos, que a la hora de diseñar, citase a fuentes lo
más estándar posible, para estar razonablemente seguro de que todos los usuarios podrán ver bien su
página. Y, aunque use tipografía estándar, es posible que alguna de ellas no exista en el ordenador del
usuario. Para prever esto, lo que hacemos es que, al usar el atributo face del tag <font> o <basefont>
ponemos una lista de varias tipografías, separadas por comas, como en la siguiente línea de código.
33
De esta forma lo que hacemos es proporcionarle alternativas al navegador, de tal forma que, una vez
descargada la página en el ordenador del usuario, se buscará la primera de las fuentes citadas. Si no la
encuentra, se buscará la segunda, y si no existe, se buscará la tercera. Sólo en el caso de que no exista
ninguna de las tres, se recurrirá a la fuente por defecto. Lo que haremos será, por tanto, incluir una
lista de varias fuentes (normalmente tres o cuatro) que sean lo más estándar posible (y además
parecidas entre sí) para que el ordenador que no tenga una tenga otra y el resultado final sea aceptable
en todos los ordenadores.
La tipografía puede alterar el significado que asociamos a un diseño. Debemos saber que el texto
puede decir una cosa; las letras, otra muy diferente.
En una composición gráfica o página web cualquiera, los contenidos textuales son los principales
responsables de la transmisión del mensaje al espectador final.
Cuando diseñamos debemos tener claro que la tipografía es parte del diseño, que transmite cualidades
propias dependiendo de sus características. Los caracteres matizan las palabras y le aportan o
refuerzan el sentido.
Junto con el color, la tipografía puede alterar por completo el significado que asociamos a un diseño.
Es importante saber que el texto puede decir una cosa; las letras, otra muy diferente.
Aquí se encuentran 10 tipografías para un diseño limpio, en los cuales los elementos gráficos están en
un segundo plano y lo importante es el contenido. La tipografía juega un papel importante en este tipo
de diseño.
Museo Sans
Oregon LDO
Sansation
34
Engel Light
Comfortaa
Walkway
Mank Sans
Opticon One
Para incluir letras propias del alfabeto en castellano es necesario usar códigos HTML que nos
permitan visualizar correctamente el texto en la página.
<html>
<head>
<title>
Secuencias especiales
</title>
35
</head>
<body>
Teléfono
</body>
</html>
Si ejecuta está página en su navegador, verá, en el área de navegación, la palabra Teléfono, tal como
cabría esperar. Sin embargo, es posible que su página la visite, por ejemplo, un usuario de la
República Popular China. Éste tendría su navegador configurado para el alfabeto chino. Nosotros
vamos hacer que nuestro navegador se comporte como si fuera chino, a fin de ver cómo vería este
usuario su página.
Para ello ejecutamos la página y, en la ventana del navegador nos vamos a la barra de menús.
Pulsamos sobre el botón “ver” En este menú elegimos la opción “Codificación”. A su vez se abre otro
submenú. Elegimos la opción “Más” que abre otro submenú. Dentro de este último elegiremos la
opción “Chino simplificado (HZ)” En este momento nuestro navegador está preparado para el juego
de caracteres chino. El resultado de la ejecución de la página lo vemos en la siguiente figura.
Como ve, se ha cargado la é acentuada (y, de paso la f) y la ha sustituido por un guarismo chino.
Puede hacer pruebas con distintas codificaciones y ver que la é acentuada se sustituye por diferentes
caracteres. Esto es así porque la é acentuada es un carácter de un alfabeto local: el español (y creo que
también el francés) – En efecto señor autor.
Todos los navegadores, en cualquier codificación, pueden mostrar sin problemas los caracteres
universales (los del alfabeto inglés), pero no los caracteres locales de otros idiomas. Así que, ¿Cómo
hacemos para que nuestro amigo chino, al que llamaremos Chin-Fu, pueda ver correctamente nuestra
página y disfrutar de tan magna obra de arte? Pues muy sencillo. En la palabra Teléfono sustituiremos
la é acentuada por la secuencia é para que el listado quede como vemos a continuación:
<html>
<head>
<title>
Secuencias especiales
</title>
</head>
<body>
Tel éfono
</body>
</html>
Grábelo como secuencias_2.htm y ejecútelo. Ahora verá la palabra correcta escrita en cualquier
codificación que le ponga al navegador. Ya podemos extasiar a nuestro buen amigo Chino-Fu con
nuestra sabiduría (y también a Piotr Kolinsky, a Stavros Padapoulos y cualquier otro amiguete de
cualquier parte del mundo). Bueno. Después de hacer esta prueba, no olvide volver a poner la
codificación “Europeo occidental Windows” en su navegador. La lista completa de secuencias para
representar caracteres especiales la tienen en el apéndice “D” en él aparecen las secuencias y los
caracteres que generan. Estas secuencias se conocen como entidades con nombre.
36
Acentos HTML - Secuencias especiales y Entidades por nombre
Veamos otro caso en el que vamos a necesitar entidades con nombre, independientemente de la
codificación de nuestro navegador. Supongamos que estamos escribiendo una página web que es un
tutorial de HTML. En este tutorial queremos hablar del tag <body> y queremos que aparezca en la
pantalla exactamente así: La palabra <body> con los dos ángulos al principio y al final. Podríamos
pensar que el listado sería algo así:
<html>
<head>
<title>
Secuencias especiales
</title>
</head>
<body>
En este tutorial se habla del tag <body>.
Espero que le guste.
</body>
</html>
Esto es así porque la parte que pone <body> al final de la primera línea del texto no es interpretada
por el navegador como un texto más, sino como un tag. En este caso el navegador interpreta que
estamos intentando abrir de nuevo el <body>, ya que está abierto. Por lo tanto, no se comporta como
esperábamos. No se produce un error que pare la página, ni nada parecido, debido a la proverbial y, en
ocasiones, molesta flexibilidad del lenguaje, pero no funciona correctamente. Lo que vamos hacer
para arreglar este desaguisado es sustituir, en el texto, los angulitos por las
secuencias < y > como vemos en el siguiente listado, que grabaremos como secuencia_4.htm.
<html>
<head>
37
<title>
Secuencias especiales
</title>
</head>
<body>
En este tutorial se habla del tag <body>.
Espero que le guste.
</body>
</html>
Ahora lo probamos y es todo correcto. También estas secuencias y cualquier otra que pueda necesitar
las tiene listadas en el apéndice “D”. Existe una forma alternativa mucho más potente de incluir
secuencias que producen a estos caracteres que no deben ser tecleados sin más como texto: Se trata de
emplear lo que se conoce como entidades numéricas. Casi la totalidad de los caracteres del código
ASCII pueden generarse de esta manera, empleando para ello la sintaxis &#nnn; donde nnn es un
número basado en el código ASCII del carácter que queremos representar, expresado con tres cifras
(en realidad, no siempre coinciden con el ASCII sino que sólo se basa en él).
Lo vamos a ver más claro con un ejemplo. Supongamos en código anterior. Nuestro problema serán
los angulitos < y >, que habíamos representado mediante las entidades con nombre < y > en el
anterior código. En este ejemplo, al que llamaremos secuencias_5.htm. Vamos a emplear las
entidades numéricas, los códigos ASCII los angulitos < y > son, respectivamente 60 y 62. El código,
pues, quedaría como sigue:
<html>
<head>
<title>
Secuencias especiales
</title>
</head>
<body>
En este tutorial se habla del tag <body>.
Espero les guste.
</body>
</html>
Al ejecutar la página hemos obtenido el resultado correcto. Una vez más le recuerdo que el apéndice
“D” recoge todas las entidades que puede incluir en sus páginas en ambos formatos.
La etiqueta hr nos permite generar una separación entre secciones de contenido. Se puede combinar
con otros tags como encabezados h1- h6 y párrafos p.
Cuando en una página tenemos mucho texto es conveniente, de cara a la presentación, separar de
forma clara y visible. Para ello, la solución más simple, aunque sumamente eficaz, es el uso de las
líneas horizontales entre los distintos bloques de contenidos.
38
Para generar una línea empleamos el tag <hr>. Las letras hr son el acrónimo de horizontal rule (línea
horizontal). Vamos a ver un código de ejemplo, que grabemos con el nombre líneas_1.htm.
<html>
<head>
<title>
Líneas horizontales
</title>
</head>
<body>
<p>
Esto es un p árrafo de texto
<p>
<hr>
<p>
Esto es otro p árrafo.
</p>
</body>
</html>
Vamos a ver un ejemplo de ambos, para aclara este concepto. En primer lugar, teclee el código que
aparece a continuación y grábelo como líneas_2.htm.
<html>
<head>
<title>
Líneas horizontales
</title>
</head>
<body>
<p>
Esto es un p árrafo de texto
<p>
<hr width=400>
<p>
Esto es otro p árrafo.
</p>
</body>
</html>
39
Fíjese en el resultado de este código como se ve en la figura:
La línea tiene ahora 400 pixeles de largo (cubre una anchura de 400 pixeles). Observe que, si cambia
el tiempo de ejecución el tamaño de la ventana del navegador, la línea no varía del tamaño: sigue
teniendo 400 pixeles. Ahora mire esta variante del código, que grabaremos como líneas_3.htm.
<html>
<head>
<title>
Líneas horizontale
</title>
</head>
<body>
<p>
Esto es un p árrafo de texto
<p>
<hr width=50%>
<p>
Esto es otro p árrafo.
</p>
</body>
</html>
Observe que el resultado es parecido al caso anterior, pero en esta ocasión el tamaño es un porcentaje
del ancho de la ventana, de forma que, si varía la anchura de la ventana durante la ejecución, también
cambia el tamaño de la línea, para tener siempre el porcentaje indicado. A este respecto (y ya para que
lo sepa en el futuro) le comento que si tiene en su monitor una resolución de 800 x 600 píxeles
(resolución muy habitual hoy en día), el tamaño del área de navegación, con la ventana del navegador
maximizada es de 760 x 420 píxeles. Si la resolución de su monitor es de 1024 x 768 el tamaño del
área de navegación es de 955 x 600 píxeles. Ahora, puede no parecer importante esto, pero cuando
usemos otros elementos en nuestra página será vital tener en cuenta estos tamaños para lograr un buen
diseño.
Fíjese en una cosa: así como el texto se alinea, por defecto, a la izquierda de la página, las líneas
horizontales toman, por defecto la alineación centrada. Esto también podemos modificarlo, usando,
para ello, el atributo align, que podrá recibir los valores “left", “center" (defectivo) o “right". Observe
el siguiente código, que grabaremos como lineas_4.htm.
<html>
<head>
<title>
40
Líneas horizontales
</title>
</head>
<body>
<p>
Esto es un p árrafo de texto
<p>
<hr width=50% align="right">
<p>
Esto es otro p árrafo
</p>
</body>
</html>
El resultado de éste código es similar a los anteriores, pero con la línea colocada a la derecha de la
página, tal como muestra la figura:
<html>
<head>
<title>
Lí:neas horizontales
</title>
</head>
<body>
<p>
Esto es un p árrafo de texto
<p>
<hr width=50% align="right" size=20>
<p>
Esto es otro p
árrafo.
</p>
</body>
</html>
41
Este código genera una página como se muestra a continuación:
En ella, puede apreciar el efecto de transparencia de la barra horizontal. No se trata de un efecto muy
ortodoxo (no era la idea cuando se creó este tag), pero puede resultar interesante en un momento dado.
En seguida aprenderemos a dar color a la barra.
Cómo ve la línea tiene ahora un espesor de 20 píxeles. Además la línea es transparente, es decir,
adopta el color de fondo; esto lo puede verificar cambiando el color de fondo. El valor máximo que le
podemos pasar al atributo size es 100, es decir, para lograr una línea con un espesor de 100 píxeles
(que ya está bien). Si no quiere que la línea sea transparente, sino opaca, añade el atributo noshade,
con el valor “noshade". El código aparece a continuación, lo grabaremos como líneas_6.htm.
<html>
<head>
<title>
Líneas horizontales
</title>
</head>
<body>
<p>
Esto es un párrafo de texto
<p>
<hr width=50% align="right" size=10 noshade="noshade">
<p>
Esto es otro párrafo.
</p>
</body>
</html>
<html>
<head>
<title>
42
Líneas horizontales
</title>
</head>
<body>
<p>
Esto es un párrafo de texto
<p>
<hr width=50% align="right" size=20 color="#FF0000">
<p>
Esto es otro párrafo.
</p>
</body>
</html>
div y span HTML - ¿Qué son, para qué sirven? Ejemplo de uso
Los tags div y span no tienen ningún significado especial, sólo que la primera se define como un
elemento bloque y la segunda es un elemento de línea.
43
Espacio que ocupan las etiquetas div y span
A continuación se muestra un ejemplo real de página en la cual se visualizan los bordes para varios
elementos en el cual se puede comprobar el espacio que ocupan cada tipo de elemento.
Un uso muy común de las mismas era también para establecer el diseño del documento mediante
hojas de estilo. Aunque actualmente con la nueva versión de HTML5 que proporciona etiquetas para
establecer dicho diseño, se recomienda la utilización de las nuevas etiquetas en sustitución de div y
span.
La sustitución de las etiquetas div y span, por la nuevas etiquetas semánticas de HTML5, se ofrece
como alternativa recomendándose la utilización de las ultimas, pero muchos desarrolladores web,
siguen utilizando para establecer divisiones de sección, artículos, etc., en sus documentos las etiquetas
div y span. Aunque también todavía hay programadores que para maquetar el diseño del documento
siguen utilizando tablas, esta última opción ya no es recomendada por el consorcio W3C.
Las dos etiquetas en esta última versión del lenguaje no disponen de atributos que aplicar a las
mismas.
44
El siguiente ejemplo muestra el uso de ambas etiquetas en un documento web.
<!DOCTYPE HTML>
<html>
<head>
<title>Ejercicios prácticos HTML5</title>
<meta charset="utf-8">
</head>
<body>
<p>Elementos de bloque y línea</p>
<div style="color:#0000FF">
<h3>Encabezado de tipo 3</h3>
<p>Párrafo con formato aplicado.</p>
</div>
<div>
<p>Párrafo con formato <span style="color: blue">aplicado</span> a
un elemento en línea</p>
</div>
</body>
</html>
45
Al considerar el estilo de diseño de un sitio web, es importante tener en cuenta:
El propósito previsto
La audiencia objetivo del diseño
Los recursos disponibles para el sitio web (texto, imágenes, videos y enlaces)
Sus propias preferencias de diseño y cualquier marca existente, cómo:
o logotipo o material de marketing impreso
Las necesidades del cliente
Cada uno de ellos definirá gran parte las opciones de diseño que se realicen.
Reconocemos que no siempre es fácil saber el estilo que busca y hemos descubierto que la mejor
manera de tener una buena idea utilizar la técnica de benchmarking y navegar por los mejores sitios
web de su industria.
Y aunque la mayoría de los diseños tendrán componentes de creación similares, cada sitio web
incorporará sus características, elementos y estilo específicos para crear algo que se adapte a las
necesidades de la empresa u organización específica para la que se desarrolló.
El proceso de personalización del diseño es simplemente una cuestión de reconocer cuál es la mejor
manera de presentar el contenido del sitio web.
Al evaluar un sitio web, revise cada uno de los siguientes puntos y tome nota sobre lo que funciona y
lo que no para cada sitio web al que proporcione un enlace.
Tenga en cuenta que la mayoría de los sitios web por convención, utilizan los mismos elementos
comunes; es decir:
46
El header/cabecera en la parte superior
Seguida de la nav/navegación
El article/contenido del cuerpo
El aside/barras laterales
Y el footer/pie de página
Si bien la mayoría de los diseños son estructuralmente similares, las opciones de estilo y el uso y la
ubicación del contenido en el diseño es lo que proporciona la diversidad necesaria. En la práctica de
diseño actual, todos los diseños incluirán:
Dimensiones de la página
Pocas páginas web tienen un tamaño inferior a 940 píxeles de ancho. Esto asegura que las páginas se
vean bien en la resolución del navegador de 1024×768. Las páginas receptivas suelen ser más anchas
que esto para adaptarse mejor a las resoluciones más grandes, y las páginas solo para dispositivos
móviles se diseñarán para verse bien con un ancho de 320 píxeles.
Todos los diseños modernos utilizarán un sistema de cuadrícula de columnas en el que cada columna
tiene un ancho definido y márgenes entre columnas definidos (generalmente 20px). Un sistema de
cuadrícula permite la creación de columnas en un diseño asignando una clase de columna CSS a la
capa div.
Estilo de fondo
Un fondo puede ser un color sólido, una imagen de tamaño completo (desplazable o fija) o un fondo
de pantalla en mosaico.
Colores de página
Los diseños efectivos utilizarán una paleta de colores consistente con una opción de color primario y
algunas armonías de color o complementos.
Los colores correctos se definen mejor probando primero el logotipo para garantizar una integración
efectiva, teniendo en cuenta la industria y el público objetivo. Si no tiene un logotipo con color o
colores existentes definidos, puede ser útil identificar si su página web se vería mejor con una paleta
de primavera, verano, invierno u otoño.
Tipografía
El tipo de letra utilizado para la web será con mayor frecuencia una fuente sans-serif para el área de
contenido del cuerpo en aras de la legibilidad, aunque los títulos de los encabezados suelen ser fuentes
serif para proporcionar una diferenciación visual.
Arial
47
Tahoma
Verdana
Trebuchet MS
Para las fuentes Serif, las mejores familias de fuentes para la web son:
Georgia
Palatino Linotype
Times New Roman
En el diseño contemporáneo, la práctica común es usar un color gris oscuro para el texto (no negro
puro) y evitar el uso de texto en color en la mayoría de los casos.
También es una buena práctica no usar negrita, cursiva, mayúsculas o mezclar familias de fuentes más
allá de un tipo para los encabezados y un tipo para el resto del texto.
Las fuentes de Google Fonts se han vuelto populares, pero considere no agregar más de tres fuentes
distintas por página.
Esta es la sección más alta de una página web y es donde muchas empresas agregan su número de
teléfono, dirección de correo electrónico y pequeños íconos de redes sociales. En algunos diseños
modernos, el logotipo también se incluirá aquí.
La sección directamente debajo de la barra de título es donde se coloca el logotipo. Por lo general,
esta área proporciona un logotipo "rectangular" alineado a la izquierda, con un lema/eslogan
adyacente a él a la derecha.
Los logotipos más grandes (redondos y verticales) normalmente deberán centrarse o agregarse en la
parte superior de una barra lateral izquierda.
Encabezado (masthead)
Debajo del logotipo se encuentra el área del encabezado. En el pasado, esto habría sido típicamente
una imagen singular; en la práctica de diseño actual, esto normalmente será una presentación de una
imagen Hero o slider con carrusel de imágenes.
Navegación
El "nivel superior" del menú horizontal típico constará de 8 o menos palabras de enlace de menú
"breves" para garantizar que encajen bien en una línea.
También es importante garantizar un buen contraste visual entre las palabras y el fondo en aras de la
legibilidad. Si se necesitan enlaces de menú adicionales, se utiliza un submenú (desplegable).
48
El tercio superior de la página es el área "en la mitad superior de la página" que los motores de
búsqueda indexan con mayor frecuencia, por lo que es importante asegurarse de que tenga un amplio
texto enriquecido con palabras clave y brinde un resumen general de tu artículo.
Una descripción detallada en la parte superior que indica claramente de qué se trata el sitio web y los
servicios disponibles.
Barras laterales
Las barras laterales se utilizan con mayor frecuencia en las páginas interiores y es un excelente lugar
para proporcionar contenido adicional, como:
Información de contacto
Formularios de contacto breves
Testimonios
Navegación adicional (conocida como menús de barra lateral)
Llamadas a la acción
Información de recursos y relacionados
Redes Sociales
Videos corporativos o elementos multimedia
Elementos de contenido
Para las empresas de servicios, una práctica común es utilizar un diseño de tres o cuatro columnas en
el que se agrega a una columna una imagen representativa que refleja cada servicio, seguida del título
del servicio, una breve descripción y un enlace a esa página.
Sistemas tabulares
Conmutadores/acordeones
Testimonios de desplazamiento
Videos incrustados
Carruseles de imágenes
Presentaciones de diapositivas
Lo importante es asegurarse de que las páginas se vean completas al incluir suficiente contenido, sin
sobrecargarlo.
El pie de página (como la barra de título) es coherente en todas las páginas y se coloca debajo del área
de contenido del cuerpo.
El pie de página se presenta con mayor frecuencia en un formato de tres o cuatro columnas.
Esta área se usa generalmente para proporcionar información general de la empresa, como:
Áreas de servicio
Íconos de redes sociales
Sitemap o recursos clave
Testimonios
Imágenes en miniatura de contenido visual importante
Etc.
49
Sub-pie de página
El sub-pie de página es la barra inferior de la página, también es consistente en todas las páginas. Esto
se usa generalmente para:
Una consideración importante al agregar contenido a sus páginas es cómo y dónde colocarlo. Para que
el contenido se vea bien en un diseño, generalmente recomendamos:
Cuando haya dos o más columnas, asegúrese de que la longitud vertical sea muy cercana
entre ellas; esto es especialmente importante con columnas de pocas líneas. Si está utilizando
una estructura de dos columnas, es mejor si la primera columna (izquierda) tiene la misma
cantidad o un poco más de texto que la segunda columna (derecha). En la mayoría de las
situaciones, la alineación a la izquierda es mejor para los títulos de página y la copia de texto.
La mayoría de las páginas web incluirán páginas de ancho completo y páginas de barra
lateral. En la mayoría de los casos, es mejor usar una barra lateral derecha que una barra
lateral izquierda. La principal excepción es cuando se utiliza la barra lateral izquierda para
navegación complementaria; y es mejor mantener la coherencia con la ubicación de la barra
lateral (todas alineadas a la izquierda o todas alineadas a la derecha).
Por lo general, es mejor alinear el contenido de texto a la izquierda. Hay algunas excepciones
aquí, como un título debajo de una imagen, o si elige tener todos los encabezados de página
centrados, pero lo importante es la coherencia en el uso en todas las páginas.
La posición de la imagen dentro de la copia de la página generalmente se ve mejor alineada a
la derecha y no mayor a 300px de ancho a menos que la imagen sea necesaria para abarcar
todo el ancho de la página.
Al agregar imágenes a las páginas, asegúrese siempre de que haya suficiente espacio (margen
o relleno) entre la imagen y la copia de texto adyacente o la columna en sí. Por lo general,
20px es la cantidad correcta. Para diseñar esto apropiadamente para la alineación correcta,
simplemente agregue la imagen en una capa div como: <div style="float: right; padding-left:
20px"> fuente de la imagen </div> Esto asegurará que haya espacio a la izquierda. También
puede agregar espacio en la parte superior e inferior de la imagen si es necesario.
Evite las propiedades de alineación de imagen predeterminadas en la mayoría de los casos.
Los diseños receptivos no funcionan bien con esto, por lo que usamos capas div, como se
indicó anteriormente, o colocamos la imagen dentro de una columna de tamaño apropiado.
Utilice listas con viñetas cuando proporcione una lista breve de contenido. Esto solo hace que
el texto sea más fácil de leer y los estudios han demostrado que las personas a menudo leen
listas con más facilidad que solo texto en una página.
Evite la justificación del texto a menos que sea absolutamente necesario. El texto justificado
cambiará según las resoluciones de visualización y, en dispositivos más pequeños, se verá
horrible.
Evite muchas oraciones declarativas cortas en el cuerpo del texto. Claro, está bien para las
listas, pero cuando se usa como un artificio para llamar la atención de la gente, transmite la
impresión de exigir la atención de uno, similar al uso excesivo de encabezados, texto en
negrita, texto en cursiva, texto en rojo y texto en mayúsculas.
Evite el uso excesivo de imágenes, pero asegúrese de tener suficientes. Las personas son
visuales, por lo que las imágenes son absolutamente necesarias, pero cuando se agregan
demasiadas imágenes a una página, puede perder su atractivo profesional. Si se necesitan
muchas imágenes, es mejor ajustarlas a un tamaño pequeño y luego vincularlas a la
representación más grande.
Utilice los colores de página y la tipografía adecuados para su público objetivo, al tiempo que
se asegura de que todos puedan leer fácilmente la copia al proporcionar un buen contraste
50
entre el color de la imagen y su fondo. Más sobre esto en nuestra página de tipografía y
colores.
La ortografía y la gramática revisan toda la copia de su página. Esto es importante no solo
para que sus páginas web se perciban como profesionales, sino que se sabe que los motores de
búsqueda reducirán la clasificación de un sitio que contiene muchos errores.
Respete las convenciones de diseño y a su vez sea creativo creando un estilo único que cautive al
visitante de Internet y lo motive a regresar a su sitio Web.
Un elemento HTML sólo puede tener un ID que pertenezca a ese único elemento, mientras que varios
elementos pueden usar un nombre de clase.
El beneficio de esto es que puede tener el mismo elemento HTML, pero presentarlo de manera
diferente según su clase o ID.
#top {
background-color: #ccc;
padding: 20px
}
.intro {
color: red;
font-weight: bold;
}
El HTML se refiere al CSS utilizando los atributos idy class. Podría verse más o menos así:
<div id="top">
<h1>Cerry de chocolate</h1>
<p class="intro">Esta es mi receta para hacer curry con chocolate</p>
<p class="intro">Mmm mm mmmmm</p>
</div>
51
La diferencia entre una ID y una clase es que una ID se puede usar para identificar un solo elemento,
mientras que una clase se puede usar para agrupar más de uno.
También puede aplicar un selector a un elemento HTML específico simplemente indicando primero el
selector HTML, por p.mermelada { /* lo que sea */ } lo que solo se aplicará a los elementos de
párrafo que tengan la clase "memelada".
Para insertar una imagen se utiliza la etiqueta img y los formatos más populares aceptados, son JPEG,
GIF y PNG. Aunque se pueden utilizar muchos más.
Se ha de tener en cuenta que el tamaño de las imágenes influye en el proceso de carga de la página. Y
por tanto se suelen preparar las imágenes para que su “peso" (“tamaño en bytes"), sea menor,
observando que la imagen obtenga la menor pérdida de calidad de visualización en el proceso.
Los atributos que pueda utilizar la etiqueta, aparte de los globales, son los siguientes.
src
El atributo src, permite especificar el origen de la imagen, es decir su ubicación, bien mediante una
ruta absoluta o relativa.
Las posibles formas de sintaxis para definir esta etiqueta con el atributo src son las siguientes:
height
52
Siempre que se especifique el ancho y alto de la imagen, el navegador reservara el espacio
correspondiente para la imagen cuando se produzca la carga del documento.
El especificar ancho y alto de la imagen, no significa que se realice una reducción o ampliación del
tamaño en bytes de la imagen, es decir la imagen se ha de leer completa, independientemente del
tamaño especificado.
Si se especifica un tamaño que no siendo el tamaño real de la imagen, se puede producir un efecto de
pixelado o dientes de sierra, con la respectiva pérdida de calidad en la visualización de la imagen.
Si se quiere realizar cambios de tamaño, escalado, calidad, etc. Sobre la imagen se han de hacer sobre
la misma con algún tipo de programa especial, ya que ni el navegador ni el lenguaje realizan esta
función.
width
El atributo width, permite especificar el ancho de visualización de la imagen, con un valor numérico
en pixeles.
alt
El atributo alt, permite especificar un texto alternativo para la imagen. Este texto alternativo es
visualizado cuando se produce un error en el atributo src, la conexión fuese muy lenta o si el usuario
utiliza un lector de pantalla.
Algunos navegadores visualizan el texto de este atributo como una pequeña ventana emergente,
aunque no es el comportamiento correcto, para realizar la acción de visualizar la ventana emergente es
preferible utilizar el atributo title.
ismap
El atributo ismap, permite indicar que la imagen que se está cargando es una imagen considerada
como imagen de mapa de servidor, es decir una imagen que puede tener zonas seleccionables que
sirven como enlaces.
53
Es un atributo booleano, es decir no tiene valor asociado si aparece en una etiqueta de imagen, indica
que la misma es un mapa de imagen.
El atributo solo está permitido en caso de que la etiqueta de imagen sea descendiente de una etiqueta
de enlace con una referencia valida de enlace.
usemap
El atributo usemap, permite especificar que la imagen utilice un mapa de imagen con zonas
seleccionables, asociando la etiqueta con un mapa de imagen definido con la etiqueta <map>,
estableciendo de esta forma las zonas seleccionables de la imagen.
Como el atributo hace referencia a una etiqueta que define el mapa de imagen, comentamos la sintaxis
con la etiqueta asociada /lt;map>, la cual permite crear y definir las zonas, aunque es muy
recomendable utilizar programas que generen el código de las zonas, ya que las mismas se han de
establecer mediante coordenadas de pixeles y por tanto es bastante tedioso establecerlas.
<map name="NombreMapa">
<area shape="rect" coords="0,0,82,126" href="valorenlace" alt="valor">
<area shape="circle" coords="90,58,3" href="valorenlace" alt="valor">
<area shape="polygon" coords="124,58,8" href="valorenlace" alt="valor">
</map>
Como se puede observar la etiqueta <map> permite establecer zonas rectangulares, circulares o
poligonales. Por eso se recomienda utilizar un programa a libre elección del usuario, de los muchos
existentes para crear las imágenes y generar el código html del mapa de imagen.
Se ha de tener en cuenta que si se alterase una vez creado el mapa de imagen, las características de la
imagen se ha de volver a crear el mapa de imagen ya que las coordenadas podrían haber variado con
respecto a la imagen original.
<!DOCTYPE HTML>
<html>
<head>
<title>Ejercicios prácticos HTML5</title>
<meta charset="utf-8">
</head>
<body>
<img src="mapamundi.jpg" usemap="#Mapa1" alt="MapaMundi" />
54
<map name="Mapa1">
<area shape="rect" coords="310,61,410,133"
href="http://www.eu.com/" alt="Europa>
<itle="Europa" />
<area shape="rect" coords="141,64,284,291"
href="http://www.america.com/>
<lt="America" title="America" />
</map>
</body>
</html>
Existen tres tipos de listas en HTML que nos permiten organizar la información: listas numeradas,
listas desordenadas y las listas de definición.
Imagine que tiene un documento donde maneja una considerable cantidad de información.
Usualmente cuando existe esta situación, usted desea abreviar el tiempo para que cualquier persona
encuentre más rápida y eficientemente cierto punto de interés entre toda la cantidad de información
disponible, para lograr esto se recurre a elaborar algún tipo de lista (como un índice, por ejemplo).
En este punto se explorarán las posibilidades de HTML con respecto al uso de listas, como son: listas
numeradas, conocidas también como listas ordenadas, listas no numeradas llamadas también listas no
ordenadas y las listas de definición. También se aprenderá cómo anidar listas dentro de otras.
55
Listas numeradas y listas no numeradas
La etiqueta con cierre para listas no numeradas es <ul>, cada elemento de la lista utilizará un símbolo
llamado bullet. Para listas numeradas se usa la etiqueta <ol>, aquí, a cada elemento de la lista le
precederá un número. Al iniciar la lista se utiliza la etiqueta <ul> o bien la etiqueta <ol>, se coloca
cada elemento de la lista delimitado por la etiqueta <li> y su cierre </li>, y de inmediato se cierran
estas listas con </ul> o </ol> según sea el caso.
Tag UL
La etiqueta <ul>, permite definir una lista desordenada (“Unordered List”). Esta etiqueta es a su vez
contenedora de otras etiquetas, siendo estas últimas las que componen cada uno de los elementos de
los que está compuesta la lista.
Una lista puede contener como elemento de lista, otra lista, es decir se pueden crear listas anidadas.
<ul>
<li>Elemento de lista</li>
<li>Elemento de lista</li>
<li> … </li>
</ul>
<!DOCTYPE HTML>
<html>
<head>
<title>Ejercicios prácticos HTML5</title>
<meta charset="utf-8">
</head>
<body>
<p>Lista con elementos desordenados</p>
<ul>
<li>Uno</li>
<li>Dos</li>
<li>Tres</li>
</ul>
<ul>
<li>Primero</li>
<li>Segundo
<ul>
<li>Segundo Uno</li>
<li>Segundo Dos</li>
</ul>
</li>
56
<li>Tercero</li>
</ul>
</body>
</html>
Tag OL
La etiqueta <ol>, permite definir listas o viñetas ordenadas (“Ordered List”), bien con numeración o
alfabéticamente. Esta etiqueta es a su vez contenedora de otras etiquetas, siendo estas últimas las que
componen cada uno de los elementos de los que está compuesta la lista.
Una lista puede contener como elemento de lista, otra lista, es decir se pueden crear listas anidadas.
Los atributos que pueda utilizar la etiqueta, aparte de los globales, son los siguientes.
type
El atributo type, permite especificar el tipo de orden que se de aplicar a la lista, estableciendo de esta
forma que la lista se represente mediante diferentes tipos de numeración.
Los diferentes valores que puede recibir este atributo son los siguientes:
Valor Descripción
(1,2,3…)
start
El atributo start, permite indicar el valor de inicio, por el cual ha de comenzar la lista ordenada, siendo
este un valor numérico, en caso de ser la lista ordenada de forma alfabética, el valor de inicio que se
exprese, se corresponderá con el orden el abecedario ASCII correspondiente.
<ol start="valor">
<li>Elemento de lista</li>
<li>Elemento de lista</li>
<li> … </li>
</ol>
reversed
El atributo reversed, permite indicar que la numeración u orden que se haya establecido se represente
de forma inversa, si tuviéramos una lista con valor de inicio 1, 2, 3, sucesivamente, su representación
al encontrarse este atributo seria 3,2,1.
Es un atributo con valor booleano, en caso de aparecer el atributo en la etiqueta se aplica el valor.
<ol reversed>
<li>Elemento de lista</li>
<li>Elemento de lista</li>
<li> … </li>
</ol>
El siguiente ejemplo muestra el uso de las listas ordenadas utilizando variaciones sobre la misma.
<!DOCTYPE HTML>
<html>
<head>
58
<title<Ejercicios prácticos HTML5>/title>
<meta charset="utf-8">
</head>
<body>
<p>Lista ordenada numéricamente por defecto>/p>
<ol>
<li>Elemento</li>
<li>Elemento</li>
<li>Elemento</li>
</ol>
<ol type="a">
<li>Primero</li>
<li>Segundo</li>
<li>Tercero</li>
</ol>
Tag DL
La etiqueta <dl>, permite definir lo que se denominan, listas de definición, las cuales a su vez están
compuestas por un término, y una definición
Para realizar la lista se utilizan dos etiquetas más, la primera es <dt> </dt>, que permite especificar el
termino en la lista. Y otra etiqueta <dd> </dd>, que permite especificar la definición.
59
La sintaxis de la lista con las etiquetas correspondientes, es la siguiente:
<dl>
<dt>Termino a definir</dt>
<dd>Definición del termino</dd>
<dt>Termino a definir</dt>
<dd>Definición del termino</dd>
…
</dl>
El siguiente ejemplo muestra el uso de la etiqueta, creando una lista de definición de términos.
<!DOCTYPE HTML>
<html>
<head>
<title>Ejercicios prácticos HTML5</title>
<meta charset="utf-8">
</head>
<body>
<p>Listas de definición</p>
<dl>
<dt>BIOS</dt>
<dd>Basic Input Output System</dd>
<dt>RAM</dt>
<dd>Ramdon Access Memory</dd>
<dt>HTML5</dt>
<dd>Lenguaje de Marcado de Hipertexto 5</dd>
</dl>
</body>
</html>
HTML utiliza el elemento ancla (Etiqueta a) para crear un enlace. Cuando un visitante hace clic en él,
el navegador abre otra página interna o externa.
60
La Web se trata de hiperenlaces
Es fácil generar links, oficialmente llamados hipervínculos, entre páginas. De hecho sólo se necesita
un elemento HTML: el ancla (anchor). Una vez dominado se podrá comenzar a organizar las páginas
en carpetas separadas y transformar una colección de documentos independientes en un sitio con
todas las de la ley.
En HTML se utiliza el elemento ancla <a> para crear un enlace. Cuando un visitante hace clic en él,
el navegador abre otra página. El elemento ancla es un elemento contenedor y su aspecto es el
siguiente:
<a>...</a>
El contenido sobre el que pulsa el visitante se coloca dentro del elemento ancla:
El problema del enlace de anterior es que no apunta a ningún sitio. Para convertirlo en un enlace que
funcione debe aportar la URL de la página de destino mediante el tributo href (que significa referencia
de hipervínculo).
Por ejemplo, si quiere un enlace para llevar al lector a una página llamada enlacepagina.html, debe
utilizar el siguiente código de HTML:
Para que este vínculo funcione, el archivo enlacepagina.html debe estar en la misma carpeta de la
página Web que lo contiene. Veremos cómo organizar mejor el sitio clasificando páginas en distintas
subcarpetas.
El tag ancla es un elemento de línea (inline): se introduce dentro de cualquier otro elemento bloque.
Eso quiere decir que es completamente aceptable crear un enlace de varias palabras en un párrafo
normal.
61
<p>
Lorem ipsum ad his scripta blandit partiendo, eum fastidii accumsan euripidis in, eum liber
hendrerit an. Qui ut wisi vocibus suscipiantur, quo dicit ridens inciderint id. <a
href="enlacepagina.html">Enlace a otra página</a>
</p>
Cuando se pasa el ratón por encima de un enlace, el puntero se convierte en una mano. No puede
saberse si funciona o no, ya que si apunta a una página que no existe sólo obtendrá un error después
de haber hecho clic.
Sin embargo, conviene recordar que el texto de un enlace, el incluido en el elemento <a>, es
importante, sobre todo para los motores de búsqueda. Si es los enlaces se encuentran bien definidos y
funcionando aumenta la posibilidad de que su sitio aparezca en el resultado de una búsqueda y atraiga
a nuevos visitantes.
Los enlaces pueden llevarle rápidamente a una página a otra dentro del mismo sitio Web o
transportarle a una ubicación diferente en un servidor lejano. En cada caso se utilizan distintos tipos:
Los enlaces internos apuntan a otras páginas del sitio Web. También pueden señalar a otros
tipos de recursos multimedia de su sitio.
Los enlaces externos apuntan a páginas (o recursos) de otros sitios Web.
Por ejemplo, digamos que tiene dos archivos en su sitio, una página bibliográfica y una de dirección.
Si quiere que sus visitantes vayan de la primera (mibibliografia.html) a la segunda (contactame.html),
creará un enlace interno. Tanto si almacena ambos archivos en la misma carpeta o en diferentes, son
parte del mismo sitio Web en el mismo servidor, por lo que la forma de hacerlo es con un enlace
interno.
Por otro lado, si quiere que sus visitantes vayan desde su página de libros favoritos
(librosfavoritos.html) a la de Amazon (www.amazon.com) Necesita un enlace externo. Al hacer clic
sobre él, el lector es transportado fuera del sitio Web a un nuevo emplazamiento, ubicado en otro
lugar de la red.
Cuando se crea un enlace interno siempre debe utilizar una URL relativa, la cual le dice a los
navegadores la ubicación de la página objetivo relativa a la carpeta actual. En otras palabras: se le dan
instrucciones sobre cómo encontrar una nueva carpeta, diciéndole que suba o baje dentro de la carpeta
actual (moverse "hacia abajo" significa desplazarse de la carpeta actual a una subcarpeta; moverse
"hacia arriba" referencia lo contrario, se va de una subcarpeta a una carpeta padre, la que contiene la
subcarpeta actual).
62
Un ejemplo de ruta relativa:
Digamos que el texto de la página librosfavoritos.html incluye una frase con este enlace relativo a
contactame.html:
Si quieres más información sobre la reseña de alguno de los libros de este sitio puedes <a
href="contactame.html">contactarme </a> vía email.
Si hace clic en este enlace, el navegador asume automáticamente que ha almacenado contactame.html
en la misma ubicación que librosfavoritos.html y, entre bastidores, rellena el resto de la URL. Eso
significa que, en realidad, pide esta página:
http://nombrededominio.com/contactame.html
HTML le ofrece otra opción de enlace, llamada URL absoluta, que define una URL completa,
incluyendo el nombre de dominio, carpeta y página. Si convertimos el ejemplo anterior quedaría así:
Si quieres más información sobre la reseña de alguno de los libros de este sitio puedes <a href="
http://nombrededominio.com/contactame.html <a>contactarme </a> vía email.
Así pues, ¿Qué técnica emplear? La decisión es fácil. hay dos reglas a tener en cuenta:
Si está creando un enlace externo tiene que utilizar rutas absolutas: En este caso, una
URL relativa no funcionará. Por ejemplo, imagine que tiene que enlazar la página home.html
del sitio Web Amazon. Si crea un enlace relativo, el navegador asume que home.html se
refiere al archivo de ese nombre en su sitio Web. Al hacer clic, los visitantes no irán donde
pretendía.
Si está creando un enlace interno debería utilizar una URL relativa: Técnicamente,
cualquiera de los dos tipos de enlace funciona para páginas internas, pero las URL relativas
tienen varias ventajas. Primero, son más cortas y hacen más legible y fácil de mantener el
HTML. Puede reorganizar su sitio Web, colocar todos los archivos en una carpeta distinta o
incluso cambiar el nombre de dominio del sitio sin romper enlaces relativos.
Una de las mejores partes de utilizar enlaces relativos es que puede probarlos en su propia
computadora y funcionarán de la misma manera que lo harían estando en línea.
¿Cómo puedo crear un enlace que abra una página en una nueva ventana del navegador? Cuando los
visitantes hacen clic en enlaces externos, tal vez no desee que abandonen su sitio tan fácilmente.
Los desarrolladores Web utilizan un truco común que abre páginas externas en ventanas de navegador
separadas (o en una nueva pestaña, dependiendo de la configuración). De esta forma, su sitio
permanecerá abierto en la ventana original, asegurando que el visitante no se olvidará de Usted. Para
que esto funcione debe establecer otro atributo en el elemento ancla: target (destino).
Veamos cómo:
El atributo target nombra el marco en el que un navegador debería mostrar la página de destino. El
valor de _blank indica que el enlace debe abrirse en una ventana nueva del navegador.
63
A algunos les encanta esta función de nueva pestaña, mientras que otros piensan que es un acto de
intervención tremendamente molesta y que interrumpe. Si lo utiliza, aplíquelo con moderación en
algún enlace ocasional.
Un sitio Web estará mejor organizado si almacena grupos de páginas relacionadas en carpetas
separadas. Un ejemplo de ello se muestra en la siguiente figura:
NOTA:
La carpeta raíz es el punto de partida del sitio Web: contiene el resto de archivos y carpetas. La
mayoría de sitios incluyen una página con el nombre index.html o index.php en la carpeta raíz. Esto
se conoce como página predeterminada. Si un navegador manda una petición a su dominio de sitio
Web sin especificar un nombre de archivo, el servidor envía la página predeterminada, al pedir
Este sitio emplea varios enlaces relativos. Por ejemplo, imagine que necesita crear uno desde la
página index.html a contacto.html. Ambas está n en la misma carpeta, por lo que único que necesita es
un enlace relativo:
<a href="contacto.html">Contáctame</a>
Frente a la vieja regla de incluir "haga clic aquí" es mejor declarar como enlace la frase o el término
de manera que el usuario sepa a dónde le lleva ese link.
64
Títulos de los enlaces
El tag <a> (ancla o anchor) permite incluir un atributo title. El título incluido se presentará como una
herramienta de ayuda sobre el texto cuando el ratón se detenga sobre él. Hay unas pequeñas
orientaciones para su redacción:
Es posible definir y personalizar los colores en los que aparecen tanto los enlaces, como los enlaces ya
visitados. Es recomendable mantener siempre el color estándar para los enlaces (azul para enlace y
morado para los enlaces ya visitados).
El significado de estas claves hoy en día está extendido y es comúnmente aceptado, lo que ayuda al
usuario a formarse una rápida idea de lo que puede ver y de lo que ya ha visto.
Siempre que nos refiramos a una misma página debemos utilizar exactamente la misma URL, sólo así
el navegador las marcará como vistas en todos los puntos de la página. De este modo evitaremos
frustraciones al usuario cuando visite como nueva una página que ya ha visto.
Explicar claramente porque debe abandonar su actual contexto y qué es lo que encontrará al
otro lado.
Situar al usuario en su nuevo contexto y proporcionarle el valor relativo a su lugar de origen.
Enlaces externos
Es una de las mejores maneras de generar tráfico hacia nuestro sitio Web. Desde este punto de vista es
importante:
No es conveniente enlazar con la página de inicio sino con algo más concreto o específico. Entre un
20 y 30% de usuarios que encuentran una página de inicio al pulsar un banner, pulsan acto seguido la
función de volver.
Etiquetas Descripción
Para crear una tabla sencilla se ha de utilizar en primer lugar la etiqueta <table>, la cual define la
tabla. Y dentro de ella se han de situar por cada fila una etiqueta <tr>, mientras que por cada casilla o
celda dentro de la fila, se puede utilizar una etiqueta <th> o <td>, dependiendo de que sea una casilla
de cabecera o normal.
El siguiente ejemplo muestra la definición de una tabla de dos filas por dos columnas. Aunque en
versiones anteriores de HTML, se pueden aplicar varios atributos a la etiqueta <table>, actualmente
solo está permitido uno, el atributo border, al cual se le puede dar un valor de 0 o 1
De esta forma se visualiza un borde en la tabla, este atributo solo se ha de utilizar cuando se está
realizando el documento web por motivos de visualización del diseño, siendo conveniente quitar el
mismo cuando se publique el documento y establecer los formatos de la tabla mediante hojas de
estilo.
66
Para los ejemplos utilizados y con el fin de poder apreciar el resultado en el navegador se ha
establecido el atributo border con un valor de 1
<!DOCTYPE HTML5>
<html>
<head>
<title>Ejercicios prácticos HTML5</title>
<meta charset="utf-8">
<meta name="author" content="">
<meta name="description" content="Ejercicios prácticos HTML5">
<meta name="keywords" content="Ejercicios, Soluciones, Prácticas, HTML5">
</head>
<body>
<table border="1">
<caption>Titulo de la tabla</caption>
<tr>
<th>Col.Cab.1</th>
<th>Col.Cab.2</th>
</tr>
<tr>
<td>Celda 1</td>
<td>Celda 2</td>
</tr>
</table>
</body>
</html>
Se ha de observar que para cada una de las filas de la tabla, se utiliza la etiqueta <tr>, y como
contenido de las mismas, se utilizan etiquetas <th> o <td>, dependiendo de que se quiera establecer
celdas de encabezado o normales. Las celdas o casillas de encabezado se visualizan con una fuente
fuerte a diferencia de las normales. Para definir el título de tabla se ha utilizado la etiqueta <caption>
Para especificar el valor del atributo, se ha de indicar el número de columnas sobre las que se quiere
realizar la combinación, utilizando un valor numérico encerrado entre comillas dobles.
El siguiente ejemplo muestra el uso del atributo en una tabla que tiene celdas combinadas aplicada la
combinación sobre las columnas.
<!DOCTYPE HTML>
<html>
<head>
<title>Ejercicios prácticos HTML5</title>
<meta charset="utf-8">
<meta name="author" content="">
<meta name="description" content="Ejercicios prácticos HTML5">
<meta name="generator" content=", Curso práctic HTML5">
<meta name="keywords" content="Ejercicios, Soluciones, Prácticas, HTML5">
</head>
<body>
<table border="1">
<caption>Tabla con combinación de columnas</caption>
<tr>
<th colspan="2">Celda Combinada</th>
<th>Celda Normal</th>
<th colspan="2">Celda Combinada>/th>
</tr>
<tr>
<td>C1</td>
<td>C2</td>
<td>C3</td>
<td>C4</td>
<td>C5</td>
</tr>
<tr>
<td>C6</td>
<td>C7</td>
<td>C8</td>
<td colspan="2">C9 Comb.</td>
</tr>
</table>
</body>
</html>
68
Combinación de columnas en una tabla
Al igual que se puede realizar la combinación de columnas, también se puede realizar la combinación
de filas, mediante el atributo rowspan.
Para especificar el valor del atributo, se ha de indicar el número de filas sobre las que se quiere
realizar la combinación, utilizando un valor numérico encerrado entre comillas dobles.
El siguiente ejemplo muestra el uso del atributo en una tabla que tiene celdas combinadas aplicada la
combinación sobre las filas.
<!DOCTYPE HTML5>
<html>
<head>
<title>Ejercicios prácticos HTML5</title>
<meta charset="utf-8">
<meta name="author" content="">
<meta name="description" content="Ejercicios prácticos HTML5">
<meta name="generator" content=", Curso práctico HTML5">
<meta name="keywords" content="Ejercicios, Soluciones, Prácticas, HTML5">
</head>
<body>
<table border="1">
<caption>Tabla con combinación de filas</caption>
<tr>
<th>Celda 1</th>
<th>Celda 2</th>
<th>Celda 3</th>
</tr>
<tr>
<td rowspan="2">Celda Combinada</td>
<td>Celda 5</td>
<td rowspan="2">Celda Combinada</td>
</tr>
<tr>
69
<td>Celda 7</td>
</tr>
</table>
</body>
</html>
El resultado del ejercicio anterior ha de ser similar al que se muestra en la imagen siguiente.
Se puede realizar la aplicación de los dos atributos de combinación de filas y columnas a las celdas de
la tabla, formando así tablas que contienen celdas combinadas.
El siguiente ejemplo muestra el uso de los atributos de combinación aplicados sobre una tabla.
<!DOCTYPE HTML5>
<html>
<head>
<title>Ejercicios prácticos HTML5>/title>
<meta charset="utf-8">
<meta name="author" content="">
<meta name="description" content="Ejercicios prácticos HTML5">
<meta name="keywords" content="Ejercicios, Soluciones, Prácticas, HTML5">
</head>
<body>
<table border="1">
<caption>Tabla con combinación de filas y columnas>/caption>
<tr>
<th>celda 1</th>
<th>celda 2</th>
<th>celda 3</th>
<th>celda 4</th>
</tr>
<tr>
<td rowspan="3">celda 5</td>
70
<td>celda 6</td>
<td colspan="2">celda 7</td>
</tr>
<tr>
<td>celda 8</td>
<td>celda 9</td>
<td rowspan="2">celda 10</td>
</tr>
<tr>
<td colspan="2">celda 11</td>
</tr>
</table>
</body>
</html>
Tablas avanzadas
En muchas ocasiones se puede necesitar tablas que tengan una mayor complejidad en su
estructuración, debido a que puedan tener secciones de datos distintas, o se quiera realizar
diferenciación entre los datos de la tabla y las secciones correspondientes a sus encabezados y pies.
Para realizar este tipo de tablas, se pueden utilizar una serie de etiquetas que permiten crear tablas
denominadas avanzadas.
Una de las características de estas tablas es que están compuestas por una sección de cabecera, que se
define mediante la etiqueta <thead>, una sección de pie de tabla, definida mediante la etiqueta
<tfoot>, y por ultimo una o varias secciones de cuerpo de tabla, donde se suele ubicar los datos de la
misma, representada por la etiqueta <tbody>
Las etiquetas de cabecera y pie de tabla siempre se han de definir antes que cualquier etiqueta de
cuerpo de tabla.
Se pueden realizar agrupaciones de columnas para aplicar un formato por separado o en común a las
mismas, para realizar estas agrupaciones se ha de utilizar la etiqueta <colgroup>, especificando a
continuación como su contenido y mediante la etiqueta <col>, las columnas y el ámbito de las mismas
sobre el cual se quiere aplicar el formato.
<!DOCTYPE HTML5>
71
<html>
<head>
<title>Ejercicios prácticos HTML5</title>
<meta charset="utf-8">
<meta name="description" content="Ejercicios prácticos HTML5">
<meta name="keywords" content="Ejercicios, Soluciones, Prácticas, HTML5">
</head>
<body>
<table border="1" style=”width: 100%”>
<caption>Titulo de tabla</caption>
<colgroup>
<col style="width: 20%"/>
<col style="width: 40%"/>
<col style="width: 40%"/>
</colgroup>
<thead>
<tr>
<th rowspan="2">Tabla Avanzada</th>
<th colspan="2">Cabecera Múltiples
Columnas</th>
</tr>
<tr>
<th>Primera Col. Cab.</th>
<th>Segunda Col. Cab.</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="3">Pie de tabla.</td>
</tr>
</tfoot>
<tbody>
<tr>
<th>Fila 1</th>
<td>Fila 1 Columna 1</td>
<td>Fila 1 Columna 2</td>
</tr>
<tr>
<th>Fila 2</th>
<td>Fila 2 Columna 1</td>
<td>Fila 2 Columna 2</td>
</tr>
</tbody>
</table>
</body>
</html>
El resultado del ejercicio anterior ha de ser similar al que se muestra en la imagen siguiente.
72
thead, tbody y tfoot componentes de una tabla
En primer lugar se han especificado estilos css para varios elementos de la tabla. El primero de ellos
en la propia etiqueta de la tabla, especificando que su ancho ha de ser el 100% del ancho de
visualización del navegador.
Un formulario es una zona interactiva de nuestra página web, donde le proporcionamos al usuario
controles y campos para que ingrese o elija datos.
Hace varios años que el W3C y el WHATWG vienen trabajando para mejorar los viejos formularios
web, con la meta de aumentar su usabilidad a partir de un fuerte énfasis en las pantallas táctiles,
simplificar las validaciones de datos y facilitar la creación de nuevos controles interactivos que hasta
ahora requerían de programación, reduciendo de esta manera el uso de scripts. La tendencia a futuro
es que si un control o validación de datos de formulario puede dejar de ser realizado por un script.
Estamos hablando de la validación “previa” a enviar los datos, es decir, aquella realizada en el
navegador, del lado del cliente, que jamás reemplazará a una completa validación del lado del
servidor (con PHP o lenguajes similares), sino que solo tiene como meta mejorar la usabilidad de un
formulario, evitando que se recargue la página entera solamente para avisar que faltó un dato o que no
se respetó el formato esperado.
Es importante que un formulario funcione siempre, en todos los dispositivos, y con cualquier
navegador y versión, sin depender de la activación de JavaScript o de ningún plugin. Por lo tanto, las
73
validaciones, campos obligatorios, mensajes de error funcionalidades de interactividad, han sido
derivadas al navegador.Para lograr esos objetivos, HTML5 agrega una serie de nuevos tipos de input
y un conjunto de nuevos atributos aplicables a elementos de formulario, que iremos conociendo a
continuación.
Para lograr esos objetivos, HTML5 agrega una serie de nuevos tipos de input y un conjunto de nuevos
atributos aplicables a elementos de formulario, que iremos conociendo a continuación.
Repasemos ante todo cuál es la estructura básica de un formulario, en base a un ejemplo simple:
Conceptualmente, un formulario consiste en una zona interactiva de nuestra página web, donde en vez
de mostrarle datos a nuestro usuario, le proporcionamos controles y campos para que sea el mismo
usuario quien ingrese o elija datos, que serán enviados desde su navegador hacia el servidor. Luego,
algún lenguaje de programación del lado del servidor como PHP, se ocupa de hacer algo con esos
datos enviados por el usuario, típicamente los almacena en una base de datos o los envía por correo
electrónico.
Si nos adentramos en el código, veremos que una etiqueta <form> debe envolver cada zona de
formulario de una página (de esto se deduce que puede haber más de un formulario por página), y
dentro de esta etiqueta <form>, agruparemos con una etiqueta <fieldset> cada conjunto de campos
relacionados entre sí, siendo habitual agregar un <legend> descriptivo a cada grupo de campos.
<form>
<fieldset>
<legend>Suscribirse al Boletín</legend>
74
</fieldset>
</form>
Luego, cada control estará asociado a una etiqueta <label> que indique qué dato debe ingresarse en el
campo, y en la forma de realizar esta asociación (anteriormente realizada con divs, o elementos de
lista) tenemos la primera novedad de HTML5 relativa a formularios con respecto a versiones
anteriores: el W3C nos pide explícitamente que agrupemos un campo con su respectivo <label>
mediante etiquetas de párrafo, ya que conceptualmente un formulario es un texto, del cual algunas
partes son proporcionadas por el autor del formulario, y otra parte de los contenidos es proporcionada
por el usuario.
Volvamos al ejemplo:
<p>
<label for="casilla">Correo electrónico:</label>
<input type="text" name="casilla" id="casilla">
</p>
Con un párrafo que envuelva tanto al label como al input, solucionamos la estructura del formulario (a
diferencia de lo que hemos venido haciendo, con tablas, o divs, o breaks, o listas de definición, solo
para ordenar cada par label/campo).
Dentro de la apertura de la etiqueta <form>, los principales atributos que podemos aplicar son los
siguientes.
Action
Sin dudas, este es el principal atributo para el funcionamiento de un formulario. Su valor debe ser la
URL de un archivo programado en algún lenguaje de servidor, como PHP, ASP, JSP, etc. para que
ese archivo reciba las variables enviadas desde el formulario (una por cada control de formulario), y
pueda hacer algo con esos datos (típicamente, insertarlos en una base de datos en el servidor, o
enviarlos por email al administrador del sitio).
El valor del atributo action también determina a qué página seremos llevados una vez pulsado el
botón de “enviar”. Éste, entonces, es similar a un enlace.
Ejemplo:
<form action="respuesta.php">
Method
Por otro lado, el atributo method especifica cuál de las cabeceras o headers del protocolo HTTP se
utilizarán para enviar los datos ingresados por el usuario hacia el servidor. Los posibles valores del
atributo method son 4: post, get, put y delete. Típicamente se utiliza post, lo cual hace que en la URL
no se observen las variables enviadas, como sí sucede con get.
Ejemplo:
75
<form action="respuesta.php" method="post">
Autocomplete
Este atributo tiene un valor por defecto de true (verdadero), lo que significa que el navegador
memorizará los datos que vayamos ingresando en un campo, y cuando regresemos a esa misma
página a completar el mismo campo del mismo formulario, el navegador nos mostrará los valores ya
ingresados previamente, permitiéndonos elegirlo de una lista desplegada por debajo del campo,
ahorrándonos el tipeo.
Novalidate
En HTML5 existe un solo atributo verdaderamente nuevo a nivel de la etiqueta <form>, que se llama
novalidate. Al colocarlo (es booleano, es decir, simplemente puede estar o no estar, no tiene valores
que debamos declararle), se desactiva la validación automática de todos los campos de ese formulario.
Más adelante veremos en cuáles casos nos puede llegar a ser útil desactivar esta validación que realiza
el navegador por su cuenta, para, por ejemplo, programar nuestra propia validación con JavaScript
Ejemplo:
Hecho este repaso básico a nivel de las variantes posibles dentro de la etiqueta <form>, veremos a
continuación cuáles son los atributos nuevos de cada control de formulario, que nos permitirán reducir
la cantidad de código (JavaScript) necesario para contar con funcionalidades típicas de un formulario,
así como para validar los datos ingresados.
Uno de los principales objetivos de las novedades relacionadas con los formularios en HTML5 es
reducir el uso de JavaScript para muchas de las tareas típicas de cualquier formulario: mostrar un
texto dentro de un campo (y que desaparezca al hacer foco en él), hacer foco automáticamente en el
primer campo de un formulario, validar que el contenido de un campo se ajuste a las reglas definidas
al crear el campo (que sea del tipo de dato esperado, si es obligatorio el completarlo, que esté dentro
del rango de valores permitidos, etc.)
Veamos con qué facilidad se realiza esto, gracias a los nuevos atributos con que contamos en
HTML5.
Al hacer foco en el campo (haciendo click con el mouse o llegando con el tabulador), desaparecerá
ese texto, y si escribimos algo ya no volverá a aparecer; pero si borramos lo escrito, dejando vacío el
campo, nuevamente se visualizará el texto del placeholder, para volver a advertirle al usuario acerca
de la tarea que quedó pendiente.
También puede aplicarse a un textarea, no solo a un input, como vemos en la siguiente imagen:
Otra funcionalidad típica en los formularios es la del atributo autofocus, que posiciona el cursor
automáticamente en el primer campo a completar, ayudando al usuario a ubicarse en su primera tarea
dentro del formulario. Por supuesto, podemos aplicar este atributo a un solo campo por formulario (ya
que no puede haber dos cursores haciendo foco simultáneamente). Y si por descuido lo aplicáramos a
dos o más controles dentro de un mismo formulario, solo quedará activo el último de los campos, ya
que el navegador lee secuencialmente nuesro código fuente.
Veremos que el cursor queda parpadeando, a la espera de que utilicemos ese campo.
Autocomplete (autocompletado)
77
<input type="text" autocomplete="off" />
De esta manera, no aparecerá nunca la lista desplegable de valores cargados previamente en ese
campo así definido.
Required (requerido)
Si queremos que en un campo sea obligatorio ingresar algún valor (y en caso contrario, no permitir el
envío del formulario), debemos usar el atributo required:
Aquí veremos por primera vez los efectos de la validación automática realizada por el navegador: si
pulsamos el botón de “Enviar” del formulario dejando vacío un campo marcado como requerido, se
impedirá el envío del formulario y aparecerán carteles avisando que el campo es obligatorio.
Cada navegador mostrará el texto de esos carteles en el idioma de ese navegador, y con ciertos efectos
decorativos propios.
Como vemos, cada navegador muestra textos diferentes y diseñados de distinta manera: la idea de
fondo es que las personas se acostumbren a los textos y diseño que “su” navegador habitual les
muestra, derivando a éste la funcionalidad de validación, uniformizando así en todos los sitios que un
usuario visita los mensajes de validación.
Como podemos deducir, los carteles y textos que cada navegador agrega, no pueden modificarse,
salvo que desactivemos la validación en el formulario completo. Esto es así ya que el objetivo es que
la experiencia de uso de un formulario sea universal, única para una persona acostumbrada a un
navegador que le mostrará siempre los mismos mensajes y en el mismo formato.
En algunos campos de formulario nos resultará necesario especificar un patrón (o "pattern") que el
dato ingresado por el usuario deberá respetar para ser considerado un dato válido. Por ejemplo, que el
nombre de usuario tenga al menos 5 caracteres, y que sean letras de la “a” hasta la "z". Típicamente se
utilizan expresiones regulares para esto, y el atributo pattern precisamente nos permite asignar una
expresión regular como condición para la validez del dato ingresado en un campo.
78
Desde ya que la sintaxis de las expresiones regulares es un tema técnico de los especialistas en
sistemas, y excede lo que podamos explicar aquí, por lo que simplemente diremos que este ejemplo
permite que se ingresen en el campo solamente dígitos del 0 al 9 y en una cantidad de entre 13 y 16
dígitos inclusive. De lo contrario, obtendremos un mensaje de error como el siguiente:
Hasta aquí, todos los atributos que hemos aprendido nos ayudan en la validación, pero no generan
nuevos elementos de formulario. Sin embargo, otro de los objetivos mayores detrás de los formularios
HTML5 es el de poder generar interfaces de interacción complejas (por ejemplo: selectores de
calendario para fechas, horas, rangos de valores, colores, etc.) sin la necesidad de utilizar librerías
JavaScript para ello. Y todo esto se enfoca en facilitar la carga de datos en el caso de usuarios de
pantallas táctiles (móviles, tabletas, etc.), donde es más fácil “arrastrar” o "elegir" en lugar de escribir.
Complementariamente, además de generar nuevos elementos de interfaz, el uso de los nuevos tipos de
campos está asociado al tipo de dato que recopilará, ocupándose el propio navegador a partir de ese
instante de realizar la validación necesaria (tal como vimos anteriormente con los atributos required o
pattern).
HTML5 agrega numerosos tipos nuevos de input específicos para tipos de datos particulares: es decir,
no son etiquetas nuevas, sino que reutilizamos la misma vieja etiqueta input, pero agregándole
nuevos“tipos” (nuevos valores del atributo type).
Search (búsquedas)
Tel (teléfonos)
url (direcciones web)
Email (correos electrónicos)
Number (numéricos)
Range (indica rangos)
Date (fechas)
Month (mes)
Week (semana del año)
Time (horario)
Datetime (fecha y hora)
Color (colores)
Veamos seguidamente cuáles son la sintaxis, los usos y las compatibilidades de cada uno de ellos.
Search (búsquedas)
Este tipo de input es el indicado para un formulario donde el usuario escribirá un texto que se enviará
hacia un buscador (interno o externo a nuestro sitio).
79
La sintaxis es:
Su visualización es la siguiente:
Entre las funcionalidades que incorpora este tipo de campo podemos mencionar que agrega dentro del
campo un botón en forma de “x” para “limpiar” el contenido del campo; y que no permite saltos de
línea. Si pegamos en el campo un texto de varios párrafos, solo tomará la palabra o frase previa al
primer salto de línea, ya que supone que un buscador se utiliza para buscar una palabra o frase, no
más.
En Safari, el campo de tipo search cuenta con la posibilidad de definirle un atributo exclusivo de ese
navegador llamado “results”, que permite indicar cuántos resultados de las últimas búsquedas
realizadas se almacenarán y mostrarán al pulsar la flecha:
En el caso de que un navegador antiguo no conozca este tipo de input, degradará en un input de tipo
“text”, por lo que no afectará en nada la posibilidad de ingresar un texto dentro del campo de
búsqueda. Por lo tanto, podemos utilizarlo sin riesgos ya mismo en nuestros sitios.
Tel (teléfonos)
Se debe utilizar este tipo de input para campos donde solicitamos que el usuario escriba su teléfono
(fijo o móvil).
La sintaxis es:
Se visualiza igual que un input de texto, pero su uso permite que en un móvil aparezca el teclado
numérico, facilitando el ingreso del número, tal como se aprecia en el siguiente teclado de iPhone:
80
input type tel
Con respecto a la validación, es imposible unificar un criterio internacional que permita realizar una
validación de un número telefónico (la cantidad de caracteres, los separadores –guiones, espacios,
corchetes, paréntesis– varían de país en país, por lo que creemos que nunca será posible validar la
sintaxis de un teléfono de manera automática).
En el caso de que el navegador no lo soporte, degrada en un input de texto, por lo que no existen
problemas para usarlo, se podrá insertar el teléfono en cualquier circunstancia.
Por ejemplo:
input[type=tel]{
background:url(telefono.jpg) no-repeat center right;
}
Cuando necesitemos solicitar a nuestros usuarios el ingreso de una URL, podemos colocarle este valor
de type al input:
De esta manera, el navegador validará que se ingrese una URL absoluta, es decir, que comience con
un protocolo (típicamente, http://) aunque se acepta cualquier carácter delante de los dos puntos y la
doble barra, lo que la vuelve compatible hacia el futuro con nuevos protocolos que puedan surgir.
Una ventaja de utilizar este tipo de input es que los usuarios de muchos dispositivos móviles cuentan
con un tipo de teclado especial para URLs, que incluye punto, barra y un botón que escribe “.com” al
ser pulsado, agilizando la carga de la dirección:
81
Teclado para url visible en dispositivos
En caso de no ser soportado por el navegador, degrada en un input de texto, por lo que también se
podrá ingresar la URL sin problemas.
Este tipo de input verifica que la casilla ingresada sea válida (utiliza un estándar internacional para
verificar la validez: RFC 5322) pero a pesar de eso, no garantiza la calidad de la validación (puede ser
mejor utilizar un pattern, algo que veremos más adelante).
Su uso es simple:
Su resultado:
Esta vez, el teclado de un iPhone y similares mostrará el carácter arroba para facilitar el ingreso de
una casilla de email:
Una variante de este tipo de input es que podemos especificarle el atributo multiple, de esta manera:
82
<input type="email" multiple />
En este caso, aceptará el ingreso de varias casillas separadas por comas y validará que cada una de
ellas siga una sintaxis correcta. Con esta variante, el mensaje mostrado será similar al siguiente:
Al igual que todos los tipos anteriores de input que ya hemos visto, degrada en un input de texto en el
caso de no ser soportado, por lo que su uso no nos generará ningún problema.
Number (números)
Este tipo de input es muy útil para permitir el rápido ingreso o la selección de números, gracias al
agregado junto al campo de un par de flechas (ascendente y descendente) que facilitan el rápido
ingreso de datos numéricos, sobre todo en el caso de la pantalla táctil de un móvil o tableta. Además,
se le puede definir un rango de valores, con su mínimo y su máximo permitido.
Su visualización es:
Y su sintaxis:
Min es el valor mínimo que será permitido ingresar, max es el valor más alto permitido y step es no
solamente el salto que dará al pulsar las flechas, sino que también es el límite a los valores permitidos
(si step es 10, solo permitirá ingresar múltiplos de 10, por eso el valor por omisión de step es 1).
Desde ya que value es el valor que se mostrará seleccionado de entrada, tal como en cualquier otro
input.
No solo permite ingresar dígitos del 0 al 9, sino también punto de separación decimal, signo negativo
al inicio y un exponente, como por ejemplo: -12345.678e+90
Degrada en un input de texto en el caso de no ser soportado, por lo que no hay inconvenientes en
utilizarlo.
Tiene gran utilidad al facilitar el ingreso de números en móviles táctiles, permitiendo elegir el número
con un par de toques en vez de tener que escribirlo con el teclado, o en caso de que el celular lo
incluya, mostrando solamente el teclado numérico en pantalla.
83
Teclado de dispositivo para input type number
Es similar a number, pero debemos usarlo cuando no es tan importante la precisión del número
ingresado, sino que nos interesa aumentar la usabilidad (la facilidad de arrastrar con el dedo en una
pantalla táctil).
Y su sintaxis es:
Lo que envía hacia el servidor como valor es un número, proporcional al rango avanzado con la
perilla del selector dentro del recorrido total definido entre el min y el max. Por ejemplo, en el caso de
la imagen anterior, estará enviando un 80 como valor elegido.
Degrada en un input de texto, pero lo ideal es garantizar su compatibilizador con algún script de los
que mencionaremos más adelante. Resulta ideal para el caso de aplicaciones web donde podemos
hacerlo funcionar a la manera de un control deslizable que genere valores mediante programación.
Este tipo de input se encarga de mostrar un calendario completo, con solo especificar:
84
Resultado del input type date
Puede llevar los atributos min y max para definir un rango permitido de fechas a elegir y no permitirá
ingresar fechas fuera de ese rango.
El formato que envía al servidor como valor de este campo es ese mismo que acabamos de mostrar
(2018-09-21, año, guión, mes, guión, y día). Luego deberemos utilizar PHP o algún otro lenguaje de
servidor para descomponer en partes esa cadena de caracteres y poder utilizarla en formatos más
legibles para nosotros. Será necesario que el programador considere que el formato recibido puede
variar entre un navegador y otro.
Al momento de escribir este libro, Opera, Firefox y Chrome son los únicos navegadores que
soportan este tipo de control (el resto de controles de fecha y hora, y de selección de colores,
solo funcionan en Opera), por lo que no recomendamos su utilización sin agregar un script
compatibilizador. Una gran ventaja de la implementación de Firefox y Chrome, es que el
orden de los datos al detectar la localización del navegador es cambiado a Día/Mes/Año, para
mejor comprensión en el mundo hispanoamericano.
Month (mes)
Es similar al anterior, pero al pulsar sobre alguno de los días del mes elegido, selecciona el mes
completo (veremos todos los días del mes grisados, como en la siguiente captura de pantalla).
85
Esto se genera con el código:
El formato del texto que envía al servidor (y que muestra una vez seleccionada la fecha) es 2018-09
(año, guión, mes). Otra vez, el orden no es familiar para nuestra cultura.
Soporta los mismos atributos min y max que el resto de elementos de fecha y hora.
Podría ser útil para ingresar por ejemplo, el mes de vencimiento de una tarjeta de crédito.
Seguramente el menos usado de todos los campos relativos a fechas, permite elegir una semana del
año por su número de orden:
Su resultado es:
Time (hora)
Y su apariencia es:
Lleva los mismos atributos que date. El valor del step está indicado en segundos (y define de a cuánto
saltará al pulsar las flechitas, además de limitar los minutos permitidos a los que sean múltiplo del
step especificado).
El formato que muestra y envía al servidor esta vez sí sirve en nuestra cultura.
86
Permite seleccionar a la vez una fecha y un horario.
El formato con que enviará los datos está especificado en formato UTC:
2012-09-21T10:55:59.001-03:00
Degrada en un campo de texto al igual que date, siendo igualmente poco recomendable su uso
actualmente, salvo que dependamos de un compatibilizador.
Selector de colores
Si en una aplicación web deseamos dar a elegir un color, podemos utilizar este tipo de control.
Por ahora, solamente es soportado por algunos navegadores, pero su versión 11 en adelante, y por
Chrome en su versión 21 y superiores, pero pueden utilizarse scripts compatibilizadores.
En principio, Opera muestra una lista con unos pocos colores básicos, pero si pulsamos en “Other”
abre un selector de colores desde donde podemos agregar nuevos colores a la paleta. En el caso de
Chrome, directamente abre el selector de colores al pulsar el control. Lo que enviará como valor del
input es el código hexadecimal del color elegido.
Datalist
87
Este nuevo elemento HTML se utiliza en combinación con un input de texto (o similar, de tipo URL,
email, etc.), donde se espera que el usuario escriba. Funciona a la manera de un auto-suggest, es decir:
a medida que el usuario escribe una letra y se encuentran coincidencias entre lo ingresado por el
usuario y algunos de los valores previstos, los muestra desplegados debajo del campo, para que
podamos seleccionarlos con el mouse, o con el dedo en una pantalla táctil.
Su uso principal es facilitar la carga de valores “mayoritarios”, es decir, que un 80 o 90 por ciento de
los usuarios seguramente elegirá, pero permitiendo escribir valores no previstos. Por ejemplo, si
consideramos las opciones incluidas en “bebida para el desayuno”, seguramente muchos optarán por
café, otros elegirán té, y así con unas 6 o 7 opciones comunes, mientras que algunos pocos ingresarán
alguna otra bebida no incluida en la lista.
Para esos casos, esta etiqueta reemplazaría a un select con options, que a su vez tuviera al lado un
campo de texto extra con la opción de ingresar “Otros” datos no contemplados en la lista del Select.
Es decir, el usuario no está obligado a elegir una de las opciones previstas, solo sirven de ayuda para
facilitar la carga en la mayoría de los casos, pero se le permite escribir algo diferente a lo previsto, y
el campo lo aceptará.
Y luego armamos la lista de options dentro de una etiqueta datalist (si son pocas opciones podemos
escribirlas a mano, aunque típicamente estos valores pueden provenir de una consulta a una base de
datos realizada con un lenguaje como PHP):
<datalist id="sugerencias">
<option label="La Nación" value="http://www.lanacion.com.ar"></option>
<option label="Clarín" value="http://www.clarin.com"></option>
<option label="Página 12" value="http://www.pagina12.com.ar"></option>
<option label="Infobae" value="http://www.infobae.com"></option>
</datalist>
Como vemos, la estructura de cada option no es igual a la de los option de un select: en un select, cada
option envuelve el valor visible y puede llevar un value que es el dato que se enviará al servidor como
valor de esa opción elegida. En cambio, en los option de un datalist no se envuelve ningún valor, sino
que se especifican dos atributos: label y value. Dentro de los label es donde se buscará la coincidencia
a medida que el usuario escriba, pero lo que diga en el value es lo que se enviará.
88
También podemos hacer que ambos atributos (label y value) sean iguales, con lo que podríamos
vincularlo a un simple input de tipo text para facilitar la carga de las opciones elegidas:
<datalist id="sugerencias">
<option label="La Nación" value="La Nación"></option>
<option label="Clarín" value="Clarín"></option>
<option label="Página 12" value="Página 12"></option>
<option label="Infobae" value="Infobae"></option>
</datalist>
Por el momento, solo Firefox implementa de manera correcta los datalist nativamente; en el resto de
casos, utilizaremos algún compatibilizador.
Si bien estamos aún en la etapa del libro relativa al marcado HTML, existen algunas novedades en
CSS3 relacionadas con los formularios, por lo que creemos pertinente incluirlas en este momento. Se
trata de algunas de las nuevas pseudo-clases de CSS3 que facilitan la decoración de estados de
campos de formulario, o estados de validez de sus datos.
Podemos detectar si el dato ingresado es válido (o no) y decorar el campo en consecuencia (con un
color, borde, imagen de fondo, etc.) con las siguientes pseudo-clases:
-Focus: se aplica durante el tiempo en que a ese input le están haciendo foco:
input:focus {
background-color:gray;
}
-Invalid: se aplica mientras el contenido del campo no cumple con las reglas de validación definidas
en un pattern, o si no es un email válido:
input:invalid {
color:red;
}
-Valid: se aplica lo definido mientras el contenido sea válido según las reglas aplicadas, de forma
inversa al caso anterior.
input:valid {
color:green;
}
input:required {
border: 3px solid #F00;
}
-Optional: por el contrario, podemos seleccionar todos los campos que no tengan aplicado el atributo
“required” mediante la pseudo-clase “optional”:
89
input:optional {
border: 3px solid #999;
}
Tengamos en cuenta que en los campos de tipo “search”, ni Chrome ni Safari permiten que
modifiquemos los bordes al aplicar “optional” (aunque sí permiten modificar el color de los textos).
-In-range: cuando necesitemos apuntar hacia un campo numérico o de fechas, mientras su valor esté
dentro del rango definido por los atributos “min” y “max”, podemos utilizar in-range:
input:in-range {
color: gray;
}
-Out-of-range: por el contrario, para apuntar cuando el valor está fuera del rango definido,
utilizaremos out-of-range:
input:out-of-range {
color: red;
}
-Read-only: para apuntar a controles que tengan definido el atributo “readonly” (solo lectura, similar
al antiguo “disabled”, pero con la diferencia de que sí enviarán su contenido hacia el servidor al
despachar el formulario):
input:read-only {
border: 3px solid #F00;
}
-Read-write: complementario al anterior, para apuntar a los campos que no posean el atributo
“readonly” definido:
input:read-write {
border: 1px solid #000;
}
También podemos combinar dos o más de estas pseudo-clases, para crear condiciones o “estados”
más complejos. Por ejemplo:
input:focus:required:invalid {
background-color: #f00;
}
Eso solo se aplicará a un input que esté recibiendo el foco (por haber sido clickeado o haber llegado a
él con el tabulador), que sea un campo requerido y que a su vez, el contenido ingresado hasta el
momento no sea válido.
frame, iframe o también conocido como marco, sirve para insertar un video de Youtube y elementos
multimedia dentro de la página Web actual.
90
Potente, pero fácil de usar mal
En los viejos tiempos del diseño de sitios web, había muchos elementos <frame> dando vueltas,
arruinando el día de todos.
Casi siempre fueron un mal enfoque del diseño. Afortunadamente, el elemento <frame> ha quedado
en desuso en HTML5, pero el <iframe> o "marco en línea" todavía está disponible. ¿Debería haber
quedado en desuso también? ¿Es mejor simplemente evitarlo?
Hay algunos usos válidos para este elemento, pero realmente necesitas entender qué es y cómo
funciona para evitar algunos de los escollos que eran tan comunes en los tiempos oscuros de la Web.
<iframe src="https://ejemplo.com"></iframe>
<iframe>
<!DOCTYPE html>
<html>
<head> . . . </head>
<body> . . . </body>
</html>
</iframe>
La principal diferencia entre <iframe> y <frame> es que <iframe> implementa esto de una manera
que tiene sentido, que respeta lo que es un documento HTML en primer lugar. El contenido del
<iframe> se muestra dentro de un elemento que es claramente una parte del documento actual.
Es posible que tenga la tarea de actualizar o rediseñar un sitio web antiguo que se construyó con
marcos. Y luego puede sentirse tentado a utilizar <iframes> y un diseño de ancho fijo para recrear la
misma pesadilla de los paneles y subventanas independientes.
Luego descubrirá que no puede usar el atributo de destino para abrir un enlace en un marco en
particular. Eso debería detenerlo, pero luego puede comenzar a buscar soluciones de JavaScript y
despues reconstruir algo terrible. Por favor no hagas esto.
Hay algunos usos legítimos para <iframe>, y la imitación de patrones de diseño terribles de la década
de 1990 no es uno de ellos. Aquí hay algunos:</iframe>
Galería de fotos
Foro o chat
Nombre del
Notas
atributo
Se utilizó para especificar la URL que contiene una descripción larga de un iframe.
longdesc
En desuso en HTML5. Utilice CSS en su lugar.
Para insertar sonido y video en un sitio Web se usan los tags audio, video y embed. HTML5 brinda la
opción reproducir contenidos sin complementos.
Antes de instalar este tipo de archivos recuerde que los formatos sin
comprimir pueden ser muy grandes y nada recomendados para
descargarse desde la Web.
Existen formatos de archivos para la Web con algoritmo de compresión complejos que mejoran en
gran medida esta cuestión.
Incluso estos formatos permiten iniciar la reproducción descargando sólo parte del archivo mientras se
muestra el contenido al usuario, y continuar con la reproducción en un segundo plano.
Se recomienda no reproducir los archivos de audio y video automáticamente cuando un usuario visita
un sitio Web.
NOTA:
Los contenidos de audio y video se deben comprimir siempre para incorporarlos al sitio.
93
El formato de audio más utilizado es el MP3 (MPEG Layer 3), aunque también son comunes MIDI
(Musical Instrument Digital Interface) y WAV (Windows Waveform).
Entre los programas de edición de audio encontrará Sony Sound Forge a nivel profesional y Sony
Sound Forge Audio Studio para usuario del nivel básico. Audacity es un programa de edición de
audio de código abierto, potente y multiplataforma, además de gratuito.
Los formatos de video más utilizado son AVI (Audio Video Interleaved), MPEG (Motion Picture
Experts Group), MOV (Películas QuickTime) y RealOne Player.
Apple QuickTime permite editar y exportar audio, aunque para proyectos más complejos los usuarios
de Macintosh utilizan Apple Final Cut Pro.
Es cada vez más popular Adobe After Effects para crear gráficos de películas y efectos especiales.
Tag audio
La etiqueta <audio>, es una de las nuevas etiquetas del lenguaje HTML5, que permite reproducir un
archivo de audio
Actualmente se pueden reproducir tres tipos de formato de audio, mp3, wav y ogg. Aunque también
depende del navegador que se permita su reproducción.
Internet Explorer SI NO NO
Chrome SI SI SI
Firefox SI SI SI
Safari SI SI NO
Opera NO SI SI
src
El atributo permite especificar la dirección URL del recurso al cual se quiere acceder, siendo en este
caso el archivo que contiene el audio a cargar en el documento web.
94
Se ha de especificar el archivo de audio con el formato adecuado para el navegador donde se vaya a
reproducir el audio.
Como esta opción no es predecible por el desarrollador y depende del usuario final. Se recomienda
utilizar la etiqueta <source>, dentro de la etiqueta de audio, para especificar diferentes formatos, de
forma que el navegador utilizado cargue la primera que sea capaz de reconocer.
autoplay
El atributo permite especificar que el archivo de audio sea reproducido automáticamente, al ser el
archivo cargado por el navegador.
Es un atributo booleano, por tanto para que se ejecute el audio simplemente se ha de especificar el
atributo en la etiqueta.
controls
El atributo es booleano, por lo que al ser especificado en la etiqueta, permite que se visualicen los
controles de control de audio, entre los que se encuentran, el botón de reproducción, pausa, búsqueda
y volumen.
loop
muted
Al especificar el atributo, el archivo de audio será cargado, pero se activara la opción de silenciar el
audio.
preload
El atributo tiene tres valores posibles valores: none, auto y metadata. El atributo permite definir si se
realiza una precarga inicial del archivo de audio.
Si se especifica el valor none, no se realiza ningún tipo de precarga y se espera que el usuario sea el
que active el audio pulsando sobre el control correspondiente.
Si se indica el valor auto, se realiza la precarga completa del archivo de audio, para que la
reproducción sea más homogénea y no se produzcan paros o saltos en la misma. Se ha de utilizar si no
se compromete la velocidad de descarga entre el cliente y servidor.
Por ultimo si se especifica el valor metadata, se realiza como precarga solo la información
concerniente al archivo de audio, como duración, dimensión, etc.
Se ha de tener en cuenta que para realizar una carga correcta del formato de audio, se habría de
utilizar la etiqueta <source>, la cual permite realizar la carga del archivo de audio en varios formatos.
Esta última etiqueta dispone a su vez de dos atributos los cuales se habrían de especificar, cuando se
utilice la misma.
Estos atributos son src, el cual permite especificar la ruta, bien absoluta o relativa al archivo de audio.
Y otro atributo denominado type, el cual se utiliza para indicar el tipo MIME (Multipurpose Internet
95
Mail Extensions) del archivo que se quiere reproducir. Entre los posibles tipos a utilizar por este
último atributo se encuentran los siguientes:
video/ogg Video
video/mp4 Video
video/webm Video
<!DOCTYPE HTML>
<html>
<head>
<title>Ejercicios prácticos HTML5</title>
<meta charset="utf-8">
</head>
<body>
<audio controls>
<source src="Hoy.mp3" type="audio/mpeg">
<source src="Hoy.ogg" type="audio/ogg">
El Navegador NO SOPORTA AUDIO.
</audio>
</body>
</html>
El resultado del ejercicio anterior ha de ser similar al que se muestra a continuación en la imagen.
Tag video
La etiqueta <video>, es una de las nuevas etiquetas del lenguaje HTML5, que permite reproducir un
archivo de video.
Actualmente se pueden reproducir tres tipos de formato de video, mp4, WebM y ogg. Aunque
también depende del navegador que se permita su reproducción.
96
Navegador MP4 WebM Ogg
Internet Explorer SI NO NO
Chrome SI SI SI
Firefox SI SI SI
Safari SI NO NO
Opera NO SI SI
height
El atributo permite especificar el alto del video que se quiere reproducir, expresando el valor en
pixeles.
width
El atributo permite especificar el ancho del video que se quiere reproducir, expresando el valor en
pixeles.
Se ha de tener en cuenta que para realizar una carga correcta del formato de video, se habría de
utilizar la etiqueta <source>, la cual permite realizar la carga del archivo de video en varios formatos,
visualizando así el navegador el primer archivo compatible.
Esta última etiqueta dispone a su vez de dos atributos los cuales se habrían de especificar, cuando se
utilice la misma.
Estos atributos son src, el cual permite especificar la ruta, bien absoluta o relativa al archivo de video.
Y otro atributo denominado type, el cual se utiliza para indicar el tipo MIME del archivo que se
quiere reproducir. Entre los posibles tipos a utilizar por este último atributo se encuentran los
siguientes:
video/ogg Video
video/mp4 Video
video/webm Video
97
<!DOCTYPE HTML>
<html>
<head>
<title>Ejercicios prácticos HTML5</title>
<meta charset="utf-8">
</head>
<body>
<video width="320" height="240" controls>
<source src="hoy.mp4" type="video/mp4">
<source src="hoy.ogg" type="video/ogg">
Su Navegador NO SOPORTA la etiqueta VIDEO.
</video>
</body>
</html>
Incrustación de video
en página Web
Tag track
La etiqueta <track>, permite especificar subtítulos "pistas de texto", a los elementos de video y audio.
Para realizar la visualización de los mismos esta etiqueta permite la inclusión de archivos especiales
que contienen el texto que se ha de visualizar mientras se reproducen los archivos multimedia.
La etiqueta se ha de incluir en el contenido de una de las etiquetas multimedia para audio o video.
<Etiqueta Multimedia>
<track default kind="valor" label="valor" src="valor" srclang="valor">
</Etiqueta Multimedia>
Como se puede observar la etiqueta no tiene etiqueta de cierre. Los atributos de la etiqueta <track>
son los siguientes:
98
src
El atributo permite especificar la dirección URL del recurso al cual se quiere acceder, siendo en este
caso el archivo que contiene el texto que se quiere utilizar como subtítulos.
El formato de archivo que se suele cargar es .vtt (“video track text"), es un formato especial de
archivo el cual comentaremos más adelante.
default
El atributo default permite especificar cuál es el archivo de subtítulos por defecto que se ha de
visualizar, en caso de existir varios archivos de subtítulos.
Es un atributo booleano, por tanto con solo especificar el atributo en la etiqueta el mismo es aplicado.
label
El atributo permite especificar entre comillas, el titulo para la pista de texto que se está cargando.
kind
El atributo permite especificar según el valor que se indique varias opciones posibles para las pistas
de texto que se desean cargar. Entre los posibles valores se encuentran los siguientes.
Valor Descripción
srclang
El atributo define en su valor, utilizando los códigos de lenguaje, el lenguaje utilizado en la pista de
texto. El atributo es obligatorio si se utiliza en el atributo kind, el valor subtitles.
El archivo de pista de texto o subtítulos que se puede utilizar, es muy fácil de crear, ya que es un
archivo de texto plano, en el cual la primera línea ha de ser
WEBVTT
Y a continuación se añade en el archivo un salto de línea y lo que se denominan “cues", que podemos
definir como los intervalos de tiempo, en los cuales se ha de visualizar el texto de los subtítulos
durante la reproducción del archivo multimedia.
99
Para crear un “cue" se ha de especificar un id, saltar a la línea siguiente y especificar a continuación
un rango de tiempo con el formato siguiente:
Correspondiéndose el primer valor a inicio y el segundo a final, separados por espacios en blanco y
dos guiones con un símbolo de mayor.
Saltar de línea nuevamente y especificar la línea de texto que se quiere visualizar. Una vez escrita la
misma, se ha de dejar una línea en blanco, para poder escribir el siguiente “cue".
Este sería un ejemplo de archivo de subtítulos con espacios de tiempo definidos en dos “cues".
WEBVTT
1
00:00:01.000 --> 00:00:10.000
Primera línea de texto de los subtítulos.
2
00:00:15.000 --> 00:00:20.000
Segunda línea de texto
En dos líneas.
<!DOCTYPE HTML>
<html>
<head>
<title>Ejercicios prácticos HTML5</title>
<meta charset="utf-8">
</head>
<body>
<video width="640" height="480" controls>
<source src="hoy.mp4" type="video/mp4">
<track src="subtitulos.vtt" kind="subtitles" srclang="es"
label="Spanish" />
Su Navegador NO SOPORTA la etiqueta VIDEO.
</video>
</body>
</html>
El resultado del ejercicio anterior ha de ser similar al que se muestra en la imagen siguiente.
100
Subtítulos en video HTML5
Tag embed
La etiqueta <embed>, permite definir un contenedor para insertar una aplicación externa o un
contenido interactivo.
Es una etiqueta que no dispone de etiqueta de cierre por lo tanto solo se ha de utilizar la de apertura,
especificando los atributos dentro de la misma.
src
El atributo permite especificar la dirección URL del recurso al cual se quiere acceder, siendo en este
caso el archivo que contiene el objeto, animación, etc. Que se quiere utilizar.
type
Sirve para especificar el tipo MIME del documento con el que se está realizando el enlace.
Entre los tipos se puede encontrar el de objetos como flash “application/xshockwave-flash”, entre
otros.
width
El atributo permite especificar el ancho que ha de tener el contenedor del objeto que se quiere insertar,
expresando el valor en pixeles.
101
height
El atributo permite especificar el alto que ha de tener el contenedor del objeto que se quiere insertar,
expresando el valor en pixeles.
El siguiente ejemplo muestra el uso de la etiqueta en un documento web, visualizando una animación
realizada en flash.
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>Ejercicios prácticos HTML5</title>
</head>
<body>
<header>
<p>Inserción de objeto embebido FLASH</p>
</header>
<embed src="header.swf" type="application/x-shockwave-flash">
</body>
</html>
El resultado del ejercicio anterior ha de ser similar al que se muestra en la imagen siguiente.
Las metaetiquetas sirve para definir metadatos en el documento HTML, estos datos no son
visualizados por el navegador, sino que tiene otro propósito.
Las metaetiquetas son un modo perfecto para que los webmasters faciliten a los motores de búsqueda
información sobre sus sitios. Estas pueden
utilizarse para ofrecer información a todo
tipo de clientes. Cada sistema procesa
únicamente aquellas que entiende e ignora
el resto. Las metaetiquetas se añaden a la
sección <head> de su página HTML y
normalmente tienen el aspecto siguiente:
102
La etiqueta <meta> sirve para definir datos ("metadatos") sobre el documento web o html, estos datos
no son visualizados por el navegador, ya que se encuentran incluidos en la sección de encabezado y se
suelen utilizar para establecer valores como palabras claves ("keywords"), descripción de la página,
autor de la misma, última fecha de modificación, etc.
Estos datos son utilizados por los navegadores por ejemplo, para recargar la página o establecer
valores de visualización de la misma.
Los buscadores suelen utilizar las keywords para establecer valores de búsqueda para la página,
mientras que otros tipos de datos podrían ser utilizados por otros tipos de servicio web.
Charset
Este atributo permite establecer el conjunto de caracteres que ha de utilizar el navegador para
visualizar la información del documento HTML que se está representando.
Los conjuntos de caracteres que más se suelen utilizar son UTF-8 y ISO- 8859-1, que se corresponden
con la codificación Unicode y el juego de caracteres para el alfabeto Latín.
<!DOCTYPE HTML5>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
</body>
</html>
name, content
Estos atributos permiten definir pares de datos, es decir un nombre de valor con su respectivo valor o
contenido.
El atributo name sirve para establecer el nombre del dato que se quiere definir, mientras que content
sirve para establecer el valor o contenido que se le quiere dar al dato.
103
Entre los datos que se suelen utilizar están application-name, author, description, generator y
keywords.
El siguiente ejemplo muestra el uso de la etiqueta <meta> en conjunto con los atributos comentados
anteriormente:
<!DOCTYPE HTML5>
<html>
<head>
<meta charset="utf-8" />
<meta name="application-name" content="Ejercicios y prácticas 1.0">
<meta name="author" content="Hugo Delgado">
<meta name="description" content="Prácticas y ejercicios de HTML">
<meta name="generator" content="disenowebakus.net">
<meta name="keywords" content="ejercicios, practicas, programación, html,
etc.">
</head>
<body>
</body>
</html>
http-equiv
Este atributo se suele utilizar para especificar y simular atributos de cabecera del protocolo HTTP. Se
utiliza estableciendo un valor para el atributo, al igual que el atributo anterior, entre los atributos se
pueden destacar los siguientes: contenttype, default-style y refresh.
http-equiv Descripción
104
http-equiv Descripción
preferida.
El siguiente ejemplo muestra el uso de la etiqueta <meta> en conjunto con los atributos comentados
anteriormente:
<!DOCTYPE HTML5>
<html>
<head>
<meta charset="utf-8" />
<meta name="application-name" content="Ejercicios y prácticas 1.0">
<meta name="author" content="Hugo Delgado">
<meta name="description" content="Prácticas y ejercicios de HTML">
<meta name="generator" content="disenowebakus.net">
<meta name="keywords" content="ejercicios, practicas, programación, html,
etc.">
<meta http-equiv="refresh" content="400">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body>
</body>
</html>
Etiqueta <BASE>
La etiqueta <base>, permite especificar una URL2 por defecto y un destino por defecto para todos los
enlaces relativos del documento web. Es una etiqueta englobada dentro de la categoría de Contenido
de Metadatos.
La etiqueta solo puede aparecer una única vez dentro del documento web y ha de situarse a
continuación de la etiqueta de encabezado de documento <head>, siendo así la primera etiqueta del
encabezado.
Se ha de tener en cuenta también, que es una etiqueta sin cierre, es decir no existe etiqueta de cierre de
la misma y por tanto se utiliza el formato abreviado para cerrar la misma.
Entre los atributos a destacar que tiene la etiqueta se encuentran los siguientes:
href
Este atributo permite establecer la URL base para todas las URL’s relativas que existen en el
documento web
105
La sintaxis para definir esta etiqueta con el atributo href es la siguiente:
target
El atributo permite especificar el destino por defecto para todos los enlaces y formularios del
documento web.
Entre los posibles valores que se le pueden aplicar al atributo target, encontramos los siguientes:
Target Descripción
El siguiente ejemplo muestra el uso de la etiqueta <base> en conjunto con los atributos especificados
anteriormente:
<!DOCTYPE HTML5>
<html>
<head>
<base href="http://www.dominio.com/images/" target="_blank" />
</head>
<body>
<img src="imagen.gif" width="24" height="39" alt="Stickman" />
<a href="http://www.dominio.com">Enlace</a>
</body>
</html>
Etiqueta <LINK>
106
La etiqueta <link>, permite realizar la carga y establecer la relación existente entre el documento web
actual y un recurso externo. Esta etiqueta es normalmente muy utilizada para realizar la carga de hojas
de estilo para el documento web.
La etiqueta se suele insertar en la sección de encabezado del documento web, aunque es posible
encontrarla en otros sitios, al final del documento por ejemplo, lo más adecuado es situarla donde se
ha indicado.
Entre los atributos a destacar que tiene la etiqueta se encuentran los siguientes:
href
Este atributo permite establecer la URL en la que se encuentra el documento el cual se quiere enlazar,
con el documento web.
hreflang
Este atributo permite establecer el lenguaje del documento que se está enlazando, aunque no realiza
ninguna función especial en los navegadores, puede ser utilizado por los motores de búsqueda para
establecer el idioma.
rel
El atributo sirve para especificar la relación existente entre el documento web y el documento con el
que se está realizando el enlace. El atributo es obligatorio y se ha de incluir.
107
Entre los posibles valores que se pueden aplicar al atributo rel se encuentran los siguientes:
Rel Descripción
Sizes
El atributo se utiliza solo en caso de haber especificado anteriormente en el atributo rel el valor icon, y
permite especificar el tamaño del atributo con el cual se está enlazando, aunque es soportada por el
lenguaje html5, los navegadores a fecha actual no la implementan.
Sizes Descripción
type
Entre los tipos se puede encontrar el de hoja de estilos como es “text/css”, o el de texto plano
“text/plain”, etc.
media
Este atributo se ha modificado bastante en esta última versión del lenguaje, y aunque nos centraremos
posteriormente más en el mismo, inicialmente servirá para indicar el tipo de dispositivo para el cual se
está realizando el enlace.
Entre los posibles valores de dispositivos que encontramos para el atributo media, se encuentran los
siguientes:
Media Descripción
Como se ha indicado anteriormente el atributo tiene muchas más opciones que se profundizaran en las
mismas a lo largo del desarrollo del temario.
El siguiente ejemplo muestra el uso de la etiqueta <link> en conjunto con los atributos comentados
anteriormente:
<!DOCTYPE HTML5>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="theme.css" hreflang="es" />
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
</body>
</html>
Metaetiqueta Descripción
<meta name="description" Esta etiqueta proporciona una descripción breve de la página. En algunos
content="Descripción de la casos esta descripción se utiliza como parte del fragmento que se muestra
página" /> en los resultados de búsqueda.
Google puede leer metaetiquetas similares a HTML y XHTM, independientemente del código
utilizado en la página.
Salvo en el caso de "verify", el uso de mayúsculas o minúsculas no suele importar en las
metaetiquetas.
111
Diseño Web Responsive - Tutorial con ejemplos adaptables
Para hacer una página adaptable se usa la técnica media queries, que nos permite condicionar varios
estilos dependiendo la resolución de la pantalla.
COMPÁRTELO:
Quienes hemos estado creando sitios desde los comienzos de la web, estamos acostumbrados a que
nuestras páginas sean “rígidas", es decir, de ancho fijo en pixeles. En los años 90, los monitores de 14
pulgadas con un ancho de pantalla de 640px eran los únicos que existían, y ese era el tamaño que
dábamos a nuestros diseños. No pensábamos en otra opción. Simplemente definíamos tamaños en
pixeles a todas nuestras columnas.
Cerca del año 2000, surgió un segundo valor a considerar: 800px de ancho (ya existían monitores de
15 y de 17 pulgadas). El problema era que, si definíamos el ancho total de nuestro sitio en 800px, a
los usuarios de monitores de 640px de ancho que todavía quedaban, les aparecía una poco elegante y
nada usable barra de desplazamiento horizontal. El sitio no entraba en la pantalla.
Las soluciones para ese escenario dividido en dos tamaños eran muy sencillas: hacíamos un
contenedor general de 640px de ancho y lo centrábamos dejando una pequeña franja sin ocupar a
ambos costados o bien hacíamos un sitio con ancho definido en porcentajes, que se estiraba
ligeramente entre ambas medidas.
Más cerca en el tiempo, alrededor del año 2005, la decisión a tomar era similar: seguían existiendo
monitores de 800px (ya no quedaba ningún monitor de 640px de ancho), pero la resolución
mayoritaria pasó a ser de 1024px. Entonces, o le dábamos ancho líquido (en porcentajes) para que se
estirara entre 800 y 1024px, o creábamos un contenedor de 800px centrado, sobrando unas pequeñas
franjas a los costados, y asunto resuelto.
Pero al llegar la década del 2010, un cambio verdaderamente revolucionario alteró nuestro escenario.
Los teléfonos móviles empezaron a navegar la web, usando navegadores similares a los de una PC
(Opera, Safari, Explorer, Chrome y Firefox) y apareció la primera tableta (el iPad). Desde ese
momento, nuestras decisiones de diseño se volvieron más complejas, a causa de la diversidad de
112
tamaños de pantalla con los que los usuarios navegan nuestros sitios. ¿Para cuál de todos esos
tamaños vamos a diseñar? ¿Para todos? ¿Eso es posible?
Algún cambio es necesario en nuestra metodología de diseño, ya que un diseño líquido sencillamente
no soporta ser “estirado" desde un mínimo de 320px hasta varios miles de pixeles de ancho.
Y por otro lado, si en lugar de darle ancho líquido, le definiéramos los anchos en pixeles, el efecto
sería igual de negativo: el sitio se “miniaturizará", siendo muy incómodo navegarlo, dependiendo del
uso constante de zoom en ambos sentidos y debiendo realizar desplazamientos horizontales. Algo así
como sobrevolar la página web en helicóptero, a la manera de cómo visualizamos un mapa.
En el escenario actual, ya no podemos confiar en una resolución mayoritaria, ni en dos o tres, sino que
es preciso comprender que las resoluciones utilizadas por los usuarios cada vez estarán más
fragmentadas y serán más variadas, cubriendo rangos intermedios entre dos puntas cada vez más
distantes: dispositivos más pequeños que un monitor de PC, por un lado, y pantallas cada vez con
mayor resolución en el otro extremo.
113
La era en la que usamos y abusamos de sitios de ancho fijo en pixeles, grillas y columnas definidas en
pixeles y hasta metodologías de diseño visuales como las de maquetar usando celdas de tablas, ya
llegó a su fin. Es el fin del diseño rígido. Necesitamos algo nuevo.
Las páginas web por naturaleza son “adaptables" desde el nacimiento mismo de la Web. Para
comprobar que esta hipótesis es correcta, pensemos en un archivo HTML correctamente estructurado,
con encabezados, párrafos y listas. Pero sin diseño. Es decir, un archivo HTML al que no le
vinculamos ninguna hoja de estilos, al que no lo maquetamos. Por ejemplo, el siguiente:
<!DOCTYPE html>
<html>
<head>
<title>Aprendiendo HTML5</title>
<meta charset="utf-8">
</head>
<body>
<h1>Actualizate a HTML5 y CSS3</h1>
<p>Estamos marcando semánticamente los contenidos de nuestros sitios web, y
agregamos microdata. Aplicamos efectos decorativos con CSS3 como sombras, gradientes y
relieves.</p>
<ul>
<li><a href="index.html">Inicio</a></li>
<li><a href="contacto.html">Contacto</a></li>
</ul>
</body>
</html>
Si tratamos de navegar este archivo desde dispositivos de distintos tamaños, no tendremos ningún
problema para acceder a sus contenidos: el texto será legible en un celular, en una tableta y en una PC
también.
114
Un HTML sin estilos (sin diseño) es adaptable por naturaleza.
Desde ya que no está “optimizado” para esos tamaños, nunca dijimos que fuera estéticamente logrado,
solo que es adaptable, que se puede usar en todos los tamaños.
En conclusión, el problema que dificulta acceder a nuestros sitios web desde móviles es generado por
nuestro proceso de diseño: surge cuando agregamos hojas de estilo y diseñamos, dando medidas a
cada bloque de contenidos y a los elementos que lo componen (imágenes, tipografías, etc.).
Aunque más que el diseño en sí, diríamos que es el “sobre-diseño” el culpable de la rigidez. El error
consiste en definir toda medida en pixeles, pretendiendo controlar al detalle la ubicación de la
información. Ese es el principal causante de esta inflexibilidad.
Es decir, somos los diseñadores mismos los que causamos el problema, con nuestro antiguo proceso
de diseño (heredado de medios gráficos como el papel) y la falla está en algunas decisiones que
tomamos en su transcurso (como las unidades de medida que elegimos aplicar).
El hecho de que seamos los responsables del problema es una muy buena noticia, ya que si
estamos provocando el problema, también está en nuestras manos la solución. No depende de
115
“otros”, no es causada por los fabricantes de dispositivos ni de navegadores ni de editores
HTML: está plenamente en nuestras manos la decisión de hacer que nuestros sitios empleen
técnicas adaptables.
Ante todo, la técnica: se denomina Media Queries a la posibilidad de definir condiciones que deben
cumplirse para que el navegador procese algunas reglas de estilo específicas dentro de nuestra hoja
CSS.
Por ejemplo, podríamos definir una condición que determine que si el tamaño de pantalla es menor a
480px de ancho, el navegador procese ciertos estilos CSS que dejaremos preparados. En esos estilos,
definiremos diseños ideales para un dispositivo que cumpla con esa condición, es decir, que no supere
ese ancho de pantalla de 480px.
Mediante el uso de esta técnica, se intenta optimizar la experiencia de uso de un sitio web para adaptar
el diseño al contexto. En este caso, sería un tamaño variable de pantallas el que le brinda un contexto
muy particular a los contenidos, limitando los diseños posibles.
También podemos combinar varias condiciones en una sola utilizando el operador lógico “and” tantas
veces como sub-condiciones necesitemos combinar. En el siguiente ejemplo, combinaremos dos
condiciones: que sea una pantalla y que mida como mínimo 1024 pixeles de ancho.
En este otro ejemplo, combinaremos tres condiciones: que sea pantalla, que mida más de 320px y
menos de 768 pixeles de ancho.
Deberemos tener especial cuidado en que los valores de los rangos que definamos no se
superpongan. Es decir, si el valor máximo de uno es 320, definiremos el inicio del siguiente
rango en 321 y no en 320 exactos, ya que de lo contrario se leerán las dos hojas cuando un
dispositivo tenga exactamente esa medida.
Esta posibilidad de combinar varias condiciones será indispensable para poder detectar los rangos de
tamaños a los que se aplicará una u otra hoja de estilos.
Esta técnica llamada media queries, que nos permite condicionar la lectura de distintos estilos, es la
que nos abre la posibilidad a un nuevo enfoque de diseño web, que resulta ideal para dar soporte a la
116
enorme diversidad de dispositivos existentes actualmente. Este enfoque es conocido como “diseño
web adaptable” o “diseño web sensible” (responsive web design, originalmente).
En pantallas grandes (una media querie de “Mayor a 1024px”, por ejemplo) podríamos hacer flotar 3
columnas, mientras que en una tableta (una media querie de “Mayor a 800px”, por ejemplo) solo
dejaremos flotar 2 columnas, y en el caso de pantallas más angostas (celulares, sin media queries)
anularemos todos los flotados, reduciendo la cantidad de columnas a una sola (“apilando” los
contenidos uno debajo del otro).
/* Diseño para PC */
@media screen and (min-width: 1025px) {
#columna1, #columna2, #columna3 {
float:left;
width:33%;
}
Un código similar al anterior es el utilizado para lograr estos cambios en el sitio del Japan Times:
Pero no solo el layout puede cambiar entre una pantalla y otra; analizaremos a continuación cuáles
son los elementos de diseño que es importante adaptar para que el contenido web quede optimizado
para diferentes dispositivos.
117
Elementos del diseño web adaptable
Comencemos a analizar uno por uno estos elementos, así aprenderemos a incluirlos en nuestros
proyectos, para que podamos volverlos adaptables y dejemos atrás la era de la rigidez.
El primer elemento del diseño que volveremos flexible desde nuestra hoja de estilos será el texto. La
novedad será que cambiaremos la unidad de medida más utilizada hasta el momento para definir el
tamaño de las fuentes mediante la propiedad font-size (es decir, los pixeles), por otras dos unidades de
medida más versátiles.
Si continuamos utilizando pixeles como unidad de medida para nuestras fuentes, tendremos dos tipos
de problemas:
Texto primero
¿Por dónde empezamos entonces el proceso de codificación (HTML) si queremos aplicar Media
Queries? Por el principio: el texto.
Pregunta al paso que siempre me gusta plantear a mis alumnos: ¿Cuál es el denominador común de
una pizza? ¿Aceitunas? ¿Cebollas? ¿Tomates? ¿O la masa?
Una vez marcados los textos semánticamente (con h1, h2, p, ul con li), aplicamos los identificadores y
clases que creamos necesarios, y ya tendremos el código HTML básico terminado. Ese texto bien
estructurado con HTML elemental, será suficiente para cualquier celular de bajas prestaciones que
aún pudiera estar utilizando algún usuario.
118
Tipografía, siempre en EM
Ahora sí, llegó el momento de definir en nuestra hoja de estilos las unidades de medida que volverán
flexible nuestro esquema tipográfico, para garantizar la legibilidad de nuestros contenidos. Pensemos
que la distancia de lectura en una PC es cercana al metro, mucho mayor a la que existe entre nuestros
ojos y un teléfono o tableta que sostenemos en nuestras manos:
Por ese motivo, los tamaños de fuentes deberán ser mayores para una PC que para una tableta, y los
de una tableta, mayores que los de un celular.
Para lograrlo, no usaremos más pixeles para definir el tamaño de fuentes, sino que usaremos la unidad
de medida em y los porcentajes, combinados de una manera particular: al body (y solamente al body)
le definiremos un font-size base en porcentaje, y al resto de textos, se lo definiremos en em:
body {
font-size:80%;
}
Observemos que hemos definido en em los tamaños de fuentes de nuestros contenidos usando
indistintamente etiquetas, id o clases, en un solo lugar: la zona inicial de nuestra hoja de estilos,
aquella que leerán todos los dispositivos sin condiciones, ya que no se encuentra envuelta en ninguna
media query.
Por otro lado, cuando aplicamos una condición para cierto tamaño, lo único que cambiamos es el
valor base en porcentaje aplicado al body, lo que hará que todo el esquema tipográfico definido en
ems se escale proporcionalmente a un nuevo tamaño. Es decir, lo que estamos haciendo es cambiar el
tamaño del em, al cambiar su punto de referencia (que es ese porcentaje que definimos en el body).
Como orientación, podemos calcular que en la mayoría de las pantallas de PC, a tamaño de fuente
normal, la equivalencia entre ems y pixeles es que 1em = 16px, por lo que, si queremos definir en la
hoja de estilos un texto que en Photoshop ocupaba 24px, lo dividiremos por 16 para saber su valor en
em, que en este caso sería 1.5em. Atención: utilicemos puntos como separador decimal, no comas.
Por supuesto, nada impide que realicemos ajustes en alguna de las media queries si queremos que
determinado texto tenga una medida especial en una de ellas. Pero el punto de partida ya quedará
establecido automáticamente.
Con estas nuevas unidades de medida ya podremos crear esquemas tipográficos adaptables, que se
visualicen de manera óptima según la distancia de lectura de cada dispositivo.
Notemos que no estamos definiendo un tamaño rígido, sino una relación proporcional entre los
distintos tamaños de texto de nuestra página, proporción que se mantendrá a lo largo de todos los
dispositivos gracias a que vamos a escalar el esquema completo en cada media query.
Aprovechando que cada zona de la hoja de estilos que envolvamos entre media queries permite que
ciertos estilos se apliquen solo en un rango de tamaños de pantalla, en cada zona acomodaremos los
contenidos en columnas de una manera optimizada para el tamaño del dispositivo.
En principio, convengamos que en un celular básico no es suficiente el espacio para flotar dos o más
columnas una al lado de la otra, por lo que el layout será extremadamente simple: solo dejaremos que
los bloques se apilen uno debajo del otro por orden de aparición en el código HTML.
120
A partir de allí, haremos flotar tantos bloques como creamos necesario en cada media query.
Grillas flexibles
La grilla flexible consiste en definir anchos de contenedor y de columnas en porcentajes, para que los
bloques de un diseño mantengan una proporción entre sí dentro del rango de ancho mínimo y máximo
definido en cada media query del punto anterior.
La fórmula para calcular los porcentajes a partir de un boceto en pixeles es la de dividir el ancho del
elemento por el del que lo envuelve:
Es decir, ese bloque que medía 600px dentro de un contenedor de 960px ahora deberá medir 62.5%
(ese valor surge del 0.625 de la cuenta que acabamos de realizar)
En este contexto, también debemos volver flexibles los márgenes y paddings, para que no arruinen
con pixeles la proporcionalidad de los espacios conseguida.
Si en cada zona de los estilos CSS delimitada por una media querie apuntamos a distintas imágenes
(de distintos tamaños), no tendremos problemas con background-image:
121
/* La imagen más pequeña va primero, sin condiciones, porque es para el celular más chico */
.logo {
background-image: url(logo-chico.jpg);
}
en el caso de etiquetas IMG, haremos flexible la imagen dentro del rango mínimo y máximo de un
layout:
Eso hará que dentro del rango de ancho del elemento que envuelva a la foto (columna) la imagen se
estire desde un mínimo y hasta un máximo. Como el máximo es su tamaño real, 100%, consideremos
ese ancho al definir el ancho de su elemento contenedor, o viceversa: creemos la imagen al tamaño
máximo al que llegará su elemento contenedor.
Existen varias propuestas del W3C para especificar que el navegador descargue distintas imágenes
según el tamaño de pantalla (tal como en las imágenes de fondo) como por ejemplo, la posible
122
etiqueta “picture” con varias etiquetas “source”, cada una condicionada por una media query, o que se
modifique la etiqueta “img” permitiendo especificar más de un source mediante el atributo srcset. Al
momento de escribir este libro ninguna de ellas está estandarizada ni implementada por los
navegadores.
Otros casos son los de utilizar dibujos vectoriales escalables SVG en vez de una etiqueta IMG cuando
lo que muestre la imagen sea un dibujo con pocos colores (logotipos, iconos, etc.).
4. Navegación adaptable
La navegación es otro de los puntos críticos que debe adaptarse en un sitio para permitir su uso en
teléfonos y tabletas.
En el caso de la PC, vemos una serie de submenús desplegables, a partir de una lista (ul) de primer
nivel que contiene el nombre de cada sección en letras grandes, y con una segunda línea descriptiva.
Vemos cómo, en un tamaño mediano de pantalla (tableta), esa segunda línea desaparece, y el tamaño
de fuente es menor. Ese cambio puede lograrse con algo tan sencillo como cambiar el font-size (ya lo
vimos en el primer punto de este capítulo) y ocultar con display:none los subtítulos por defecto,
haciéndolos visibles con display:block a partir de cierto tamaño de pantalla.
Por ejemplo:
.subtitulos {
display:none;
}
123
Y en el caso de la navegación en la pantalla más pequeña (teléfono), vemos que se aplicó el mismo
criterio pero para ocultar el enorme listado de submenús, dejando solamente los botones de primer
nivel, haciendo que no floten uno al lado del otro y dándoles un tamaño grande, para que puedan ser
fácilmente pulsados con los dedos en una pantalla táctil.
Otro caso bastante común es el de reemplazar un menú visualmente muy amplio que es el que se
usará en la PC, por un select con options en el teléfono.
En el código HTML, que es el mismo para todos los dispositivos, estará el código HTML de ambos
menús (el formulario con el select y la “ul” con botones).
Por ejemplo:
<ul id="menupc">
<li>HOME</li>
<li>CONTACTO</li>
</ul>
<form id="menumovil">
<select>...etc... </select>
</form>
Desde la hoja de estilos, en la zona inicial de la hoja sin condiciones, ocultamos el menú de PC y
mostramos el de celular:
#menupc {
display:none;
}
#menumovil {
display:block;
}
Y en una media query, invertiremos esto para cuando estemos en pantallas grandes:
Configurando el Viewport
124
El tamaño de la “ventana” del navegador en una PC, siempre coincide o es menor que el tamaño de la
pantalla. Es decir, o usamos el navegador maximizado, a pantalla completa, o lo achicamos un poco.
Pero nunca es más grande que la pantalla.
En móviles, en cambio, o la ventana del navegador coincide con el tamaño de pantalla (siempre
maximizada), o es mayor que el tamaño de pantalla, viendo solo una parte de ella por vez. Nunca es
menor ya que no podemos “achicar” la ventana para que ocupe menos de una pantalla. Pero sí puede
suceder lo contrario, que el contenido supere el tamaño de la pantalla porque estemos viendo solo una
parte, debido a la utilización del zoom.
Por ejemplo: Safari y Opera Mini asignan 980px de ancho al viewport y hacen zoom para mostrar lo
que suponen una web hecha para PC (y en el 99% de los casos, ¡aciertan!).
Veamos un ejemplo comparando la misma página sin que el navegador le haga zoom,
“miniaturizándola”, y con la etiqueta viewport que lo impide, que veremos a continuación:
¿Cómo podemos impedir que los navegadores móviles escalen nuestros sitios y los miniaturicen? La
solución es una nueva etiqueta meta cuyo name es “viewport”, que solo es aplicada por dispositivos
móviles y es ignorada en computadoras de escritorio.
Su sintaxis es la siguiente:
Dentro del atributo content, lo que estamos haciendo es definir que el width de la ventana del
navegador tenga un valor “real”; es decir, que el navegador no nos “mienta”, sino que utilice como
valor de su propiedad “width” el valor de otra propiedad, que es “device-width”, es decir, el ancho
físico de su pantalla.
Por otro lado, notemos que hemos definido un valor inicial para el zoom, mediante la propiedad
initial-scale a un valor de “1” que equivale a 100%, es decir, el tamaño natural. De esta manera,
cuando el navegador ingrese a nuestra página, no aplicará ningún nivel de zoom que previamente el
usuario hubiera configurado.
Atención con el zoom: no debemos desactivar por completo la posibilidad de realizar zoom
por parte del usuario, ya que ésta es una atribución suya. Pensemos, por ejemplo, en un
125
usuario miope, que necesita ampliar parte de nuestro sitio. Para eso, evitemos definir en la
etiqueta viewport los valores de mínimum-scale y de maximum-scale, lamentablemente muy
difundidos.
Los celulares más antiguos, cuyos navegadores no entienden media queries, no tendrán problemas en
mostrar un diseño acorde a su tamaño si ese diseño es el primero en la hoja de estilos y no está
envuelto dentro de ninguna condición. Los navegadores móviles más modernos procesan media
queries, así que tampoco son un problema.
Las tabletas son dispositivos nuevos, creados a partir del año 2009, con lo cual todos sus navegadores
soportan media queries.
https://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js
Simplemente vinculamos nuestra página HTML a ese script con una etiqueta <script> y a partir de ese
momento el Explorer 8 interpretará las media queries.
A manera de conclusión, vimos que es perfectamente posible crear experiencias de navegación por
sitios web multidispositivo, es decir, que se puedan usar con un diseño y unas herramientas
optimizadas para diferentes tamaños de pantalla, si aprovechamos la técnica de media queries para
crear esquemas tipográficos adaptables, layouts y grillas flexibles, elementos visuales como imágenes
y videos líquidos, y herramientas de navegación optimizadas para el uso en pantallas táctiles.
Cómo subir una página Web a Internet con Filezilla vía FTP
Tutorial para transferir su sitio Web con un cliente FTP, desde su computadora local a un servidor
Web con su cuenta de hosting gratuita o de pago.
126
Paso 1:
Paso 2:
Inicia Filezilla
Paso 3:
Haga clic en Archivo en la barra de menú superior y seleccione Administrador del sitio
Administrador de Sitios
Paso 4:
127
Nuevo Sitio en Administrador de Sitios
Paso 5:
Campo
Host para ingresar dominio del sitio
Tu proveedor de Hosting gratuito o de pago es quien te proporciona o permite crear tus datos de
acceso al servidor remoto, en este caso son necesarios los datos:
Host
Usuario
Contraseña
Paso 6:
128
Cifrado TLS para FTP
Paso 7:
Paso 8:
Paso 9:
129
Modo de transferencia pasivo en Filezilla
Paso 10:
Una vez que esté conectado a su servidor, el área del sitio local mostrará los archivos y carpetas en su
computadora y el área del sitio remoto mostrará los archivos y carpetas en su servidor Doteasy.
Sus archivos web deben cargarse en la carpeta /public_html/ . Simplemente expanda el directorio /
(raíz) y haga doble clic en la carpeta /public_html/
La forma más fácil de copiar archivos desde y hacia el servidor es simplemente arrastrarlos y soltarlos
de un lado a otro.
130