Html5-Avanzado
Html5-Avanzado
https://dogramcode.com/programacion
HTML
&
CSS CU RSO PRÁCT I CO
https://dogramcode.com/programacion
Revisión:
Marta Giménez, Miriam Msaoury y Jordi Nicolás Soler Datos catalográficos
Luján, Sergio
HTML & CSS: Curso práctico avanzado
Primera Edición
Alfaomega Grupo Editor, S.A. de C.V., México
ISBN: 978-607-622-595-0
Formato: 17 x 23 cm Páginas: 484
ISBN: 978-607-622-595-0
Derechos reservados:
Esta obra es propiedad intelectual de su autor y los derechos de publicación en lengua
española han sido legalmente transferidos al editor. Prohibida su reproducción parcial o total
por cualquier medio sin permiso por escrito del propietario de los derechos del copyright.
Nota importante:
La información contenida en esta obra tiene un fin exclusivamente didáctico y, por lo tanto,
no está previsto su aprovechamiento a nivel profesional o industrial. Las indicaciones
técnicas y programas incluidos, han sido elaborados con gran cuidado por el autor y
reproducidos bajo estrictas normas de control. ALFAOMEGA GRUPO EDITOR, S.A. de
C.V. no será jurídicamente responsable por: errores u omisiones; daños y perjuicios que se
pudieran atribuir al uso de la información comprendida en este libro, ni por la utilización
indebida que pudiera dársele.
Edición autorizada para venta en México y todo el continente americano.
Impreso en México. Printed in Mexico.
https://dogramcode.com/programacion
Índice general
Capítulo 1
Preámbulo...................................................................... 13
Introducción ..................................................................... 13
¿Para quién es este libro?............................................... 14
El desarrollo de las páginas web ..................................... 16
Estructura del libro........................................................... 16
Convenciones tipográficas .............................................. 17
Sitio web del libro ............................................................ 20
Sugerencias y errores ..................................................... 20
PARTE I
CONCEPTOS GENERALES .............21
Capítulo 2
Estructura de un sitio web .......................................... 23
Qué es un sitio web ......................................................... 24
Contenido de un sitio web ............................................... 28
Estructura física ............................................................... 32
Las URL ...........................................................................................35
Nombres de los directorios y de los ficheros ...................................38
Las URL amigables ......................................................... 39
Tipos de direcciones ........................................................................41
Estructura lógica .............................................................. 43
Estructura secuencial.......................................................................44
Estructura en rejilla ..........................................................................47
Estructura en árbol...........................................................................48
Estructura en red .............................................................................50
Estructura mixta ...............................................................................50
Comparativa.....................................................................................51
Cómo no perderse en la estructura de un sitio web ........................52
Consejos.......................................................................... 60
© Alfaomega - Altaria 5
https://dogramcode.com/programacion
Capítulo 3
Los estándares web ...................................................... 63
Los estándares ................................................................ 64
El World Wide Web Consortium 1 ...................................... 66
El juego de caracteres .....................................................................69
Fuentes de información ................................................... 72
Microsoft Developer Network ...........................................................72
Mozilla Developer Network ..............................................................74
W3Schools .......................................................................................76
PARTE II
HTML..................................................79
Capítulo 4
El lenguaje de marcado de hipertexto ...................... 81
Introducción ..................................................................... 82
Evolución de HTML ......................................................... 82
HTML5 ............................................................................. 88
¿Por qué se pueden seguir empleando características
obsoletas en las páginas web? ........................................................91
Diferencias entre HTML y XHTML ................................... 92
Qué recursos necesito para escribir HTML ..................... 96
fl
Conceptos básicos de HTML .......................................... 99
Estructura de una página web ....................................... 104
Variantes de XHTML 1.0................................................ 109
Cómo escribir texto en una página web ........................ 110
Cómo comprobar que una página web está
bien escrita .................................................................... 113
Por qué es importante escribir código correcto ............. 118
Caracteres especiales y secuencias de escape............ 125
Elementos en línea o en bloque .................................... 128
Metadatos ...................................................................... 128
Novedades en HTML5 ...................................................................132
6 © Alfaomega - Altaria
https://dogramcode.com/programacion
Capítulo 5
La estructura de la página ......................................... 135
Encabezados de sección............................................... 136
Nuevos elementos de HTML5 ....................................... 138
Capítulo 6
El texto .......................................................................... 151
Semántica del texto ....................................................... 152
Edición ........................................................................... 158
Semántica de bloques de texto ..................................... 160
Líneas horizontales ....................................................... 163
Capítulo 7
Enlaces .......................................................................... 165
El hipertexto................................................................... 165
Enlace a un punto del mismo documento ......................................167
Enlace a otro documento ...............................................................173
Enlace a un punto de otro documento ...........................................175
Apertura de un enlace en una ventana nueva ...............................177
Evitar que un buscador siga un enlace ..........................................178
Envío de un correo electrónico ......................................................179
Capítulo 8
Listas ............................................................................. 183
Tipos de listas ................................................................ 183
Listas de definición ........................................................ 184
Listas ordenadas ........................................................... 186
Listas no ordenadas ...................................................... 187
Capítulo 9
Tablas............................................................................ 191
Tablas .......................................................................... 191
Unión de filas y columnas.............................................. 198
© Alfaomega - Altaria 7
https://dogramcode.com/programacion
Tablas invisibles............................................................. 200
Alineamiento del contenido de una tabla ...................... 203
Distancia entre celdas ................................................... 207
Capítulo 10
Imágenes ...................................................................... 211
Formatos de imagen...................................................... 212
El formato GIF................................................................................213
El formato JPEG ............................................................................216
El formato PNG ..............................................................................220
Cómo insertar una imagen en una página web ............. 223
El atributo alt ..................................................................................224
El atributo longdesc .......................................................................225
Imágenes como fondo de una página ........................... 228
Novedades en HTML5................................................... 228
La etiqueta <figure> .......................................................................228
La etiqueta <canvas>.....................................................................231
SVG ...............................................................................................233
Capítulo 11
Formularios ................................................................. 241
Los formularios .............................................................. 241
Controles tradicionales de un formulario ....................... 243
Campos de texto y de contraseña .................................................248
Campos de verificación..................................................................250
Campos excluyentes......................................................................250
Envío de ficheros ...........................................................................250
Campos ocultos .............................................................................253
Listas de selección.........................................................................254
Áreas de texto ................................................................................257
Etiquetas de campos .....................................................................259
Eventos ..........................................................................................261
Novedades en HTML5................................................... 263
Alineamiento de formularios .......................................... 272
8 © Alfaomega - Altaria
https://dogramcode.com/programacion
Capítulo 12
Multimedia .................................................................. 283
Vídeo ............................................................................. 283
Audio ............................................................................. 290
PARTE III
CSS ..........................................295
Capítulo 13
Las hojas de estilo en cascada .................................. 297
Evolución de CSS.......................................................... 298
Separación del contenido y la presentación .................. 302
Conceptos básicos de CSS ........................................... 306
Cómo aplicar los estilos................................................. 307
Comentarios...................................................................................313
Estilos para diferentes dispositivos ................................................314
Estilos alternativos .........................................................................317
Estilos persistente, preferido y alternativo .....................................320
Cómo validar una hoja de estilo en cascada ................. 320
Lenguaje de estilo por defecto .......................................................324
Compatibilidad con los navegadores............................. 329
Capítulo 14
El color .......................................................................... 337
Introducción ................................................................... 337
Nombres básicos de colores ......................................... 338
Nombres extendidos de colores .................................... 339
Código hexadecimal ...................................................... 339
Código RGB decimal o en porcentaje ........................... 340
Código RGBA decimal o en porcentaje ......................... 341
Código HSL ................................................................... 342
Código HSLA ................................................................. 343
© Alfaomega - Altaria 9
https://dogramcode.com/programacion
Capítulo 15
Selectores, unidades y funciones ............................ 345
Selectores...................................................................... 345
Selectores en CSS3 ...................................................... 351
Unidades de medida...................................................... 354
Funciones ...................................................................... 355
Elementos en línea o en bloque .................................... 357
Recomendaciones para escribir una hoja de
estilo correcta ................................................................ 361
Capítulo 16
El texto .......................................................................... 365
La propiedad font........................................................... 366
Tipos de letra de reserva ...............................................................370
Uso de cualquier tipo de letra ........................................................371
Propiedades del texto .................................................... 376
Sangría .......................................................................... 377
Alineación ...................................................................... 379
Decoración .................................................................... 382
Sombra .......................................................................... 383
Cambio de minúsculas y mayúsculas ........................... 389
Espaciado de letras, palabras y líneas .......................... 392
Espacios en blanco ....................................................... 394
Capítulo 17
Tablas............................................................................ 399
Los antiguos atributos de la tabla .................................. 399
El título de la tabla ......................................................... 403
Estilo cebra .................................................................... 405
10 © Alfaomega - Altaria
https://dogramcode.com/programacion
Capítulo 18
Transformaciones....................................................... 409
Introducción ................................................................... 409
Escalar........................................................................... 410
Rotar .............................................................................. 412
Sesgar ........................................................................... 413
Trasladar ....................................................................... 415
Varias transformaciones a la vez................................... 415
Capítulo 19
Transiciones ................................................................ 417
Introducción ................................................................... 417
Propiedades que pueden ser animadas ........................ 419
Funciones de intervalos de transición ........................... 422
Capítulo 20
Diseño .......................................................................... 427
Maquetación de una página web................................... 428
El modelo de caja .......................................................... 430
El relleno ........................................................................................434
El borde..........................................................................................435
Ancho del borde......................................................................................................436
Estilo del borde .......................................................................................................437
Color del borde .......................................................................................................440
Propiedades resumidas del borde ..........................................................................444
El margen.......................................................................................446
El contorno..............................................................................................................450
Posicionamiento ............................................................ 452
Estilos de diseños.......................................................... 457
Diseño fijo ...................................................................... 458
Diseño líquido o fluido....................................................................462
Diseño elástico...............................................................................468
Diseño híbrido ................................................................................473
Diseño adaptativo o adaptable ......................................................477
Separación de la presentación y la maquetación .......... 483
© Alfaomega - Altaria 11
https://dogramcode.com/programacion
Dogram Code
https://dogramcode.com/programacion
1
Preámbulo
Introducción
La World Wide Web, también conocida como la Web, la Red de redes o
simplemente “la Red”, es un sistema mundial de servidores conectados a
Internet que fue desarrollada entre marzo de 1989 y diciembre de 1990
por el inglés Tim Berners-Lee con la ayuda del belga Robert Cailliau
mientras trabajaban en la Organización Europea para la Investigación
Nuclear (CERN).
Hoy en día, aprender algo nuevo, por muy pequeño o muy raro que
sea, se encuentra a nuestro alcance gracias a la Web. En la Web podemos
encontrar millones de recursos sobre cualquier tema. Pero esta abun-
dancia de información, que supone una gran ventaja, también puede ser
un problema. ¿Por dónde se debe empezar a aprender algo nuevo? ¿Qué
recursos son confiables? ¿Qué recursos están actualizados?
Con todo ello, cabe esperar que en la Web se puedan encontrar nu-
merosos recursos para aprender sobre la misma Web o el desarrollo de
las páginas web. Y efectivamente así es, pero esta abundancia de infor-
mación puede ser un impedimento para el correcto aprendizaje y de ahí
la creación de este libro, cuyo objetivo principal es el de servir de guía
para ayudar al usuario que quiera aprender a desarrollar páginas web
de forma autodidacta si lo desea realmente. Para ello, se ha sintetizado
y resumido lo más importante, lo esencial que se debe aprender, pero
también se han incluido numerosas referencias para ampliar la infor-
mación facilitada.
© Alfaomega - Altaria 13
https://dogramcode.com/programacion
HTML & CSS
https://dogramcode.com/programacion
Curso práctico avanzado
Fuente: Tim Berners-Lee: we need more MPs who know how to code,
h p://www.theguardian.com/technology/media-network-blog/2014/
nov/17/sir- m-berners-lee-we-need-more-mps-who-know-how-to-code
Desde hace unos pocos años muchos aspectos de nuestras vidas se
desarrollan a través de la Web: nos comunicamos, compramos o tra-
bajamos a través de la Web. Si tenemos en cuenta lo que decían Steve
Jobs y Tim Berners-Lee, todo el mundo debería aprender cómo funciona
la Web y cómo se desarrollan las páginas web. Este libro es adecuado
para cualquiera que crea en lo anterior, para cualquiera que tenga in-
terés en aprender a desarrollar sus propias páginas. No son necesarios
© Alfaomega - Altaria 15
https://dogramcode.com/programacion
HTML & CSS
https://dogramcode.com/programacion
Curso práctico avanzado
Convenciones tipográficas
Con el fin de mejorar la legibilidad del texto, distintas convenciones
tipográficas se han empleado a lo largo de todo el libro.
© Alfaomega - Altaria 17
https://dogramcode.com/programacion
HTML & CSS
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”u -8”>
< tle>Plan lla base de HTML5 con la sintaxis de HTML</ tle>
</head>
<body>
<p>Contenido a visualizar en la página web.</p>
</body>
</html>
Consejo
Lleva a los usuarios a tu página de inicio “real” cuando escriban la URL principal o
hagan clic en un enlace a tu si o. Las pantallas de presentación deben morir. Una
excepción: si tu si o con ene material que es inapropiado para menores de edad
o que es suscep ble de ofender a algunos usuarios, entonces sí que es conveniente
tener una pantalla de presentación que sirva de advertencia sobre el contenido.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
h p://www.nngroup.com/ar cles/113-design-guidelines-homepage-usability/
18 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
Más información
h p://youtu.be/qqJf0EK0aFs
Advertencia
© Alfaomega - Altaria 19
https://dogramcode.com/programacion
HTML & CSS
Sugerencias y errores
Cualquier sugerencia sobre este libro será bienvenida. Estaré encanta-
do de saber qué ha sido útil y qué no, que cambiarías o que mejorarías.
Puedes contactar en la dirección [email protected].
20 © Alfaomega - Altaria
https://dogramcode.com/programacion
PARTE I
Conceptos
generales
https://dogramcode.com/programacion
https://dogramcode.com/programacion
2
Estructura de
un sitio web
© Alfaomega - Altaria 23
https://dogramcode.com/programacion
HTML & CSS
24 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
1 Disponible en http://www.nike.com/
2 Disponible en http://www.britishairways.com/
© Alfaomega - Altaria 25
https://dogramcode.com/programacion
HTML & CSS
26 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
Consejo
Lleva a los usuarios a tu página de inicio “real” cuando escriban la URL
principal o hagan clic en un enlace a tu sitio. Las pantallas de presentación
deben morir. Una excepción: si tu sitio contiene material que es inapropiado para
menores de edad o que es susceptible de ofender a algunos usuarios, entonces sí
que es conveniente tener una pantalla de presentación que sirva de advertencia
sobre el contenido.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
Consejo
La frase más vergonzosa que surgió de la era del diseño superϔluo fue “Saltar
Presentación”.
Fuente: Prioritizing Web Usability. Jakob Nielsen, Hoa Loranger. New Riders, 2006
© Alfaomega - Altaria 27
https://dogramcode.com/programacion
HTML & CSS
Consejo
Designe claramente una página por sitio web como la página principal. Den-
tro del sitio web, restrinja el uso de los términos “Inicio” y “Página de inicio” para
referirse exclusivamente a esta página principal y use un término diferente para las
páginas de inicio de los departamentos o subsitios web. Los usuarios nunca deben
enfrentarse a múltiples botones o enlaces etiquetados como “Inicio” que vayan a
diferentes lugares.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
Consejo
La página principal suele ser la página más visitada del sitio web porque es
el punto de partida de la navegación por el resto de páginas. Desde la página
principal los visitantes deben ser capaces de encontrar todas las páginas del
sitio web.
Consejo
Coloca la barra de navegación en las posiciones normales donde los usuarios
esperan encontrarla: en la parte superior de la página, en el lateral izquierdo
—si la lectura de la página es de izquierda a derecha— y en el lateral derecho
—si la lectura de la página es de derecha a izquierda—.
https://dogramcode.com/programacion
Curso práctico avanzado
Consejo
El contenido precede al diseño. El diseño en ausencia de contenido no es diseño,
es decoración.
Fuente: Jeffrey Zeldman
https://twitter.com/zeldman/status/804159148
Consejo
Con pocas excepciones, la gente visita la Web por su utilidad, no por su belleza.
Tener un sitio visualmente atractivo es bueno, por supuesto, pero el contenido es
sagrado. Después de todo, cuando la gente escribe sus preguntas en los motores
de búsqueda, no pregunta por los atributos estéticos – está buscando información.
Fuente: Prioritizing Web Usability. Jakob Nielsen, Hoa Loranger. New Riders, 2006
Consejo
La clave para crear un sitio web extraordinario es crear la mejor experiencia po-
sible para tu audiencia con contenido original y de alta calidad. Si los visitantes
del sitio lo encuentran útil y único, puede que vuelvan o pongan un enlace a tu
contenido en su propio sitio web. A la larga, esto puede contribuir a atraer a más
usuarios a tu sitio.
Fuente: Academia para webmasters – 1.4 Crear contenido valioso
https://support.google.com/webmasters/answer/6001093?hl=es
© Alfaomega - Altaria 29
https://dogramcode.com/programacion
HTML & CSS
• Periódicos:
o Editorial.
o Noticias internacionales.
o Noticias nacionales.
o Deportes.
• Centros educativos:
o Personal.
o Profesores.
o Estudiantes.
o Planes de estudio.
• Portal genérico:
o Noticias.
o Canales.
o Correo.
o Chat.
Consejo
El contenido común ayuda a que un usuario no se sienta perdido cuando
acceda a un sitio web por primera vez, ya que le permite reconocer elementos
familiares.
Por otro lado, el contenido especíϐico es aquel que incorpora cada sitio
web como propio y que no tiene por qué encontrarse en otros sitios web
de la misma categoría. Por ejemplo, un periódico digital puede decidir
ofrecer a sus lectores una cuenta de correo electrónico gratuita, un ser-
vicio que no se suele encontrar normalmente en los periódicos digitales,
pero que sí que es común en los portales web.
Respecto a la forma de estructurar y presentar el contenido, lo más
adecuado es aplicar una técnica de embudo: mostrar primero la informa-
ción más general y luego, si así lo solicita el usuario, facilitar información
más detallada.
30 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
Consejo
Enfatiza las tareas de mayor prioridad para que los usuarios tengan un punto
de partida claro en la página principal. Coloca estas tareas en un lugar visible,
como la parte media-alta de la página, y evita que haya competencia visual entre
ellas. En otras palabras, si se acentúa todo, nada atraerá la atención del usuario.
Mantén un número pequeño de tareas básicas (de 1 a 4) y el área alrededor de
ellas despejada.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
Consejo
Cuando empieces a crear contenido, asegúrate de que tu sitio web sea:
Útil e informativo: si vas a lanzar un sitio web de un restaurante, puedes
incluir la ubicación, el horario de apertura, la información de contacto,
el menú y un blog en el que compartir los futuros eventos.
Más valioso y útil que otros sitios: si escribes acerca de cómo adiestrar
un perro, asegúrate de que tu artículo ofrezca valor adicional o una pers-
pectiva diferente a los numerosos artículos que hay en la web sobre el
mismo tema.
© Alfaomega - Altaria 31
https://dogramcode.com/programacion
HTML & CSS
https://support.google.com/webmasters/answer/6001093?hl=es
Estructura física
La estructura física de un sitio web es la forma en que se almacenan
los distintos recursos en forma de ficheros (archivos) que forman un sitio
web en el sistema de ficheros del servidor web. ¿Se almacenan todos los
32 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
© Alfaomega - Altaria 33
https://dogramcode.com/programacion
HTML & CSS
(a) (b)
Figura 4: Distintos tipos de estructuras físicas
34 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
(a) (b)
Figura 5: Distintos tipos de estructuras físicas
Las URL
Una URL (Uniform Resource Locator) es un identificador de un recurso
en Internet. Las URL fueron desarrolladas por Tim Berners-Lee y son
uno de los pilares del funcionamiento de la Web. Los navegadores web
emplean las URL para recuperar los recursos identificados. Normalmente
no se emplea el término URL, sino otros más informales como dirección
o dirección web4.
4 Una dirección web se puede emplear en diferentes etiquetas de HTML, como por ejemplo <a>, <script>,
<img> y <link>.
© Alfaomega - Altaria 35
https://dogramcode.com/programacion
HTML & CSS
Consejo
Es el deber de un webmaster asignar URL que sean capaces de ser válidas durante
2 años, 20 años, 200 años.
Fuente: “Cool URIs don’t change”, Tim Berners-Lee
http://www.w3.org/Provider/Style/URI.html
Además, una página web también suele poseer enlaces a otras páginas
web que se identifican mediante sus URL. Por ejemplo, en la Figura 6 se
muestra la página web que se identifica por la URL http://accesibilidad-
web.es/. Esta página web posee una barra de navegación horizontal con
cinco enlaces y numerosos enlaces que aparecen destacados con el color
amarillo a lo largo de toda la página.
En la Figura 7 se puede ver una lista con los enlaces que existen en
esta página web. Esta lista se ha creado con la opción “View Link Infor-
36 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
Más información
http://youtu.be/qqJf0EK0aFs
5 https://chrome.google.com/webstore/detail/web-developer/bfbameneiokkgbdmiekhjnmfkcnldhhm
© Alfaomega - Altaria 37
https://dogramcode.com/programacion
HTML & CSS
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789-_.~
Tabla 1: Caracteres no reservados en una URL
! # $ & ‘ ( ) * + , / : ; = ? @ [ ]
Tabla 2: Caracteres reservados en una URL
! # $ & ‘ ( ) * + , / : ; = ? @ [ ]
%21 %23 %24 %26 %27 %28 %29 %2ª %2B %2C %2F %3ª %3B %3D %3F %40 %5B %5D
Tabla 3: Caracteres reservados en una URL con su código porciento
6 RFC 3986 “Uniform Resource Identifier (URI): Generic Syntax” disponible en https://tools.ietf.org/html/
rfc3986
38 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
Más información
En Internet existen muchas páginas web que realizan la codificación y deco-
dificación URL. Por ejemplo:
URL Encode Decode: http://www.url-encode-decode.com/
© Alfaomega - Altaria 39
https://dogramcode.com/programacion
HTML & CSS
http://www.electro-abc.es/electronica/videos/sonic1430.html
En esta página se muestran las características del vídeo Sonic 1430. El usuario
puede ser que modifique la URL y escriba:
http://www.electro-abc.es/electronica/videos/
con la esperanza de obtener una página con una lista de todos los vídeos, o
puede ser que incluso escriba:
http://www.electro-abc.es/electronica/
para obtener una lista completa de todos los dispositivos que existen
en el apartado de electrónica del sitio web de venta de electrodomésticos.
Las URL amigables o URL semánticas, conocidas en inglés como clean
URL, user-friendly URL, SEO-friendly URL o semantic URL, son aquellas
que describen el contenido del recurso al que apuntan y por tanto son
entendibles para el usuario. Las URL amigables son fáciles de entender,
de recordar y de comunicar porque están formadas por palabras rela-
cionadas con el contenido del recurso. Por contraposición, una URL no
amigable suele llevar variables GET y números difíciles de recordar.
Los motores de búsqueda modernos tienen en cuenta las palabras que
aparecen en una URL. Una URL no amigable puede no ser correctamente
indexada, lo que produce que la página pueda tener una peor indexación.
En la Tabla 4 se muestran varios ejemplos de URL no amigable y
amigable. Se puede comprobar que la URL amigable es más fácil de
comprender y recordar.
40 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
Más información
Las URL son un elemento esencial de un sitio web. Una mala decisión en la
forma de definir las URL puede tener un impacto muy negativo sobre el SEO.
En “Cómo simplificar la estructura de direcciones URL” se explican algunos
problemas, como la presencia de un número innecesariamente elevado de
URL para una misma página:
https://support.google.com/webmasters/answer/76329?hl=es
Tipos de direcciones
Las direcciones web se pueden clasificar de distintas formas. Aten-
diendo al ámbito de referencia, se pueden dividir en direcciones que
hacen referencia a recursos del propio sitio web y direcciones que hacen
referencia a recursos de otro sitio web. Además, las primeras también se
pueden clasificar en direcciones dentro del propio documento (intradocu-
mentales) y direcciones a otro documento (extradocumentales).
Por otro lado, las direcciones también se pueden clasificar en direccio-
nes absolutas y direcciones relativas. Cuando se crea una dirección desde
© Alfaomega - Altaria 41
https://dogramcode.com/programacion
HTML & CSS
un sitio web a otro sitio web, siempre se emplea una dirección absoluta
con una URL de la forma:
http://www.otrositio.es/dir/recurso.xxx
42 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
Estructura lógica
La estructura lógica o estructura de navegación define cómo un visitante
se va a mover (navegar) de una zona a otra de un sitio web. La estruc-
tura lógica y la física son totalmente independientes, aunque se pueden
definir de forma que una sea una proyección de la otra. Según el tipo
de navegación que se permita en un sitio web, los usuarios tendrán una
sensación de “poca libertad” (navegación controlada) o “mucha libertad”
(navegación libre).
Al igual que con la estructura física, la estructura lógica también se
tiene que planear con cuidado y antes de comenzar a desarrollar el sitio
web, con el fin de asegurarse de que todos los usuarios podrán navegar
por el sitio fácilmente. Para lograrlo, es conveniente dar respuesta a una
serie de preguntas:
• ¿Cuál es el propósito de este sitio web?
• ¿Qué contendrá?
• ¿Cuál es la audiencia a la que está destinado?
• ¿Qué esperamos obtener?
• ¿Qué esperamos que los visitantes obtengan?
Por ejemplo, un sitio web destinado a proporcionar noticias (el sitio
web de un periódico) tendrá una apariencia y una navegación distintas
a las de un sitio web destinado a vender productos de playa para jóvenes
que practican surf.
© Alfaomega - Altaria 43
https://dogramcode.com/programacion
HTML & CSS
Estructura secuencial
La estructura secuencial (sequential structure) es la más simple de todas.
En ella, el usuario comienza en la página principal y sólo puede navegar
en una dirección (hacia adelante o hacia atrás). En la Figura 9 se puede
ver una representación simplificada de esta estructura.
Esta estructura se suele emplear en los siguientes casos:
• Un curso o tutorial.
• Una visita guiada (tour).
• Un asistente (wizard) que explica cómo se realiza algo.
• Un proceso determinado compuesto de una serie de pasos secuen-
ciales, como por ejemplo una compra o el registro de un usuario
en un servicio de correo electrónico gratuito.
10 Disponible en https://support.google.com/webmasters/answer/6001102?hl=es
44 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
Figura 10: Menú general con los módulos del curso “Academia para webmasters”
© Alfaomega - Altaria 45
https://dogramcode.com/programacion
HTML & CSS
Figura 12: Final de la primera lección del curso “Academia para webmasters”
46 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
Estructura en rejilla
La estructura en rejilla (grid structure) se emplea cuando existen estruc-
turas secuenciales paralelas. Algunos casos típicos de esta estructura son
los sitios web escritos en varios idiomas, de forma que la misma página
se puede consultar en otros idiomas, o los sitios web que ofrecen cada
página en distintos formatos (por ejemplo, formato de pantalla, forma-
to de impresión, formato para discapacitados, etc.). En la Figura 14 se
muestra un esquema de esta estructura. Normalmente, desde cualquier
página se puede navegar a la misma página existente en una de las otras
estructuras secuenciales paralelas.
11 Disponible en https://support.google.com/webmasters/answer/6001102?hl=es
© Alfaomega - Altaria 47
https://dogramcode.com/programacion
HTML & CSS
Figura 16: Primera lección del curso “Academia para webmasters” en inglés
Estructura en árbol
La estructura en árbol (tree structure) es una de las más comunes en
los sitios web, ya que permite estructurar el contenido de una forma je-
rárquica con distintos niveles, lo que facilita la búsqueda de información
48 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
(a) (b)
Figura 18: Problemas en la estructura en árbol
© Alfaomega - Altaria 49
https://dogramcode.com/programacion
HTML & CSS
Estructura en red
La estructura en red (web structure) es la típica de Internet. En este tipo
de estructura no existe un orden establecido de navegación, de forma que
cada página puede estar enlazada con todas las páginas que componen
el sitio web. Además, en este tipo de estructura, el sitio web suele tener
varias páginas de inicio, tal como se observa en la Figura 19.
Estructura mixta
En realidad, las cuatro estructuras que se han comentado son ideales:
en el mundo real suelen aparecer mezcladas entre sí, tal como se mues-
tra en la Figura 20. Por ello, lo más común es que la estructura de un
sitio web sea una estructura mixta (mixed structure), aunque en muchos
casos es posible distinguir estructuras concretas en algunas partes de
un sitio web.
50 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
Comparativa
Las cuatro estructuras lógicas o de navegación básicas (secuencial,
en rejilla, en árbol y en red) que se han explicado se pueden comparar
en función de distintas características. En la Figura 21 se muestran las
cuatro estructuras clasificadas en función del poder de expresividad y de
la capacidad de navegación que presentan. Esta comparación es cualitativa
y no cuantitativa, por ejemplo, no se puede afirmar que la estructura
en árbol posea un 40% más de expresividad respecto a la estructura
secuencial.
El poder de expresividad se mueve desde un nivel bajo en el cual la
información contenida en un sitio web se percibe de igual forma por todos
los visitantes, a un nivel alto en el cual cada visitante puede percibir la
misma información de distintas formas.
La capacidad de navegación se mueve desde un nivel bajo con poca
libertad donde los movimientos del visitante son predecibles, a un nivel
alto con mucha libertad donde la navegación es impredecible, el visitante
se puede perder fácilmente o llegar a páginas a las que no nos interese
que llegue (riesgo alto de navegación confusa). En la próxima sección se
explican algunos mecanismos que evitan que un usuario se pierda o se
sienta confundido al navegar por un sitio web.
© Alfaomega - Altaria 51
https://dogramcode.com/programacion
HTML & CSS
52 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
Estás en: Accesibilidad web > Ejemplos > Errores típicos > Formularios >
Formulario con un cuestionario tipo test
12 Disponible en http://accesibilidadweb.dlsi.ua.es/?menu=ej-form-test
© Alfaomega - Altaria 53
https://dogramcode.com/programacion
HTML & CSS
13 Disponible en http://www.lan.com/
54 © Alfaomega - Altaria
Curso práctico avanzado
Que el proceso de compra sea similar en los dos sitios web no es una
casualidad, es algo normal. Los desarrolladores de sitios web copian
ideas de otros sitios web similares o, incluso, muchas veces adoptan el
mismo funcionamiento con el objetivo de lograr una mejor experiencia
de usuario y que el usuario sepa usar el sitio web sin problemas.
Consejo
Innovar es bueno, pero innovar demasiado puede ser malo. A veces es mejor
ser conservador: si un tipo de sitio web suele tener una estructura y forma
de navegación estandarizada, no confundas al usuario y diseña tu sitio web
pensando en el usuario final.
56 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
© Alfaomega - Altaria 57
https://dogramcode.com/programacion
HTML & CSS
14 Disponible en http://accesibilidadweb.dlsi.ua.es/?menu=mapa-sitio
58 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
15 Disponible en http://www.lamoncloa.gob.es/Paginas/MapaWeb.aspx
© Alfaomega - Altaria 59
https://dogramcode.com/programacion
HTML & CSS
Consejos
A continuación se incluyen algunos consejos que pueden ayudar a
obtener una estructura lógica de un sitio web correcta:
• Regla de las tres pulsaciones17 (“tres clicks”): la media de pulsacio-
nes para acceder a cualquier información útil del sitio web debería
ser tres pulsaciones. Los usuarios buscan rapidez y efectividad.
• Hay que evitar los “callejones sin salida”: páginas que no poseen
enlaces para continuar la navegación.
16 Disponible en http://accesibilidadweb.dlsi.ua.es/?menu=mapa-alfabetico
17 Esta regla se suele citar y emplear muy a menudo, pero en realidad no ha sido científicamente
demostrada.
60 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
18 George A. Miller. “The magical number seven, plus of minus two: Some limits on our capacity for pro-
cessing information”. Psychological Review, 63, páginas 81-97, marzo 1956.
© Alfaomega - Altaria 61
https://dogramcode.com/programacion
3
Los estándares
web
© Alfaomega - Altaria 63
https://dogramcode.com/programacion
HTML & CSS
Los estándares
En la actualidad, el empleo de los estándares en el desarrollo de los
sitios web ayuda a ahorrar tiempo y dinero. Pero no siempre ha sido así.
Antes de que los estándares web se desarrollasen y se extendiese su uso,
el desarrollo de las páginas web estaba plagado de prácticas erróneas
que dificultaban el mantenimiento de las páginas web o que impedían
la correcta visualización en diferentes navegadores. Algunos ejemplos
de estas prácticas erróneas eran el empleo de tablas invisibles para la
maquetación, la utilización de imágenes invisibles (espaciadores) para
la maquetación y el empleo de etiquetas, atributos y valores específicos
de algunos navegadores web.
Los estándares web son las tecnologías establecidas por el World Wide
Web Consortium (W3C) y otros organismos internacionales de estandari-
zación, como la European Computer Manufacturers Association (ECMA).
Los estándares web también incluyen las mejores prácticas estandari-
zadas para construir sitios web usables y accesibles.
Cuando se indica que una página web se adhiere a los estándares
web significa que en su desarrollo se han empleado las tecnologías que
forman parte de los estándares web:
• Los lenguajes de marcado: HTML, XHTML y XML.
• Los lenguajes de presentación: CSS, MathML y SVG.
• El modelo de objetos de documento: DOM.
• Los lenguajes de script: JavaScript.
Un lenguaje de marcado, como HyperText Markup Language (HTML),
está compuesto por etiquetas que definen la estructura de una página
web. Un lenguaje de marcado no es un lenguaje de programación, sino
simplemente un lenguaje de etiquetas o marcas que, interpretadas por
un navegador web, definen cómo mostrar la información.
Un lenguaje de presentación, como Cascading Style Sheet (CSS), es
un conjunto de instrucciones que define la presentación de un docu-
mento electrónico como una página HTML. Un lenguaje de presentación
tampoco es un lenguaje de programación. Un lenguaje de presentación
puede definir el color, el tamaño de letra, la tipografía y la posición de
los elementos que componen una página web.
Un lenguaje de script, como JavaScript, define el comportamiento de
una página web y la interacción que el usuario puede realizar sobre la
64 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
No existe ninguna norma que obligue a indicar que una página web
cumple los estándares web, pero sí que es muy normal encontrar alguna
indicación en las páginas de los organismos oficiales. Por ejemplo, en la
Figura 36 se muestra el pie de página de la web del Ministerio de Educa-
ción, Cultura y Deporte20. En esta página hay tres logotipos que indican
que se cumplen los estándares de accesibilidad WCAG 1.0 nivel AA, de
lenguaje de marcado XHTML 1.0 y de lenguaje de presentación CSS.
19 Disponible en http://www.lamoncloa.gob.es/
20 Disponible en http://www.mecd.gob.es/
© Alfaomega - Altaria 65
https://dogramcode.com/programacion
HTML & CSS
Figura 36: Pie de página de la web del Ministerio de Educación, Cultura y Deporte
21 Disponible en http://www.w3.org/Consortium/Member/List
66 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
22 Disponible en http://www.w3c.es/Consorcio/mision
© Alfaomega - Altaria 67
https://dogramcode.com/programacion
HTML & CSS
23 Disponible en http://www.w3.org/Consortium/siteindex.html#technologies
68 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
Consejo
Sólo hay una web. Cualquiera que trate de cortarla en dos descubrirá que su trozo
es muy aburrido.
Fuente: Tim Berners-Lee
http://news.bbc.co.uk/2/hi/technology/6983375.stm
El juego de caracteres
La codiϐicación de caracteres es el método que convierte un carácter de
un lenguaje natural en un símbolo de otro sistema de representación,
como un número o en el caso de un ordenador una secuencia de unos
y ceros. El juego de caracteres es la equivalencia carácter a carácter de
la codificación de los caracteres de un lenguaje natural a un sistema de
representación.
24 Disponible en http://www.w3.org/TR/html5/
© Alfaomega - Altaria 69
https://dogramcode.com/programacion
HTML & CSS
70 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
25 Disponible en http://www.w3.org/International/techniques/authoring-html-dynamic
© Alfaomega - Altaria 71
https://dogramcode.com/programacion
HTML & CSS
Más información
https://youtu.be/_MwDNB3jOx0
https://youtu.be/4vF41rQU_4Y
Fuentes de información
La Web está llena de sitios web con información sobre desarrollo web
y sobre sus tecnologías. Esta información puede ser una gran ayuda,
pero se tiene que emplear con mucho cuidado, ya que mucha de esta
información puede ser incompleta o incluso errónea.
A continuación se indican tres sitios web de confianza en los que
se ofrece información de confianza y actualizada que normalmente no
contiene errores, aunque ningún sitio web puede estar exento de tener
errores. Por ello, conviene consultar la misma información en varios sitios
web para contrastar la información y estar seguros de que es correcta.
72 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
27 Disponible en https://msdn.microsoft.com/en-us/library/ie/hh772960(v=vs.85).aspx
28 Disponible en https://msdn.microsoft.com/en-us/library/ie/ms531209(v=vs.85).aspx
© Alfaomega - Altaria 73
https://dogramcode.com/programacion
HTML & CSS
29 Disponible en https://developer.mozilla.org/
30 Disponible en https://developer.mozilla.org/en-US/docs/Web/HTML
74 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
31 Disponible en https://developer.mozilla.org/en-US/docs/Web/CSS
© Alfaomega - Altaria 75
https://dogramcode.com/programacion
HTML & CSS
W3Schools
W3Schools32 es un sitio web con información para desarrolladores web.
Incluye tutoriales para aprender desde cero las principales tecnologías
que se emplean en el desarrollo web, como HTML, CSS, JavaScript,
DOM, PHP, etc. Además, también incluye referencias completas de estas
tecnologías.
En la Figura 47 se muestra la página principal de W3Schools. Este
sitio web dispone de la función “Try it Yourself” que permite ejecutar el
código HTML o CSS en la propia página web.
32 Disponible en http://www.w3schools.com/
76 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
© Alfaomega - Altaria 77
https://dogramcode.com/programacion
https://dogramcode.com/programacion
PARTE II
HTML
https://dogramcode.com/programacion
https://dogramcode.com/programacion
4
El lenguaje
de marcado de
hipertexto
El lenguaje HTML se emplea para crear las páginas web que se publi-
can en la Web. El lenguaje HTML es muy sencillo de emplear: no es un
lenguaje de programación, sino un lenguaje de marcado compuesto de
marcas, también llamadas etiquetas o elementos que pueden contener
atributos que poseen un valor. Las etiquetas no se pueden escribir de
cualquier forma, sino que existe una serie de reglas que definen un orden
entre las etiquetas.
Los navegadores web (web browsers) son capaces de interpretar las
etiquetas y mostrar los documentos con el formato deseado por el desa-
rrollador de la página web.
En este capítulo se explican los conceptos básicos de HTML, las dife-
rentes versiones que existen de HTML, la estructura de un documento
y algunas etiquetas básicas.
Los objetivos de este capítulo son:
• Aprender los conceptos básicos del lenguaje de marcado HTML.
• Conocer las diferentes versiones que existen de HTML.
• Entender por qué es importante escribir código correcto y confor-
me a la especificación oficial para lograr que las páginas web se
visualicen correctamente en la mayoría de los navegadores.
© Alfaomega - Altaria 81
https://dogramcode.com/programacion
HTML & CSS
Introducción
HTML no es un lenguaje de programación como Fortran, Pascal, C, C++
o Java. HTML es un lenguaje de marcado que, mediante la utilización de
etiquetas, permite la identificación de los elementos que componen una
página web, como puede ser un párrafo de texto, una tabla o una ima-
gen. Estas etiquetas las interpretan los navegadores web para mostrar
en pantalla una página web.
Aunque HTML tiene más de 100 etiquetas, normalmente sólo se em-
plean 20 o 30 etiquetas para crear las páginas web, por lo que no es
necesario conocer HTML en su totalidad para poder escribir páginas web.
Evolución de HTML
El nacimiento de HTML va ligado al de la Web. En 1989, Tim Berners-
Lee llevaba varios años trabajando en la Organización Europea para la
Investigación Nuclear (CERN) en Suiza. Aunque Tim era físico, desde que
había finalizado sus estudios universitarios se había dedicado a trabajar
en temas de telecomunicaciones e informática. En marzo de 1989, Tim
escribió un pequeño informe, “Information Management: A Proposal”33,
en el que proponía el desarrollo de un sistema distribuido de gestión
de la información. Tim Berners-Lee le presentó el informe a su jefe en
el CERN, Mike Sendall. Mike le devolvió a Tim el informe con sólo tres
palabras escritas al principio de la primera página, “Vague but exciting...”
(Figura 49), impreciso pero emocionante...
33 Disponible en http://info.cern.ch/Proposal.html
82 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
Figura 49: Primera página del informe “Information Management: A Proposal” con la anotación manuscrita de Mike
Sendall
34 Respuesta a la pregunta “What made you think of the WWW?” planteada “Answers for Young People” en
disponible http://www.w3.org/People/Berners-Lee/Kids.html
© Alfaomega - Altaria 83
HTML & CSS
Más información
En contra de lo que mucha gente cree, el hipertexto y la hipermedia no fueron
inventadas por Tim Berners-Lee y sus compañeros.
Más información
http://youtu.be/APBWeiNmkco
35 Tim Berners-Lee, Robert Cailliau, Jean-François Groff, Bernd Pollermann. World-Wide Web: The Infor-
mation Universe. Electronic Networking: Research, Applications and Policy, Vol. 1, No. 2, Meckler, Westport
CT, primavera 1992.
84 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
http://youtu.be/cCHzhQVqEyI
http://youtu.be/n7L6qhT3Dzg
36 Disponible en http://info.cern.ch/hypertext/WWW/TheProject.html
© Alfaomega - Altaria 85
https://dogramcode.com/programacion
HTML & CSS
Figura 51: La primera página web visualizada a través de un navegador en modo texto
37 Disponible en http://line-mode.cern.ch/www/hypertext/WWW/TheProject.html
86 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
Fecha Versión
Noviembre 1995 HTML 2.0
Enero 1997 HTML 3.2
Diciembre 1997 HTML 4.0
Diciembre 1999 HTML 4.01
Enero 2000 XHTML 1.0
Diciembre 2000 XHTML Basic
Abril 2001 Modularization of XHTML
Agosto 2002 XHTML 1.0 Second Edition
Agosto 2002 XHTML 2.0 (Working Draft)
Enero 2008 HTML 5 (Working Draft)
Julio 2008 XHTML Basic 1.1
Octubre 2008 XHTML Modularization 1.1
Octubre 2014 HTML5
Tabla 5: Versiones de HTML
© Alfaomega - Altaria 87
HTML & CSS
Más información
https://youtu.be/EEttUcYhv30
HTML5
La última versión del lenguaje HTML es la versión HTML538 (Figura
52), que fue publicada en octubre de 2014 durante la celebración del
20º aniversario de la fundación del W3C39. Esta versión recoge más de
10 años de trabajo de un gran grupo de expertos en desarrollo web. Sin
embargo, ya se está trabajando en la próxima versión, HTML 5.1, que
se espera que se publique como recomendación durante el último cua-
trimestre de 201640.
38 Disponible en http://www.w3.org/TR/html5/
39 Open Web Platform Milestone Achieved with HTML5 Recommendation, disponible en http://www.
w3.org/2014/10/html5-rec.html.en
40 Plan 2014, disponible en http://dev.w3.org/html5/decision-policy/html5-2014-plan.html
88 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
© Alfaomega - Altaria 89
https://dogramcode.com/programacion
HTML & CSS
41 Disponible en http://caniuse.com/
42 Disponible en http://beta.html5test.com/
90 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
Más información
https://youtu.be/1hR7EtD6Bns
Tecnologías de la familia HTML5:
HTML5, Canvas, SVG, Geoloca-
lización, Caché, Base de datos,
Web workers.
© Alfaomega - Altaria 91
https://dogramcode.com/programacion
HTML & CSS
<BODY>
<P>El lenguaje HTML fue creado por <A HREF=”http://es.wikipedia.org/wiki/
Tim_Berners-Lee”>Tim Berners-Lee</A>.
</P>
</BODY>
<body>
<p>El lenguaje HTML fue creado por <a href=”http://es.wikipedia.org/wiki/
Tim_Berners-Lee”>Tim Berners-Lee</a>.
</p>
</body>
• Todas las etiquetas tienen que aparecer por parejas (apertura y cierre).
En HTML se puede omitir la etiqueta de cierre en ciertas situa-
ciones. Sin embargo, en XHTML todas las etiquetas se tienen que
abrir y cerrar correctamente, por lo que no se puede escribir:
92 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
• Las etiquetas vacías tienen que llevar una barra inclinada al ϐinal. Las
etiquetas vacías son las que no pueden tener contenido entre la
etiqueta de apertura y de cierre, como las etiquetas <img>, <br>
y <hr>. En XHTML no se puede escribir:
© Alfaomega - Altaria 93
https://dogramcode.com/programacion
HTML & CSS
<hr noshade>
<input type=”checkbox” name=”idioma” value=”es” checked>
94 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
HTML XHTML
async async=”async”
autofocus autofocus=”autofocus”
autoplay autoplay=”autoplay”
checked checked=”checked”
controls controls=”controls”
default default=”default”
defer defer=”defer”
disabled disabled=”disabled”
formnovalidate formnovalidate=”formnovalidate”
hidden hidden=”hidden”
ismap ismap=”ismap”
loop loop=”loop”
multiple multiple=”multiple”
muted muted=”muted”
novalidate novalidate=”novalidate”
readonly readonly=”readonly”
required required=”required”
reversed reversed=”reversed”
selected selected=”selected”
typemustmatch typemustmatch=”typemustmatch”
Tabla 6: Atributos minimizados
Consejo
Tienes que conocer las dos sintaxis, HTML y XHTML, porque puede ser que
alguna vez tengas que modificar un sitio web escrito con cualquiera de las dos
sintaxis. Por eso es muy importante que conozcas las diferencias que existen
entre las dos sintaxis, para saber lo que es correcto en cada caso.
que equivale a:
© Alfaomega - Altaria 95
https://dogramcode.com/programacion
HTML & CSS
Consejo
Si utilizas la sintaxis XHTML, sigue los siguientes consejos para lograr
la máxima compatibilidad con todos los navegadores:
Más información
https://youtu.be/EDTgmwVNGjs
XML (eXtensible Markup Lan-
guage, Lenguaje de marcas ex-
tensible): XHTML (eXtensible
Hypertext Markup Language,
Lenguaje extensible de marca-
do de hipertexto), Diferencias
HTML – XHTML.
https://youtu.be/vay6y6exqfg
¿Cuál es el mejor lenguaje para
hacer páginas web en la actuali-
dad? Existen diferentes versiones
y hay que conocerlas todas.
https://dogramcode.com/programacion
Curso práctico avanzado
mentos HTML tienen un formato de texto plano, por lo que todo lo que se
necesita es un editor textos, como el Bloc de notas de Microsoft Windows,
para crear las páginas y un navegador, como Microsoft Internet Explorer,
para verlas. Podemos crear, vincular y probar documentos HTML com-
pletos en nuestro ordenador, aunque no esté conectado a ninguna red.
No obstante, existen numerosos programas que ayudan a crear pági-
nas web. Estos programas se pueden dividir en dos grupos: los editores
de código HTML y los programas de diseño de páginas web.
La mayoría de los editores de código HTML son simples editores de texto
con algunos botones que insertan en un documento las etiquetas más
comunes. Otros, suelen incluir la característica de resaltado de sintaxis
(syntax highlight) que consiste en que el editor es capaz de comprender
el lenguaje en el que se programa y colorea las palabras clave diferen-
ciándolas según sean etiquetas, atributos, comentarios, etc. Otros más
avanzados ofrecen la opción de completar las etiquetas, emparejar y
cerrar las etiquetas o muestran una ventana de ayuda con los atributos
que posee cada etiqueta.
Por ejemplo, en la Figura 55 se muestra la edición de una página web
en el editor Notepad++43, un editor gratuito para el sistema operativo
Microsoft Windows. Este programa es capaz de reconocer la sintaxis de
más de 40 lenguajes de programación.
Figura 55: Notepad++, editor de código HTML con las opciones de resaltado de sintaxis y envoltura de la sintaxis
43 Disponible en http://notepad-plus-plus.org/
© Alfaomega - Altaria 97
https://dogramcode.com/programacion
HTML & CSS
Consejo
Los programas de diseño de páginas web ahorran mucho trabajo y permiten
lograr una gran productividad, pero un buen desarrollador de sitios y apli-
caciones web tiene que ser capaz de trabajar con el programa más simple.
98 © Alfaomega - Altaria
https://dogramcode.com/programacion
Curso práctico avanzado
44 Aunque los nombres de los archivos pueden tener mayúsculas y minúsculas, para acceder a un archivo
no se tienen en cuenta. Por ello, en un mismo directorio no pueden existir dos archivos que sólo se diferen-
cian porque algunos caracteres aparecen en mayúsculas en uno y en minúsculas en el otro.
45 Disponible en http://www.w3.org/
© Alfaomega - Altaria 99
https://dogramcode.com/programacion
HTML & CSS
https://dogramcode.com/programacion
Curso práctico avanzado
Advertencia
Recuerda: la sintaxis HTML no es sensible a mayúsculas y minúsculas, pero
la sintaxis XHTML sí que lo es. <HTML>, <hTML> y <Html> son válidos en
la sintaxis HTML, pero no lo son en la sintaxis XHTML.
https://dogramcode.com/programacion
Curso práctico avanzado
Una etiqueta puede poseer varios atributos a los que hay que asignar
valor. Algunos de estos atributos son obligatorios, mientras que otros sue-
len ser opcionales. Por otro lado, algunos aceptan un valor de cualquier
tipo, otros cualquier valor de un tipo concreto (alfanumérico, numérico,
etc.) y, por último, algunos necesitan un valor concreto de un conjunto
de valores (un valor de una enumeración). Los atributos se escriben
dentro de la etiqueta y separados por espacios en blanco. Para asignar
un valor a un atributo se emplea el signo igual =. El valor que se asigna
a un atributo tiene que ir encerrado entre comillas. Por ejemplo, la eti-
queta <img>, que no tiene una etiqueta de cierre, tiene varios atributos,
entre ellos src, que espera cualquier carácter válido en una URL, width
y height que esperan un valor numérico y el atributo alt, que espera
cualquier cadena de caracteres. Un ejemplo de uso de esta etiqueta es:
46 A lo largo de este libro se utilizarán indistintamente los conceptos de elemento y etiqueta, aunque for-
malmente son conceptos diferentes, porque un elemento se compone de dos etiquetas, la etiqueta de inicio
y la etiqueta de cierre.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8”>
<title>Plantilla base de HTML5 con la sintaxis de HTML</title>
</head>
<body>
<p>Contenido a visualizar en la página web.</p>
</body>
</html>
Listado 1: Esqueleto básico de una página web con la sintaxis HTML
https://dogramcode.com/programacion
Curso práctico avanzado
Consejo
Comience el título de la página con una palabra portadora de información,
por lo general el nombre de la empresa. Los usuarios pueden escanear, en lugar
de leer, el texto en las pantallas, así que si no se captura la atención con la pri-
mera palabra, se arriesga a perder su atención. Si inicia el título de la página con
cualquier palabra en vez de la palabra más importante, el nombre de la empresa
se pierde en la lista de marcadores y en los resultados de búsqueda. Por ejemplo,
muchos títulos de las páginas comienzan con “Bienvenido” o “Página de inicio”,
que puede lucir bien de forma aislada, pero no transmite ninguna información
diferenciadora del sitio web en la primera palabra. Del mismo modo, si el nombre
de la empresa comienza con un artículo, como “el” o “una”, no incluya el artículo en
el título de la página. Por ejemplo, el título de la página de “The New York Times”
debe ser “New York Times”.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
Consejo
No incluya “página de inicio” en el título. Esto añade verborrea sin valor. Siempre
que tenga una URL simple para la página principal del sitio web, no es necesario
especiϔicar que es la página de inicio en el título de la página. Por supuesto, cada
página de su sitio debe tener un único título, para que ninguna otra página pueda
ser confundida con la página de inicio en el historial de navegación o en la lista
de favoritos.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
https://dogramcode.com/programacion
Curso práctico avanzado
Consejo
Limite los títulos de las páginas a no más de siete u ocho palabras y menos
de 64 caracteres en total. Los títulos más largos son menos susceptibles de ser
leídos, especialmente en las listas de favoritos, y no se mostrarán correctamente
en muchas aplicaciones.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
Más información
Si quieres saber más sobre la estructura básica de una página web, consulta
el artículo “Plantilla base XHTML” de Olga Carreras, disponible en http://
olgacarreras.blogspot.com/2007/02/plantilla-base-xhtml.html
Advertencia
¡Cuidado! Todos los atributos de presentación de la etiqueta <body> (alink,
background, bgcolor, link, text y vlink) que se empleaban en
versiones anteriores de HTML están desaconsejados en HTML5. En su lugar
se debe utilizar CSS.
Consejo
El título de una página web es también muy importante para el posiciona-
miento en los buscadores, para el SEO (Search Engine Optimization).
Consejo
Emplea los comentarios de HTML para clarificar la estructura de la página:
utiliza los comentarios para separar distintas partes del código.
También puedes emplear los comentarios para ocultar temporalmente alguna
parte de la página para realizar pruebas sin tener que borrar esa parte del
código.
Más información
https://youtu.be/sIO8kb5b6D0
https://dogramcode.com/programacion
Curso práctico avanzado
https://youtu.be/G7WJotrXz_c
https://youtu.be/-tnXAYa0eWI
https://dogramcode.com/programacion
Curso práctico avanzado
Advertencia
No utilices <br> para crear un espacio adicional entre los párrafos de texto.
En su lugar se debe utilizar CSS.
Consejo
Use los espacios de no separación entre las palabras en las frases que tienen
que ir juntas con el ϔin de ser comprendidas. La mayoría de las páginas de inicio
utilizan diseños de varias columnas, y el texto debe caber en espacios estrechos.
Debido a que hay muchas posibilidades de donde se divida el texto en función de
la resolución de pantalla del usuario, tamaño del monitor, tamaño de la ventana,
versión del navegador, y así sucesivamente, al obligar que ciertas frases permanez-
can juntas puede mantener la integridad y la lógica de los contenidos.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability
Consejo
Aunque los espacios en blanco y los saltos de línea no son significativos, utilí-
zalos para facilitar la escritura y lectura del código HTML de una página web.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=“utf-8“ />
<meta name=“generator“ content=“Bloc de notas“ />
<meta name=“author“ content=“Sergio Luján Mora“ />
<meta name=“keywords“ content=“XHTML, web“ />
<meta name=”description” content=”Página de prueba: párrafos y saltos de
línea” />
<title>Esto es una página de prueba</title>
</head>
<body>
<p>Esto es el cuerpo de una página HTML.
<br />
Esto tiene que aparecer en una línea nueva, pero en el mismo párrafo.
</p>
<p>Esto tiene que aparecer en otro párrafo.
<br /><br />
Tiene que existir una línea en blanco de separación con la anterior.
</p>
<p>Este es el último párrafo de esta página.
</p>
</body>
</html>
Listado 4: Primera página con HTML
https://dogramcode.com/programacion
Curso práctico avanzado
Más información
Si quieres conocer todas las etiquetas de HTML, consulta las páginas:
https://dogramcode.com/programacion
Curso práctico avanzado
rojo el mensaje “Errors found while checking this document as” y la versión de
HTML que se ha intentado validar, tal como se muestra en la Figura 63.
<!DOCTYPE html>
<html language=”es”>
<head>
<meta charset=”utf-8” />
<meta name=”generator” content=”Bloc de notas” />
<meta name=”author” content=”Sergio Luján Mora” />
<meta name=”keywords” content=”XHTML, web” />
<meta name=”description” content=”Página de prueba: párrafos y saltos de
línea” />
<title>Esto es una página de prueba</title>
</head>
<body>
<p>Esto es el cuerpo de una página HTML.
<break />
Esto tiene que aparecer en una línea nueva, pero en el mismo párrafo.
</p>
<p>Esto tiene que aparecer en otro párrafo.
<br /><br />
Tiene que existir una línea en blanco de separación con la anterior.
</p>
<p>Este es el último párrafo de esta página.
</p>
</body>
</html>
https://dogramcode.com/programacion
Curso práctico avanzado
Más información
Si quieres saber más sobre lo importante que es emplear los estándares en el
desarrollo de las páginas web y los beneficios que reporta, consulta la página
web de “The Web Standards Project” disponible en http://www.webstandards.
org/
Más información
https://youtu.be/CHfYRVHKMtc
https://dogramcode.com/programacion
Curso práctico avanzado
De estas cuatro posibles causas, las tres primeras están fuera del
control de los desarrolladores web:
• Las dos primeras dependen de los fabricantes de los navegadores
web, como la empresa Microsoft o la organización Mozilla.
• La tercera depende en parte de los fabricantes, como es el caso de
Microsoft que siempre ha tardado muchos años en actualizar sus
navegadores y adecuarlos a los nuevos estándares, pero también
depende de los usuarios cuando no se actualizan a los nuevos
navegadores.
• La última causa depende de los desarrolladores web, de las per-
sonas que escriben el código HTML.
La especificación del lenguaje HTML establece claramente cómo se
tiene que escribir el código HTML. El W3C proporciona un validador que
permite comprobar si el código de una página es correcto, es decir, si se
ajusta a la especificación de HTML. Sin embargo, a pesar de existir herra-
mientas como el validador del W3C, muchos de los desarrolladores web
nunca comprueban el código de sus páginas web porque suponen que
el código está correcto, ya que la página se visualiza como ellos esperan.
Los navegadores web son programas muy complejos y robustos que
están preparados para manejar ciertos errores. Pero cada navegador los
maneja de diferente forma, ya que la especificación de HTML no establece
cómo se tiene que recuperar un navegador cuando encuentre un error
en el código.
Por ejemplo, cuando no se cierra un párrafo, el navegador decide ce-
rrarlo automáticamente cuando empieza un nuevo párrafo, ya que en
las normas de HTML, un párrafo no puede contener otro párrafo. Pero
las situaciones de error pueden ser infinitas y pueden ser mucho más
complicadas que la anterior.
En el ejemplo del Listado 6, la etiqueta <p> de párrafo e <i> de cursiva
no han sido cerradas en los puntos adecuados. En HTML las etiquetas
deben estar correctamente anidadas y cerradas.
<!DOCTYPE html>
<html>
<head>
<meta charset=”utf-8” />
<title>Etiquetas no cerradas</title>
</head>
<body>
<p>Un párrafo de texto.</p>
https://dogramcode.com/programacion
Curso práctico avanzado
(a) (b)
Figura 66: Visualización de página web con errores
<!DOCTYPE html>
<html>
<head>
<meta charset=”utf-8” />
<title>Lista con errores</title>
</head>
<body>
<h1>Una lista con errores</h1>
<ul>
<li>Uno</li>
<li>Dos</li></ul>
<li>Tres</li>
</ul>
<p>Un párrafo de texto.</p>
<ol>
<li>Uno</li>
<li>Dos</li></ol>
<li>Tres</li>
https://dogramcode.com/programacion
Curso práctico avanzado
</ol>
<select>
<option>Uno</option>
<option>Dos</option></select>
<option>Tres</option>
</select>
</body>
</html>
Listado 7: Página web con errores
(a) (b)
(c) (d)
Figura 69: Visualización de página web con errores
https://dogramcode.com/programacion
Curso práctico avanzado
Más información
https://youtu.be/RnzKl8OA5gQ
https://youtu.be/fBQ8wE5Ffxs
Más información
En http://www.w3.org/TR/html401/sgml/entities.html se puede encontrar
una lista con todas las referencias a entidad de carácter definidas en HTML
4.01, que sigue siendo válida en HTML5.
Numérica Numérica
Carácter Entidad
decimal hexadecimal
“ " " "
& & & &
< < < <
> > > >
Tabla 7: Caracteres con un significado especial en HTML
49 ISO 10646 Universal Character Set (UCS) define un juego de caracteres estandarizado con casi
100.000 caracteres, donde cada carácter se identifica por medio de un nombre único y un número entero.
https://dogramcode.com/programacion
Curso práctico avanzado
Advertencia
¡Cuidado! Al copiar la URL de una página web para colocarla en un enlace,
tenemos que tener cuidado con &: si aparece como un valor literal, tendremos
que cambiarlo por &.
Numérica Numérica
Carácter Entidad
decimal hexadecimal
§ § § §
© © © ©
® ® ® ®
℗ ℗ ℗ ℗
™ ™ ™ ™ ™
¶ ¶ ¶ ¶
¼ ¼ ¼ ¼
½ ½ ½ ½ ½
¾ ¾ ¾ ¾
‰ ‰ ‰ ‰
Tabla 8: Ejemplos de caracteres sin una tecla asociada
Figura 70: Fragmento de la tabla con las referencias a entidad de carácter del W3C
50 Disponible en http://dev.w3.org/html5/html-author/charref
Advertencia
Aunque con CSS se puede alterar la presentación normal de cualquier ele-
mento de HTML (un elemento en línea se puede presentar como un elemento
en bloque y viceversa), es una muy mala práctica realizar estos cambios y no
conviene modificar el comportamiento normal de los elementos.
Metadatos
La etiqueta <meta> permite indicar metadatos de una forma muy sim-
ple. Los metadatos son datos sobre los datos. Los metadatos, por ejemplo,
permiten incorporar información sobre el contenido de una página, como
por ejemplo indicar cómo, cuándo y quién ha recogido una información y
como le ha dado formato. Esta etiqueta sólo puede aparecer en la sección
<head>. Normalmente, esta etiqueta la emplean los motores de búsqueda,
los navegadores y las herramientas de diseño de páginas web, pero no la
emplean directamente los usuarios que visualizan una página.
La etiqueta <meta> es una etiqueta vacía que no puede tener conteni-
do entre la etiqueta de inicio y de cierre. En las versiones anteriores de
HTML, como por ejemplo en XHTML 1.0, la etiqueta <meta> presentaba
dos variantes:
• <meta http-equiv=”propiedad” content=”contenido”>. El
atributo http-equiv se emplea cuando la página web se recupera
mediante HTTP. Los servidores web pueden usar el nombre de la
propiedad para crear una cabecera según el estándar RFC 822
https://dogramcode.com/programacion
Curso práctico avanzado
que puede ser usada por la caché del navegador o por los servidores
proxy para saber hasta cuándo se puede emplear la copia de una pági-
na existente en la caché. La etiqueta <meta> también se puede emplear
con la cabecera Refresh para refrescar una página cada cierto período
de tiempo. Con esta etiqueta se puede recargar automáticamente una
página cuyo contenido cambia con mucha frecuencia, como por ejemplo
la página con las últimas noticias de un periódico digital. Por ejemplo,
la siguiente página se refresca cada 5 segundos:
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” />
<meta http-equiv=”Refresh” content=”5” />
<title>Prueba de refresh</title>
</head>
<body>
<p>
Esta página se refresca cada 5 segundos.
</p>
</body>
</html>
Listado 8: Ejemplo de refresco
51 Disponible en https://tools.ietf.org/html/rfc822
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8” />
<meta http-equiv=”Refresh” content=”10; URL=http://www.nuevaweb.
com/” />
<title>Prueba de redirección</title>
</head>
<body>
<p>
Esta página ha cambiado, la nueva dirección es <a href=”http://www.nue-
vaweb.com/”>http://www.nuevaweb.com</a>.
</p>
</body>
</html>
Listado 9: Ejemplo de redirección
Consejo
No recargue automáticamente la página para enviar cambios a los usuarios.
La recarga automática se percibe como algo intrusivo, es como tirar de la alfom-
bra de debajo de sus usuarios, particularmente si están utilizando una parte de la
página que desaparece o cambia de posición durante la actualización.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
https://dogramcode.com/programacion
Curso práctico avanzado
Más información
En las siguiente páginas puedes encontrar más información sobre los robots
o bots de búsqueda y la etiqueta <meta>:
Más información
Si quieres saber más sobre los posibles valores de la etiqueta <meta>, consul-
ta la página web “A Dictionary of HTML META Tags” disponible en http://
vancouver-webpages.com/META/metatags.detail.html
Más información
Si quieres conocer las etiquetas <meta> que admite Google, consulta la pági-
na web “Metaetiquetas que Google entiende” disponible en https://support.
google.com/webmasters/answer/79812?hl=es
Novedades en HTML5
El uso de la etiqueta <meta> se ha simplificado en HTML5. Esta eti-
queta ahora posee el atributo charset que hace que sea más fácil indicar
el juego de caracteres de una página web. Antes en HTML el juego de
caracteres se indicaba como:
52 Disponible en http://www.ua.es/
https://dogramcode.com/programacion
Curso práctico avanzado
<meta charset=”UTF-8”>
Más información
En el documento Character Sets de IANA, disponible en http://www.iana.
org/assignments/character-sets/character-sets.xhtml, se definen los nombres
oficiales de los juegos de caracteres que se pueden emplear en las páginas web.
Más información
En el documento HTML5 Differences from HTML4 disponible en http://www.
w3.org/TR/html5-diff/ se detallan las diferencias que existen entre HTML4,
la versión anterior de HTML, y HTML5, la última versión.
Encabezados de sección
Los encabezados de sección son útiles para organizar la información
mostrada en una página web. Existen seis niveles de encabezados, nume-
rados del 1 al 6, de mayor a menor importancia: el nivel 1 es la etiqueta
<h1> (heading one), la más prominente, y el nivel 6 es la etiqueta <h6>,
la menos prominente. Los encabezados se suelen mostrar con tipos de
letra más grandes y tamaños decrecientes (el tamaño del texto disminu-
ye según disminuye la importancia del encabezado), en negrita o más
enfatizados que el texto normal. Pero el nivel 4 aparece normalmente
con el tamaño de letra del texto normal y los niveles 5 y 6 aparecen con
un tamaño inferior al del texto normal. El tamaño de cada encabezado
lo selecciona el navegador, por lo que la apariencia final de una página
puede variar significativamente de uno a otro. De todos modos, con CSS
se puede definir completamente la presentación de los encabezados para
que se visualicen de la misma forma en todos los navegadores web.
Los encabezados son elementos en bloque, por lo que cuando se vi-
sualizan, los encabezados comienzan en una línea nueva y se suele dejar
un margen antes de ellos. Además, también provocan un salto de línea
al final del encabezado.
En el Listado 11 se muestra un ejemplo en el que se emplean los en-
cabezados desde <h1> hasta <h4>. En la Figura 71 se puede ver cómo se
visualiza este ejemplo en un navegador. Se puede observar que el tamaño
del texto del encabezado <h4> coincide con el tamaño del texto normal,
aunque el encabezado aparece representado en negrita.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=“utf-8“ />
<meta name=“generator“ content=“Bloc de notas“ />
<meta name=“author“ content=“Sergio Luján Mora“ />
<meta name=“keywords“ content=“XHTML, web“ />
https://dogramcode.com/programacion
Curso práctico avanzado
<div class=”contenedor”>
<div id=”principal1”>
<div id=”principal2”>
<div id=”otro-div”>
<div id=”porque-soy-chulo”>
…
…
</div>
</div>
</div>
</div>
Listado 12: Ejemplo de divitis
Consejo
¿Ya no se puede utilizar la etiqueta <div>? Sí que se puede utilizar, pero
antes de emplearla hay que pensar si existe alguna etiqueta más específica
de HTML que sea más apropiada.
En algunas páginas web puede ser difícil decidir cuál es la etiqueta más
adecuada para una región de una página web. HTML5 Element Flowchart
de HTML5Doctor53 es un diagrama de flujo que, mediante varias pregun-
tas, ayuda a decidir cuál es la etiqueta más adecuada según la función
que realiza la región que se quiere etiquetar dentro de una página web.
53 Disponible en http://html5doctor.com/downloads/h5d-sectioning-flowchart.png
<div id=”header”>
<h1>Mi blog personal</h1>
</div>
<header>
<h1>Mi blog personal</h1>
</header>
<div id=”nav”>
<ul>
<li><a href=”#”>Principal</a></li>
<li><a href=”#”>Blog</a></li>
<li><a href=”#”>Fotos</a></li>
<li><a href=”#”>Contacto</a></li>
</ul>
</div>
<nav>
<ul>
<li><a href=”#”>Principal</a></li>
<li><a href=”#”>Blog</a></li>
<li><a href=”#”>Fotos</a></li>
<li><a href=”#”>Contacto</a></li>
</ul>
</nav>
<div id=”news”>
<p>El nuevo curso se inicia el próximo lunes 30 de julio</p>
<!-- Resto de las noticias -->
<p>...</p>
</div>
<aside>
<p>El nuevo curso se inicia el próximo lunes 30 de julio</p>
<!-- Resto de las noticias -->
<p>...</p>
</aside>
<div id=”main”>
<div class=”entry”>
<p class=»post-date»>diciembre 26, 2011</p>
<h2>
<a href=”#” rel=”bookmark” title=”Enlace a esta entrada”>HTML5 es lo me-
jor</a>
</h2>
<!-- Resto de la entrada -->
<p>...</p>
</div>
<!-- Otras entradas -->
</div>
<main>
<article>
<p class=»post-date»>diciembre 26, 2011</p>
<h2>
<a href=”#” rel=”bookmark” title=”Enlace a esta entrada”>HTML5 es lo me-
jor</a>
</h2>
<!-- Resto de la entrada -->
<p>...</p>
</article>
<!-- Otras entradas -->
</main>
<div class=”figure”>
<p><img src=”foto.jpg” alt=”Tim Berners-Lee” /></p>
<p>Tim Berners-Lee en la inauguración del curso de verano</p>
</div>
<figure>
<img src=”foto.jpg” alt=”Tim Berners-Lee” />
<figcaption>Tim Berners-Lee en la inauguración del curso de verano</fig-
caption>
</figure>
<figure>
<figcaption>Validación de una dirección de correo</figcaption>
<pre>
function validarEmail(valor ) { if (/^\w+([\.-]?\w+)*@\w+([\.-]?\
w+)*(\.\w{2,3})+$/.test(valor)) return (true); else { alert(“El usuario introdu-
cido es incorrecto”); return (false); } }
</pre>
</figure>
© Alfaomega - Altaria 147
HTML & CSS
<figure>
<blockquote>
<p>
El poder de la Web está en su universalidad. El acceso por cualquier persona,
independientemente de la discapacidad que presente es un aspecto esencial.
</p>
</blockquote>
<figcaption>Tim Berners-Lee, director del W3C</figcaption>
</figure>
Por último, el pie de página. En el pie de una página web suele apa-
recer el correo de contacto, el aviso legal, la información de copyright o
alguna información similar:
<div id=”footer”>
<p><a href=”#”>Contacto</a></p>
<p><a href=”#”>Aviso legal</a></p>
<p><a href=”#”>Copyright</a></p>
</div>
<footer>
<p><a href=”#”>Contacto</a></p>
<p><a href=”#”>Aviso legal</a></p>
<p><a href=”#”>Copyright</a></p>
</footer>
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Página web de prueba</title>
</head>
<body>
<header>
<h1>Mi blog personal</h1>
</header>
<nav>
<ul>
<li><a href=”#”>Principal</a></li>
<li><a href=”#”>Blog</a></li>
<li><a href=”#”>Fotos</a></li>
<li><a href=”#”>Contacto</a></li>
</ul>
</nav>
<aside>
<p>El nuevo curso se inicia el próximo lunes 30 de julio</p>
<!-- Resto de las noticias -->
<p>...</p>
</aside>
<main>
<article>
<p class=»post-date»>diciembre 26, 2011</p>
<h2>
<a href=”#” rel=”bookmark” title=”Enlace a esta entrada”>HTML5 es lo me-
jor</a>
</h2>
<figure>
<img src=”foto.jpg” alt=”Tim Berners-Lee” />
<figcaption>Tim Berners-Lee en la inauguración del curso de verano</fig-
caption>
</figure>
<p>...</p>
</article>
<!-- Otras entradas -->
</main>
<footer>
<p><a href=”#”>Contacto</a></p>
<p><a href=”#”>Aviso legal</a></p>
<p><a href=”#”>Copyright</a></p>
</footer>
</body>
</html>
Listado 14: Página web escrita con HTML5
Consejo
Localice el área principal de navegación en un lugar muy notable, de prefe-
rencia directamente adyacente al cuerpo principal de la página. Evite poner
cualquier navegación horizontal superior (primaria o de otro tipo) por encima de
los elementos gráϔicos tales como líneas horizontales o áreas de banner, los usuarios
suelen ignorar cualquier cosa dentro o por encima de una forma rectangular en
la parte superior de la pantalla. Llamamos a este comportamiento “la ceguera del
banner”, y lo hemos visto en numerosas pruebas.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
Más información
https://youtu.be/vRqQRrULSxI
54 La notación ruby se basa en el uso de los caracteres ruby que son pequeñas anotaciones que se colocan
encima o a la derecha cuando se escriben lenguajes ideogramáticos como el chino o el japonés. Estos ca-
racteres se emplean para mostrar la pronunciación de los caracteres poco conocidos. El uso de esta notación
está definida en la recomendación “Ruby Annotation” del W3C disponible en http://www.w3.org/TR/ruby/
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=“utf-8“ />
<meta name=“generator“ content=“Bloc de notas“ />
<meta name=“author“ content=“Sergio Luján Mora“ />
<meta name=“keywords“ content=“XHTML, web“ />
<meta name=”description” content=”Prueba de las etiquetas de semántica
del texto” />
<title>Prueba de formatos</title>
</head>
<body>
<h1>Semántica del texto</h1>
<p>
<b> <b>Define un texto en negrita</b><br/>
<em> <em>Define un texto enfatizado</em><br/>
<i> <i>Define un texto en cursiva</i><br/>
<mark> <mark>Define un texto resaltado</mark><br />
<s> <s>Define un texto tachado</s><br/>
<small> <small>Define un texto pequeño</small><br/>
<strong> <strong>Define un texto reforzado</strong><br/>
<sub> <sub>Define un texto subíndice</sub><br/>
<sup> <sup>Define un texto superíndice</sup><br/>
Consejo
Explique las abreviaturas, siglas y acrónimos, e inmediatamente acompá-
ñelas por la abreviatura la primera vez. Esto es útil para todos los usuarios,
especialmente para las personas que utilicen un lector de pantalla. Por ejemplo,
la página web de la Administración Federal de Carreteras (Federal Highway
Administration) hace referencia varias veces a la “MUTCD”, pero en la página
principal no se explica que esta es la abreviatura de “Manual de Dispositivos de
Control de Tráϔico Uniforme” (Manual on Uniform Traffic Control Devices). Las
abreviaturas que se han convertido en palabras ampliamente utilizadas, como DVD,
son excepciones a esta norma. En especial, se debe evitar el uso de abreviaturas sin
explicación como enlaces de navegación.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
55 Un acrónimo es un tipo de sigla y, por tanto, una abreviatura, que se pronuncia como una palabra, mien-
tras que una abreviatura no se lee como una palabra.
Advertencia
¡Cuidado! Varias etiquetas de las versiones anteriores de HTML, como
<acronym>, <big>, <strike> y <tt> están obsoletas y no se deben em-
plear en HTML5.
Advertencia
No utilices la etiqueta <font> de HTML para definir el formato del texto.
Tampoco utilices la etiqueta <center> de HTML para centrar el contenido.
Todas estas etiquetas están obsoletas y no se deben emplear en HTML5. En
su lugar se debe utilizar CSS.
Edición
En HTML existen dos etiquetas para definir un texto que ha sido edi-
tado (eliminado o insertado) en una página:
• <del> (Deleted): define un fragmento de texto que ha sido eliminado
de la página. Normalmente se representa tachado con una línea
horizontal, como este texto.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=“utf-8“ />
<meta name=“generator“ content=“Bloc de notas“ />
<meta name=“author“ content=“Sergio Luján Mora“ />
<meta name=“keywords“ content=“XHTML, web“ />
<meta name=”description” content=”Prueba de las etiquetas de texto edita-
do” />
<title>Prueba de las etiquetas de texto editado</title>
</head>
<body>
<p>
<del> <del>Define un texto que ha sido eliminado</del><br/>
<ins> <ins>Define un texto que ha sido insertado</ins><br/>
</p>
</body>
</html>
Listado 16: Ejemplo de texto editado
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=“utf-8“ />
<meta name=“generator“ content=“Bloc de notas“ />
<meta name=“author“ content=“Sergio Luján Mora“ />
<meta name=“keywords“ content=“XHTML, web“ />
<meta name=”description” content=”Prueba de las etiquetas de formatos
de bloque” />
<title>Prueba de formatos de bloque</title>
/head>
<body>
160 © Alfaomega - Altaria
Curso práctico avanzado
<footer>
<address>
Para más información, contactar con
<a href=”mailto:[email protected]”>Pepito Perez</a>.
</address>
</footer>
Listado 18: Ejemplo de uso de la etiqueta <address>
56 Disponible en http://www.w3.org/TR/html5/
Consejo
No utilices la etiqueta <blockquote> para lograr un margen a la izquierda.
En su lugar se debe utilizar CSS.
Líneas horizontales
Si se desea dibujar una línea horizontal como separador de bloques
de texto, se puede emplear la etiqueta <hr> (horizontal rule). El uso de
este elemento gráfico permite organizar el texto, separando las distintas
secciones que lo componen.
En versiones anteriores de HTML esta etiqueta poseía los atributos
align, noshade, size y width que permitían controlar la apariencia
de la línea horizontal dibujada. Sin embargo, el empleo de estos atribu-
tos está desaconsejado en HTML 4.01 y no existen en XHTML 1.0 Strict
o HTML5.
El hipertexto
Los enlaces, también llamados “hiperenlaces”, “vínculos”, “hipervíncu-
los” o “ligas” permiten relacionar distintas páginas entre sí y es la base del
hipertexto. Esta característica da la posibilidad de organizar la informa-
ción en distintos documentos enlazados, las páginas web, de forma que
el usuario pueda seleccionar la que más le interese en cada momento.
Más información
Las páginas web son el ejemplo más conocido de hipertexto e hipermedia,
pero existen otros sistemas que también se basan en estos dos conceptos. Hi-
pertexto, multimedia e hipermedia son tres conceptos que no debes confundir:
Más información
http://youtu.be/APBWeiNmkco
Consejo
No utilice instrucciones genéricas, como “Haga clic aquí” como el contenido
de un enlace. En su lugar, utilice un texto signiϔicativo en el contenido del enlace
para indicar a los usuarios qué se obtendrá cuando se pulse. Esto ayuda a los
usuarios a diferenciar rápidamente entre los enlaces cuando se está escaneando
a través de ellos.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
Consejo
No utilice la palabra “Enlace” para indicar los enlaces de la página. Muestre
que algo es un enlace subrayándolo y coloreándolo en azul. Nunca nombre una
categoría como “Enlaces”, esto es similar a marcar una categoría de información
como “Palabras” en un medio impreso. Nombre la categoría en base a lo que el
enlace está apuntando.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
Advertencia
¡Cuidado! Los atributos de la etiqueta <body> que permiten cambiar el color
de los enlaces (alink, link y vlink) están desaconsejados en HTML 4.01
y ya no existen desde XHTML 1.0 Strict. En su lugar se debe utilizar CSS.
Advertencia
¡Error! No utilices el mismo nombre para varios destinos en una misma pá-
gina.
Consejo
Los enlaces intradocumentales son muy útiles en las páginas web muy gran-
des: situando una lista de enlaces intradocumentales al principio de la página
a modo de tabla de contenido evita que el usuario se tenga que desplazar por
todo el documento para llegar a un punto concreto.
58 Disponible en http://es.wikipedia.org/wiki/Hiperenlace
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de enlace a un punto del mismo documento</title>
</head>
<body>
<h1>GLOSARIO DE TÉRMINOS</h1>
<p>
< a h r e f = ” # H T M L” > H T M L < / a > < a h r e f = ” # H T T P ” > H T T P < / a > < a
href=”#URL”>URL</a>
</p>
<h2><a name=”HTML”></a>HTML</h2>
<p>
Lenguaje usado para escribir documentos para servidores World Wide Web.
Es una aplicación de la ISO Standard 8879:1986 (SGML, Standard Generalized
Markup Language).
</p>
<h2><a name=”HTTP”></a>HTTP</h2>
<p>
HTTP es un protocolo con la ligereza y velocidad necesaria para distribuir y
manejar sistemas
de información hipermedia. Es un protocolo genérico orientado al objeto, que
puede ser usado
para muchas tareas como servidor de nombres y sistemas distribuidos orien-
tados al objeto,
por extensión de los comandos, o métodos usados.
</p>
<h2><a name=”URL”></a>URL</h2>
<p>
Utilizado para especificar un objeto en Internet. Puede ser un fichero, grupo
de news, gopher, etc.
Algunos ejemplos: file://www.uco.es/iconos/ball_red.gif, ftp://www.uco.es/
www-docs/HTMLPrimer.txt,
http://www.cica.es/, telnet://lucano.uco.es, gopher://lucano.uco.es, news://alt.
cad.autocad
</p>
</body>
</html>
Listado 19: Página web con enlaces intradocumentales
Figura 83: Página web con enlaces intradocumentales, destino del primer enlace
Figura 84: Página web con enlaces intradocumentales, destino del segundo enlace
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de enlace a un punto del mismo documento</title>
</head>
<body>
<h1>GLOSARIO DE TÉRMINOS</h1>
<p>
< a h r e f = ” # H T M L” > H T M L < / a > < a h r e f = ” # H T T P ” > H T T P < / a > < a
href=”#URL”>URL</a>
</p>
<h2 id=”HTML”>HTML</h2>
<p>
Lenguaje usado para escribir documentos para servidores World Wide Web.
Es una aplicación de la ISO Standard 8879:1986 (SGML, Standard Generalized
Markup Language).
</p>
<h2 id=”HTTP”>HTTP</h2>
<p>
Consejo
Ayuda a las personas a distinguir con rapidez los enlaces, dándoles nombres in-
formativos. En lugar de simplemente enlazar con “Más”, por ejemplo, diles a los
usuarios concretamente “qué más” van a conseguir.
Fuente: Prioritizing Web Usability. Jakob Nielsen, Hoa Loranger. New Riders, 2006
Más información
Una URL es un identificador que designa un recurso en Internet. Una URL
es una cadena de caracteres que define una dirección única de un recurso de
información disponible en Internet.
Si quieres saber más sobre las URL, consulta el siguiente recurso:
- W3C – URL: http://www.w3.org/TR/url/
Más información
http://youtu.be/qqJf0EK0aFs
El documento de destino no tiene por qué ser otra página web, sino
que puede ser cualquier tipo de documento, como una imagen o un ar-
chivo PDF.
Consejo
Muy importante: cuando indiques el nombre del documento destino (el
nombre del fichero), hay que tener mucho cuidado con las mayúsculas y
minúsculas y el nombre del fichero indicado debe coincidir con el nombre
real del fichero.
En el siguiente ejemplo (Listado 21), la página web contiene cuatro
enlaces a páginas de la Wikipedia. En la Figura 86 podemos ver cómo
se visualiza esta página web en un navegador.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de enlaces a otras páginas web</title>
</head>
<body>
174 © Alfaomega - Altaria
Curso práctico avanzado
<h1>Historia de la Web</h1>
<p>
El nacimiento de <a href=”http://es.wikipedia.org/wiki/HTML”>HTML</a>
va ligado al
de la <a href=”http://es.wikipedia.org/wiki/World_Wide_Web”>WWW</a>.
Los orígenes
de ambos se sitúan en 1990, en los trabajos que llevaba a cabo
<a href=”http://es.wikipedia.org/wiki/Tim_Berners-Lee”>Tim Berners-Lee</a>
y sus compañeros en el <a href=”http://es.wikipedia.org/wiki/CERN”>CERN</
a> en Suiza.
</p>
</body>
</html>
Listado 21: Ejemplo de enlaces a otras páginas web
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de enlace a un punto de otro documento</title>
</head>
<body>
<h1>Tim Berners-Lee</h1>
<p>
Sir Timothy “Tim” John Berners-Lee, nació el 8 de junio de 1955 en Londres,
Reino Unido, se licenció en Física en 1976 en el Queen’s College de la Univer-
sidad de Oxford.
Es considerado el padre de la web.
</p>
<p>
Básicamente, Tim, ante la necesidad de distribuir e intercambiar información
acerca de sus investigaciones de una manera más efectiva, desarrolló las ideas
que forman parte de la web.
Tim y su grupo desarrollaron lo que por sus siglas en inglés se denominan:
el lenguaje <a href=”enlace-intra.html#HTML”>HTML</a>;
el protocolo <a href=”enlace-intra.html#HTTP”>HTTP</a>;
y el sistema de localización de objetos en la web <a href=”enlace-intra.
html#URL”>URL</a>.
Muchas de las ideas plasmadas por Berners-Lee podemos encontrarlas en el
proyecto Xanadu que propuso
Ted Nelson y el memex de Vannevar Bush.
</p>
</body>
</html>
Listado 22: Ejemplo de enlaces a puntos de otra página
Figura 87: Ejemplo de página web con enlaces a puntos de otra página
Más información
https://youtu.be/SoPkwzCptjc
Valor Efecto
No especificado Ventana actual
Cadena vacía “” Ventana actual
_blank Ventana nueva
_self Ventana actual
Un nombre que no existe Ventana nueva
Un nombre que existe La ventana con ese nombre
Tabla 9: Comportamiento del atributo target en un enlace
Consejo
Evite las ventanas emergentes. Las ventanas extra mantienen a los usuarios
lejos de su contenido, e incluso si dichas ventanas contienen información valiosa,
los usuarios tienden a cerrarlas inmediatamente como si fueran anuncios. En su
lugar, ponga la información crítica en un área importante de la página. El otro
inconveniente de las ventanas emergentes es que se van, una vez que el usuario se
deshace de ellas, se han ido, por lo que los usuarios a menudo no pueden encontrar
la información de nuevo, incluso si quieren. Es mejor diseñar la página web de
forma que dé una alta prioridad al contenido crítico.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
Consejo
Los diseñadores nos dicen a menudo que abren nuevas ventanas para no perder
a los visitantes de su sitio. Pero al ϔinal, eso es una causa perdida. Si la gente real-
mente quiere irse, lo hará.
Fuente: Prioritizing Web Usability. Jakob Nielsen, Hoa Loranger. New Riders, 2006
Más información
En el artículo “Cómo usar rel=”nofollow” para enlaces específicos” de Goo-
gle se proporcionan algunos consejos para usar correctamente este atributo:
https://support.google.com/webmasters/answer/96569?hl=es
mailto:dir1[,dir2,...][?opcion1=valor1[&opcion2=valor2&...]]
Más información
En Internet existen muchas páginas web que realizan la codificación y deco-
dificación URL. Por ejemplo:
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de envío de correo electrónico</title>
</head>
<body>
<p>
Para enviar un correo electrónico, pulse sobre un enlace:<br />
<a href=”mailto:[email protected]”>Simple</a><br />
<a href=”mailto:[email protected],[email protected]”>A dos personas</a><br />
<a href=”mailto:[email protected][email protected]”>Con copia</a><br />
<a href=”mailto:[email protected][email protected]”>Con copia oculta</a><br />
<a href=”mailto:[email protected]?subject=El%20tema%20del%20mensaje”>Con título</
a><br />
< a h r e f = ” m a i l t o : a @ b . c ? s u b j e c t = Te m a & a m p ; b o d y = C u e r p o % 2 0
mensaje”>Combinando varias opciones</a>
</p>
</body>
</html>
Listado 23: Ejemplo de envío de un correo electrónico mediante un enlace
Más información
Consulta las siguientes páginas para aprender más cosas sobre el protocolo
mailto:
Tipos de listas
Las listas permiten organizar la información de una manera lógica, lo
que facilita su legibilidad. En versiones antiguas de HTML existían cinco
tipos de listas:
• Listas de definición.
• Listas ordenadas.
• Listas no ordenadas.
• Listas de directorio.
• Listas de menú.
En HTML5 sólo existen tres tipos de listas que emplean las siguientes
etiquetas:
• Listas de definición: <dl>, <dt>, <dd>.
• Listas ordenadas: <ol>, <li>.
• Listas no ordenadas: <ul>, <li>.
• Las listas se pueden anidar entre sí, incluso si son de distinto
tipo. En el caso de anidar listas no numeradas, cada nivel de ani-
damiento tendrá un tipo de símbolo distinto. De todos modos, la
presentación visual de las listas se puede definir mediante CSS.
Listas de definición
Una lista de definición se emplea para mostrar términos con sus corres-
pondientes definiciones, como si se tratase de un glosario o diccionario.
Una lista de definición se crea con la etiqueta <dl> (deϔinition list), que
encierra todo el código de la lista. Contiene una serie de términos, que se
definen con la etiqueta <dt> (deϔinition term), y cada término posee una o
más definiciones, que se indica cada una con la etiqueta <dd> (deϔinition
description). Cuando se visualiza una lista de definición, las definiciones
de cada término aparecen en una línea nueva con una sangría hacia la
derecha.
Advertencia
¡Cuidado! En HTML5 con la sintaxis de HTML la etiqueta de cierre </dt>
es opcional, pero con el formato de XHTML es obligatoria.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de lista de definición</title>
</head>
<body>
<h1>DEFINICIONES SEGÚN EL DICCIONARIO DEL RAE</h1>
<dl>
<dt>Hardware</dt>
<dd> m. Inform. Conjunto de los componentes que integran la parte material
de una computadora.</dd>
<dt>Ordenador</dt>
<dd>adj. Que ordena. U. t. c. s.</dd>
<dd>m. Jefe de una ordenación de pagos u oficina de cuenta y razón.</dd>
<dd>m. Esp. Máquina electrónica dotada de una memoria de gran capacidad
y de métodos de tratamiento de la información, capaz de resolver problemas
aritméticos y lógicos gracias a la utilización automática de programas regis-
trados en ella.</dd>
<dt>Software</dt>
<dd> m. Inform. Conjunto de programas, instrucciones y reglas informáticas
para ejecutar ciertas tareas en una computadora.</dd>
<dt>Web</dt>
<dd>f. Inform. Red informática.</dd>
</dl>
</body>
</html>
Listado 24: Ejemplo de lista de definición
Listas ordenadas
En las listas ordenadas o numeradas, cada elemento aparece nume-
rado. La etiqueta <ol> (ordered list) define una lista de este tipo. Cada
elemento se define con la etiqueta <li> (list item).
Advertencia
¡Cuidado! En HTML5 con la sintaxis de HTML la etiqueta de cierre </li>
es opcional, pero con el formato de XHTML es obligatoria.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de listas ordenadas</title>
</head>
<body>
<ol>
<li>Elemento 1</li>
<li>Elemento 2</li>
<li>Lista anidada:
<ol>
<li>Elemento 1</li>
<li>Lista anidada:
<ol>
<li>Elemento 1</li>
<li>Elemento 2</li>
<li>Elemento 3</li>
</ol>
</li>
<li>Elemento 3</li>
</ol>
</li>
<li>Elemento 4</li>
</ol>
</body>
</html>
Listado 25: Ejemplo de listas ordenadas
Consejo
Aunque no influye en la visualización posterior, escribir en el código los
elementos de una lista con un margen a la izquierda facilita la edición y
depuración del código.
Listas no ordenadas
En las listas no ordenadas, los elementos aparecen marcados mediante
unos pequeños símbolos gráficos, llamados en inglés bullet. La etiqueta
<ul> (unordered list) define una lista no ordenada. Cada elemento se define
con la etiqueta <li> (list item).
Advertencia
¡Cuidado! En HTML5 con la sintaxis de HTML la etiqueta de cierre </li>
es opcional, pero con el formato de XHTML es obligatoria.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de listas no ordenadas</title>
</head>
<body>
<ul>
<li>Elemento 1</li>
<li>Elemento 2</li>
<li>Lista anidada:
<ul>
<li>Elemento 1</li>
<li>Lista anidada:
<ul>
<li>Elemento 1</li>
<li>Elemento 2</li>
<li>Elemento 3</li>
</ul>
</li>
<li>Elemento 3</li>
</ul>
</li>
<li>Elemento 4</li>
</ul>
</body>
</html>
Listado 26: Ejemplo de listas no ordenadas
Consejo
Aunque no influye en la visualización posterior, escribir en el código los
elementos de una lista con un margen a la izquierda facilita la edición y
depuración del código.
Consejo
Evite las categorías de un solo elemento y las listas de viñetas con un solo
elemento. Es una exageración categorizar un único elemento, y las cosas que no
encajan en las categorías existentes puede signiϔicar una necesidad de reescribir
o reorganizar el contenido.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
Consejo
No utilice enlaces genéricos, como “Más ...” al ϔinal de una lista de elementos.
En su lugar, indique a los usuarios especíϔicamente lo que van a conseguir de más,
por ejemplo, “Más sobre nueva ϔicción” o “Archivo de reseñas de libros”. Los enlaces
genéricos como “Más…” son especialmente problemáticos cuando la página tiene
varios de ellos, ya que los usuarios no pueden diferenciar fácilmente entre ellos al
escanear la página.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
Más información
https://youtu.be/V2ImdQdPqNE
Tablas
Hasta que aparecieron las tablas en el lenguaje HTML, la única posi-
bilidad de tabular datos en una página web consistía en usar texto con
preformato con la etiqueta <pre> y colocar manualmente los espacios
en blanco hasta que las columnas estuviesen perfectamente alineadas.
Este proceso, además de ser realmente tedioso, no ofrecía resultados con
la vistosidad deseada.
Por ejemplo, el siguiente código (Listado 27) crea la tabla que se puede
ver en la Figura 93. La tabla se creado utilizando la técnica llamada box-
drawing carácter60, que consiste en emplear ciertos caracteres con formas
geométricas para dibujar rectángulos y cajas.
60 Disponible en http://en.wikipedia.org/wiki/Box-drawing_character
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=“utf-8“ />
<meta name=“generator“ content=“Bloc de notas“ />
<meta name=“author“ content=“Sergio Luján Mora“ />
<meta name=“keywords“ content=“XHTML, web“ />
<meta name=”description” content=”Tabla creada con la etiqueta pre” />
<title>Tabla creada con la etiqueta pre</title>
</head>
<body>
<pre>
</pre>
</body>
</html>
Listado 27: Tabla creada con caracteres
Consejo
No utilices la etiqueta <th> porque muestra el contenido con un formato
distinto. Utiliza esta etiqueta sólo para crear encabezados. Si quieres cambiar
el formato de una celda, en su lugar se debe utilizar CSS.
El siguiente ejemplo (Listado 28) muestra una tabla con bordes for-
mada por 12 celdas. La tabla tiene tres celdas que son encabezados de
columna y dos celdas que son encabezados de fila. Estas celdas se han
etiquetado con la etiqueta <th>. La tabla se ha dividido en tres filas y
cuatro columnas. En la Figura 94 vemos cómo se ve esta página en un
navegador web.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de tabla sencilla</title>
</head>
<body>
<table border=”1”>
<tr>
<th></th>
<th>Cabecera 1</th>
<th>Cabecera 2</th>
<th>Cabecera 3</th>
</tr>
<tr>
<th>Cabecera fila 1</th>
<td>Elemento (1, 1)</td>
<td>Elemento (1, 2)</td>
<td>Elemento (1, 3)</td>
</tr>
<tr>
<th>Cabecera fila 2</th>
<td>Elemento (2, 1)</td>
<td>Elemento (2, 2)</td>
<td>Elemento (2, 3)</td>
</tr>
</table>
</body>
</html>
Listado 28: Ejemplo de tabla sencilla
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de tabla con unión de varias celdas </title>
</head>
<body>
<table border=”1”>
<tr>
<td>Una celda normal</td>
<td>Una celda normal</td>
<td>Una celda normal</td>
</tr>
<tr>
<td colspan=”2”>Una celda fusionada con otra celda mediante COLSPAN</
td>
<td>Una celda normal</td>
</tr>
<tr>
<td colspan=”3”>Una celda fusionada con otras dos celdas mediante COLS-
PAN</td>
</tr>
<tr>
<td rowspan=”2”>Una celda fusionada con otra celda mediante ROWSPAN</
td>
<td>Una celda normal</td>
<td>Una celda normal</td>
</tr>
<tr>
<td>Una celda normal</td>
<td>Una celda normal</td>
</tr>
<tr>
<td rowspan=”3”>Una celda fusionada con otras dos celdas mediante
ROWSPAN</td>
<td>Una celda normal</td>
<td>Una celda normal</td>
</tr>
<tr>
<td>Una celda normal</td>
<td>Una celda normal</td>
</tr>
<tr>
<td>Una celda normal</td>
<td>Una celda normal</td>
</tr>
</table>
</body>
</html>
Listado 30: Ejemplo de tabla con unión de varias celdas
Más información
https://youtu.be/ZFrW hxpP2U
Tablas invisibles
Las tablas invisibles son aquellas que no poseen un borde visible.
Para eso se debe emplear el atributo border=”0”. Las tablas invisibles
son muy útiles para maquetar el contenido de una página web, es de-
cir, para distribuir los distintos elementos a lo largo de la página. Las
tablas invisibles permiten crear una rejilla invisible en una página web.
Por ejemplo, mediante tablas invisibles se puede mostrar el texto con
márgenes a la izquierda y a la derecha, mostrar texto a varias columnas,
dividir una imagen en diferentes ficheros y que se muestre como si no
estuviese dividida la imagen, etc.
El uso de las tablas invisibles para maquetar una página es una téc-
nica que todavía pervive pero que es mejor no utilizar. En su lugar se
debe emplear CSS.
Por ejemplo, en la Figura 97 se muestra la página principal del sitio
web del Congreso de los Diputados de España. Esta página web está
organizada visualmente mediante varias tablas anidadas, tal como se
muestra en la Figura 98 donde se muestran los bordes de las tablas
Figura 98: Página principal del Congreso de España con las tablas y celdas resaltadas
Más información
En el sitio web “Porqué diseñar con tablas es estúpido: problemas definidos,
soluciones ofrecidas” disponible en https://www.hotdesign.com/seybold/
spanish/
Consejo
No utilices tablas invisibles para maquetar el contenido de una página web,
emplea CSS. No utilices tablas con distintos colores de fondo para crear marcos
y otros efectos visuales similares, emplea CSS.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de alineamiento de tabla</title>
</head>
<body>
<table border=”1”>
<tr align=”center”>
<td>Varias<br />líneas<br />de texto</td>
<td>Alineamiento CENTER</td>
<td>Alineamiento CENTER</td>
<td>Alineamiento CENTER</td>
</tr>
<tr align=”right” valign=”top”>
<td>Varias<br />líneas<br />de texto</td>
<td>Alineamiento RIGHT y TOP</td>
<td>Alineamiento RIGHT y TOP</td>
<td>Alineamiento RIGHT y TOP</td>
</tr>
<tr align=”left”>
<td>Varias<br />líneas<br />de texto</td>
<td align=”left”>Alineamiento LEFT</td>
<td align=”center”>Alineamiento CENTER</td>
<td align=”right”>Alineamiento RIGHT</td>
</tr>
<tr>
<td>Varias<br />líneas<br />de texto</td>
<td valign=”top”>Alineamiento TOP</td>
<td valign=”middle”>Alineamiento MIDDLE</td>
<td valign=”bottom”>Alineamiento BOTTOM</td>
</tr>
<tr valign=”middle”>
<td>Varias<br />líneas<br />de texto</td>
<td valign=”top”>Alineamiento TOP</td>
<td valign=”middle”>Alineamiento MIDDLE</td>
<td valign=”bottom”>Alineamiento BOTTOM</td>
</tr>
</table>
</body>
</html>
Listado 31: Ejemplo de alineamiento del contenido de una tabla
Figura 102: Mensajes de error de validación de una página web con atributos obsoletos
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de distancia entre celdas</title>
</head>
<body>
<table border=”1” cellpadding=”5”>
<tr>
<td>Alineamiento CENTER</td>
<td>Alineamiento CENTER</td>
<td>Alineamiento CENTER</td>
</tr>
<tr>
<td>Alineamiento RIGHT y TOP</td>
<td>Alineamiento RIGHT y TOP</td>
<td>Alineamiento RIGHT y TOP</td>
</tr>
</table>
<hr />
<table border=”1” cellpadding=”15”>
<tr>
<td>Alineamiento CENTER</td>
<td>Alineamiento CENTER</td>
<td>Alineamiento CENTER</td>
</tr>
<tr>
<td>Alineamiento RIGHT y TOP</td>
<td>Alineamiento RIGHT y TOP</td>
<td>Alineamiento RIGHT y TOP</td>
</tr>
</table>
<hr />
<table border=”1” cellspacing=”5”>
<tr>
<td>Alineamiento CENTER</td>
<td>Alineamiento CENTER</td>
<td>Alineamiento CENTER</td>
</tr>
<tr>
<td>Alineamiento RIGHT y TOP</td>
Formatos de imagen
La primera versión del lenguaje HTML61 no contemplaba la posibilidad
de incluir imágenes en una página web. Posteriormente se añadió la
posibilidad de incluir imágenes, pero al principio su empleo fue escaso
debido a varias razones. Por un lado, no todos los ordenadores tenían la
suficiente potencia como para manejar páginas web con varias imágenes
a la vez; por otro lado, el ancho de banda de las comunicaciones por
Internet era mucho menor que el actual; por último, todavía no se sabía
muy bien cómo utilizar las imágenes en una página web. Sin embargo,
hoy es todo lo contrario y es muy difícil encontrar páginas web que no
empleen una gran cantidad de imágenes.
Los navegadores web admiten diferentes formatos de imagen, pero
sólo tres formatos son los más utilizados: GIF, JPEG y PNG. Las carac-
terísticas básicas de estos tres formatos se han resumido en la Tabla
10: colores indica el máximo número de colores que permite el formato
gráfico; transparencia indica si soporta transparencias (zonas de una
imagen que muestran lo que está situado detrás de ella); animación indica
si soporta animaciones, es decir, movimiento en una imagen; compresión
indica si emplea un formato de compresión sin pérdidas o con pérdidas;
dibujo indica si es un formato gráfico adecuado para almacenar imáge-
nes sencillas, como dibujos, logotipos, textos, etc.; fotografía indica si
es un formato gráfico adecuado para almacenar fotografías; por último,
gamma indica si soporta el empleo de la corrección gamma cuando se
visualiza la imagen.
El formato GIF
Durante los primeros años de la Web este formato gráfico fue uno de
los más populares en Internet. Emplea un esquema de compresión sin
pérdidas, lo que significa que el proceso de compresión y descompresión
no modifica los datos iniciales de la imagen, por lo que la calidad de las
imágenes no se ve afectada al recuperar las imágenes una vez comprimi-
das. La compresión ayuda a reducir el tamaño del fichero que almacena
una imagen. Este formato utiliza una paleta de color limitada a 8 bits,
lo que permite un máximo de 256 colores a elegir entre 16.777.216 (24
bits). La paleta de colores puede ser de distintos tamaños: 2, 4, 8, 16,
32, 64, 128 ó 256 colores.
El formato GIF permite incluir en un mismo fichero múltiples imáge-
nes, lo que permite crear animaciones. Debido a esto, el formato GIF se
hizo muy popular en los primeros años de la Web porque la inclusión de
vídeos en las páginas web no era posible y por tanto el formato GIF era la
única opción para incluir animaciones en una página web. Sin embargo,
la aparición de las plataformas de alojamiento de vídeos en línea, como
YouTube en el año 2005, hizo que la popularidad del formato GIF dismi-
nuyera considerablemente hasta casi desaparecer. No obstante, en los
últimos años las redes sociales han causado una nueva edad de oro del
formato GIF. Las redes sociales que permiten la inclusión de imágenes
han hecho que el formato GIF con animaciones vuelva a ser muy utilizado
por su sencillez de edición y el poco peso frente a los vídeos.
Consejo
No utilice una animación con el único propósito de llamar la atención sobre
un elemento de la página principal. Una animación rara vez tiene sentido en
la página principal, ya que distrae la atención de otros elementos. Una animación
capta la atención del usuario y debe ser mostrada por sí misma, mientras que
las páginas principales tienen múltiples elementos que requieren la atención del
usuario. Por ejemplo, una animación podría ser muy útil para mostrar cómo hacer
un procedimiento que se entiende mejor si se ve en vez de leerlo, como cambiar los
pañales de un bebé, pero no es apropiado para mostrarlo en una página principal,
en la que llamaría la atención frente a todos los demás elementos en la página.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
(a) (b)
Figura 104: La misma imagen GIF en blanco/negro y en color
Figura 105: GIF transparente para fondo blanco sobre fondo blanco
Figura 106: GIF transparente para fondo blanco sobre fondo no blanco
62 Disponible en http://www.iab.net/
63 Disponible en http://www.iab.net/guidelines/508676/508767/displayguidelines
El formato JPEG
El formato gráfico JPEG es uno de los más empleados en Internet de-
bido a que permite comprimir enormemente las imágenes fotográficas.
A diferencia de GIF, las imágenes JPEG son imágenes a todo color (24
bits por punto de la imagen). Además, si se emplea JPEG progresivo (me-
canismo similar al entrelazado en el formato GIF) se pueden descargar
progresivamente las imágenes, lo que facilita una previsualización rápida
de las imágenes sin tener que descargarlas completamente.
El esquema de compresión de JPEG es una sofisticada técnica matemá-
tica denominada transformación discreta de cosenos. Mediante esta téc-
nica se pueden elegir distintos grados de compresión y de calidad: cuanto
más se comprime una imagen, menor es su calidad y viceversa. JPEG
emplea compresión con pérdidas: los datos no necesarios se descartan a
medida que se comprime cada vez más la imagen. Por ello, si se trabaja
con JPEG, es recomendable conservar una copia de la imagen original
en un formato que no produzca pérdidas, ya que una vez comprimida la
imagen con JPEG es imposible recuperar los datos perdidos y, por tanto,
la calidad original de la imagen. Si se selecciona correctamente el grado de
compresión, la reducción del tamaño del fichero que contiene la imagen
compensa con creces la inapreciable pérdida de calidad a simple vista.
Por ejemplo, en la Figura 108 se muestra el detalle de una fotografía
con tres niveles de calidad/compresión: 100%, 50% y 25% de calidad.
A simple vista no se aprecia mucha diferencia entre los tres niveles. Sin
embargo, en la Figura 109 se muestra una ampliación de la fotografía
con los tres niveles de calidad. Si se comparan el detalle con 100% de
calidad y el detalle con 25%, en este último se pueden apreciar diferen-
cias respecto a la primera imagen, aunque la calidad aún sigue siendo
aceptable. Las principales diferencias se pueden apreciar en lo que se
conoce como zonas de alta frecuencia: las zonas donde se produce un
cambio brusco de color o de luminosidad, como son los contornos de las
figuras, son las que presentan mayores errores. Los errores que aparecen
al aumentar el nivel de compresión de una imagen en formato JPEG se
denominan “artefactos”.
Figura 109: Detalle de una imagen en formato JPG con tres niveles de calidad
Consejo
Utiliza el formato JPEG como un formato final. No lo utilices como formato
original de una imagen y no realices cambios directamente sobre una imagen
JPEG: cada vez que se guarda una imagen JPEG se comprime y se introducen
nuevos errores en su almacenamiento.
El formato PNG
El formato gráfico PNG fue desarrollado por el W3C como una alter-
nativa de carácter público al formato GIF tradicional. El formato GIF lo
había desarrollado la compañía Compuserve a partir de un esquema
de compresión privado (LZW) que era propiedad de la compañía Unisys
Corporation. Hasta el año 2003, cuando la patente expiró, todo progra-
mador que emplease el formato GIF debía pagar los correspondientes
derechos de propiedad.
• El formato PNG se creó específicamente para Internet y otras redes
de ordenadores. Sus características más importantes son:
• Soporte de imágenes basadas en paleta de colores (1, 2, 4, 8-bit),
como GIF.
• Soporte de escala de grises (1, 2, 4, 8, 16-bit).
• Soporte de color real (24, 48-bit), como JPEG.
• Transparencia binaria, como GIF.
• Canal alfa (256 o 65.536 niveles de transparencia parcial).
• Corrección gamma.
• Algoritmo de compresión sin pérdidas no patentado (público).
• Entrelazado 2D (interlacing).
El formato PNG no permite animaciones como GIF, pero se han desa-
rrollado los formatos APNG y MNG basados en PNG que sí que permiten
crear animaciones al combinar varias imágenes en un mismo fichero.
Sin embargo, ninguno de estos dos formatos se ha convertido en un es-
tándar y su soporte por los navegadores actuales es bastante desigual.
El esquema de compresión de PNG es muy superior al de GIF. Por
ejemplo, las dos imágenes de la Figura 104 ocupan con el formato PNG
248 bytes y 279 bytes respectivamente, mientras que en el formato GIF
ocupan 1.276 y 1.478 bytes respectivamente, lo que supone una reduc-
ción de aproximadamente el 80% en el tamaño del fichero.
El uso del formato PNG ha tardado varios años en extenderse aunque
sea mucho mejor que los formatos GIF y JPEG en muchos aspectos. La
primera versión apareció en el año 1996 y en el año 2004 se convirtió
en el estándar ISO/IEC 15948:2004 “Information technology -- Compu-
ter graphics and image processing -- Portable Network Graphics (PNG):
Functional specification”64.
64 Disponible en http://www.iso.org/iso/catalogue_detail.htm?csnumber=29581
Figura 113: Imagen PNG con transparencias visualizada en Netscape Communicator 4.78
Figura 114: Imagen PNG con transparencias visualizada en Microsoft Internet Explorer 5.5
Consejo
Emplea el formato JPEG para imágenes reales como fotografías. Emplea el
formato PNG en imágenes donde el detalle es importante, como logotipos o
imágenes con textos.
Consejo
Utilice gráϔicos para mostrar contenido real, no sólo para decorar la página de
inicio. Por ejemplo, utilice fotos de personas identiϔicables que tienen una conexión
con el contenido en lugar de modelos o fotos genéricas de archivo. Las personas se
sienten naturalmente atraídas hacia las imágenes, por lo que los gráϔicos gratuitos
pueden distraer a los usuarios de contenido crítico.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
Advertencia
¡Cuidado! Los atributos align, border, hspace y vspace que se usaban
con la etiqueta <img> hace años, ya no se deben utilizar desde XHTML 1.0
Strict. En su lugar se debe utilizar CSS.
El atributo alt
En HTML 4.01 el atributo alt era opcional. En XHTML 1.0 era obli-
gatorio. En HTML5, excepto en situaciones muy particulares, siempre
se debe definir el atributo alt. El texto alternativo debe sustituir a la
imagen, debe ser un reemplazo funcional apropiado para la imagen.
Este atributo es importante para mejorar la accesibilidad de las pá-
ginas web: la gente con problemas de visión emplea un software espe-
cial llamado lector de pantallas (screen reader) que “lee” las páginas web;
cuando encuentra una imagen, busca la etiqueta alt y lee su contenido.
El texto alternativo puede ayudar a los usuarios que se encuentren
en alguna de estas situaciones:
• Cuando tengan una conexión a Internet muy lenta y quieran na-
vegar sin imágenes.
• Cuando tengan una discapacidad visual y utilicen un lector de
pantallas.
• Cuando tengan una discapacidad cognitiva y utilicen un lector
de pantallas.
• Cuando utilicen un lector en modo texto.
El atributo longdesc
El atributo alt se emplea para proporcionar un texto alternativo que
sustituya a una imagen en aquellos casos que la imagen no pueda ser
empleada por ciertos usuarios, como por ejemplo los usuarios ciegos
que utilizan un lector de pantallas. Sin embargo, cuando la imagen es
compleja, el texto alternativo no es suficiente para proporcionar toda la
información necesaria para ofrecer una alternativa válida: se recomienda
que el texto alternativo no supere los 100 caracteres y en el texto alter-
nativo no se puede escribir información compleja como tablas o listas.
El atributo longdesc se emplea para proporcionar una descripción
completa de la imagen, de forma que transmita la misma información que
se proporciona en la imagen de forma visual. En el atributo longdesc
se tiene que indicar la URL de la página con la descripción completa de
la imagen.
Por ejemplo, en la Figura 116 se muestra una página web66 que contie-
ne varias imágenes que tienen definido el atributo longdesc. En Mozilla
Firefox se puede emplear la opción “Ver información de la imagen” para
comprobar si la imagen tiene definido el atributo longdesc. En la Figura
117 se puede ver el texto asociado (el texto alternativo) a la imagen y la
URL de la descripción larga. Entre las propiedades de la imagen figura
“Descripción larga”, que contiene la URL de la página web que aloja la
descripción larga de la imagen.
66 Disponible en http://accesibilidadweb.dlsi.ua.es/contenido/ejemplos/imagenes-complejas/con-longdesc.
html
Más información
https://youtu.be/tnpPJou1EVA
Definición de hipermedia, la
etiqueta img, atributos obli-
gatorios (src, alt) y opcionales
(width, height, longdesc, ismap,
usemap), atributos desaconseja-
dos, formatos gráficos (GIF, JPG/
JPEG, PNG), mapas de imagen
(map, area, atributos usemap
e ismap), uso de los mapas de
imagen.
67 Disponible en https://chrome.google.com/webstore/detail/long-descriptions-in-cont/ohbmencljkleiedahijfk
agnmmhbilgp?hl=es
Consejo
No abuses de las imágenes de fondo ya que pueden dificultar la lectura del
texto.
Advertencia
No utilices el atributo background en la etiqueta <body> para poner una
imagen de fondo. En su lugar se debe utilizar CSS.
Novedades en HTML5
HTML5 incorpora importantes novedades en el manejo de los elemen-
tos gráficos de una página web. Por un lado, las etiquetas <figure> y
<figcaption> permiten definir un elemento gráfico independiente de la
página, como una imagen, una ilustración o un diagrama; sin embargo,
también se puede utilizar para otros elementos que no tienen que ser
necesariamente gráficos, como por ejemplo un fragmento de código, una
tabla, una cita, etc. Por otro lado la etiqueta <canvas>, que reserva una
parte de una página web para que se dibuje en ella mediante código de
script.
La etiqueta <figure>
La especificación oficial de HTML5 define la etiqueta <figure> como:
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de figure</title>
</head>
<body>
<h1>Enlace de Sir Tim Berners-Lee y Rosemary Leith</h1>
<p>
Sir Tim Berners-Lee y Rosemary Leith contrajeron matrimonio el 20 de junio
de 2014 en Chapel Royal de St James’s Palace en Londres. A la ceremonia
asistieron la familia y los amigos más cercanos.
</p>
<figure>
<img src=”TBL-RL.jpg” alt=””>
<figcaption>Tim Berners-Lee y Rosemary Leith al finalizar su boda. Orig-
inal por <a href=”http://webfoundation.org/tim-berners-lee-married-rose-
mary-leith/”>Alex Lloyd</a></figcaption>
</figrue>
</body>
</html>
Listado 33: Ejemplo de uso de la etiqueta <figure> para una imagen
<figure>
<p>Tengo miedo de verte<br>
necesidad de verte<br>
esperanza de verte<br>
desazones de verte<br>
tengo ganas de hallarte<br>
preocupación de hallarte<br>
certidumbre de hallarte<br>
pobres dudas de hallarte<br>
<br>
tengo urgencia de oírte<br>
alegría de oírte<br>
buena suerte de oírte<br>
y temores de oírte<br>
<br>
o sea<br>
resumiendo
estoy jodido<br>
y radiante<br>
quizá más lo primero<br>
que lo segundo<br>
y también<br>
viceversa.</p>
<figcaption><cite>Viceversa</cite> Mario Benedetti, 1920-2009</figcaption>
</figure>
Listado 34: Ejemplo de uso de la etiqueta <figure> para un poema
La etiqueta <canvas>
La etiqueta <canvas> permite realizar dibujos de tipo mapa de bits
sobre una zona reservada de una página web. La etiqueta <canvas>
puede ser accedida a través de JavaScript para generar gráficos en 2D,
juegos, animaciones y otras composiciones gráficas.
El uso de JavaScript está fuera de los objetivos de este libro. De todas
formas, en el Listado 35 se muestra un ejemplo de uso de <canvas>.
La mayor parte del ejemplo corresponde al código JavaScript que se en-
cuentra entre las etiquetas <script> y </script>. En el código se han
definido cinco funciones:
• context(): obtiene un objeto de JavaScript que representa la
etiqueta <canvas>.
• linea(): dibuja una línea.
• rectangulo(): dibuja dos rectángulos.
• circulo(): dibuja dos círculos.
• texto(): escribe un texto.
• limpiar(): limpia el contenido de la etiqueta <canvas>.
Estas funciones se invocan desde botones de HTML.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de canvas</title>
<script>
function context() {
var c = document.getElementById(“myCanvas”);
return c.getContext(“2d”);
}
function linea() {
var ctx = context();
ctx.moveTo(0,0);
ctx.lineTo(200,100);
ctx.stroke();
}
function rectangulo() {
var ctx = context();
ctx.fillStyle = “#FF0000”;
ctx.fillRect(0, 0, 150, 75);
ctx.fillRect(100, 100, 100, 100);
}
function circulo() {
var ctx = context();
ctx.beginPath();
ctx.arc(100, 100, 40, 0, 2 * Math.PI);
ctx.stroke();
ctx.beginPath();
ctx.arc(200, 100, 40, 0, 2 * Math.PI);
ctx.stroke();
}
function texto() {
var ctx = context();
ctx.font = “30px Arial”;
ctx.fillStyle = “#0000FF”;
ctx.fillText(“Prueba de canvas”, 10, 50);
}
function limpiar() {
var ctx = context();
ctx.clearRect(0, 0, document.getElementById(“myCanvas”).width, document.
getElementById(“myCanvas”).height);
}
</script>
</head>
<body>
<canvas id=”myCanvas” width=”300” height=”200” style=”border:1px solid
#000000;”>
</canvas>
<p>
<input type=”button” value=”Línea” onclick=”linea()” />
<input type=”button” value=”Rectángulo” onclick=”rectangulo()” />
<input type=”button” value=”Círculo” onclick=”circulo()” />
<input type=”button” value=”Texto” onclick=”texto()” />
<input type=”button” value=”Limpiar” onclick=”limpiar()” />
</p>
</body>
</html>
Listado 35: Ejemplo de uso de <canvas>
SVG
Scalable Vector Graphics (SVG) es una recomendación del W3C68 que
permite describir gráficos vectoriales bidimensionales estáticos. También
permite crear gráficos vectoriales dinámicos, pero con la ayuda de Syn-
chronized Multimedia Integration Language (SMIL).
68 Disponible en http://www.w3.org/TR/SVG/
SVG es una aplicación de XML, por lo que los ficheros que almacenan
estas imágenes se pueden editar con un simple editor de textos.
En la actualidad, el formato SVG se usa en muchos sitios web. Por
ejemplo, en la Wikipedia se emplea para representar las banderas y los
escudos de los países o los logotipos de las empresas y organizaciones.
En la Figura 123 se muestra el artículo de la Wikipedia dedicado al
World Wide Web Consortium69. El logotipo del W3C es una imagen en
formato SVG.
69 Disponible en http://es.wikipedia.org/wiki/World_Wide_Web_Consortium
(a) (b)
Figura 124: Logotipo del W3C como imagen SVG
En una página web, SVG se puede emplear de dos formas, como una
imagen externa o como una imagen en línea.
El uso de SVG como una imagen externa es similar al uso de otros
formatos de imágenes: la imagen se utiliza en una página web mediante
la etiqueta <img>.
El uso de SVG como una imagen en línea consiste en escribir directa-
mente el código SVG en la página web, ya que SVG es un lenguaje basado
en etiquetas similar a HTML5.
En el Listado 36 se muestra un ejemplo de uso de una imagen SVG en
línea. La imagen es un círculo con borde verde y relleno de color amarillo.
Además, en la página se incluye la misma imagen pero en formato PNG.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=“utf-8“ />
<meta name=“generator“ content=“Bloc de notas“ />
<meta name=“author“ content=“Sergio Luján Mora“ />
<meta name=“keywords“ content=“XHTML, web“ />
<meta name=”description” content=”Prueba sencilla de SVG” />
<title>Prueba sencilla de SVG</title>
</head>
<body>
<h1>Prueba sencilla de SVG</h1>
</body>
</html>
Listado 36: Página web con imagen SVG en línea
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=“utf-8“ />
<meta name=“generator“ content=“Bloc de notas“ />
<meta name=“author“ content=“Sergio Luján Mora“ />
<meta name=“keywords“ content=“XHTML, web“ />
<meta name=”description” content=”Prueba de gradiente de SVG” />
<title>Prueba de gradiente de SVG</title>
</head>
<body>
<svg xmlns=”http://www.w3.org/2000/svg” version=”1.1”
viewBox=”0 0 100 100” preserveAspectRatio=”xMidYMid slice”
style=”width:100%; height:100%; position:absolute; top:0; left:0; z-index:-1;”>
<linearGradient id=”gradient”>
<stop class=”begin” offset=”0%” style=”stop-color:yellow” />
<stop class=”end” offset=”100%” style=”stop-color:green;” />
</linearGradient>
<rect x=”0” y=”0” width=”100” height=”100” style=”fill:url(#gradient)” />
<circle cx=”50” cy=”50” r=”30” style=”fill:url(#gradient)” />
</svg>
</body>
</html>
Listado 37: Página web con efecto de gradiente de SVG
Los formularios
Los formularios son las herramientas que ofrece HTML para poder
obtener información de un usuario que visita una página web y enviarla
al servidor web para su procesamiento posterior.
Un formulario contiene dos tipos de elementos básicos: los campos de
datos, campos de entrada o controles de datos (cuadros de texto, listas de
Consejo
A partir de XHTML 1.0 Strict la etiqueta <form> no tiene el atributo name.
Para identificar un formulario se tiene que emplear el atributo id.
Consejo
El atributo name se emplea para identificar los datos de un formulario cuando
se envían al servidor. Si un control no tiene un nombre asignado, su contenido
no será enviado al servidor.
70 En realidad, pueden existir varios controles (incluso de distinto tipo) con el mismo nombre, pero cuando
se procesen los datos en el servidor no se podrá saber de qué control procede cada dato.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de formulario con disabled y readonly</title>
</head>
<body>
<p>
<form action=”url” method=”post”>
<p>
Cuadro de texto: <input type=”text” name=”control1” value=”Un valor ini-
cial” />
<br />
Cuadro de texto disabled: <input type=”text” name=”control2” value=”Un
valor inicial” disabled=”disabled” />
<br />
Cuadro de texto readonly: <input type=”text” name=”control3” value=”Un
valor inicial” readonly=”readonly” />
<br />
Botón: <input type=”submit” value=”Enviar” />
<br />
Botón disabled: <input type=”submit” value=”Enviar” disabled=”disabled” />
</p>
</form>
</body>
</html>
Listado 38: Prueba de disabled y readonly
El siguiente código (Listado 39) genera una página web con un for-
mulario que contiene un campo de texto, un campo de contraseña, dos
campos excluyentes con el mismo nombre (y por tanto sólo se puede elegir
uno de los dos), dos campos de verificación, una lista de selección, un
campo de envío de ficheros, un área de texto y dos botones (para enviar
información y borrar). En la Figura 133 se muestra el formulario tal como
se ve en un navegador.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de formulario</title>
</head>
<body>
<p>
Esto es el cuerpo de una página HTML. Esta página posee un formulario:
</p>
<hr />
<form action=”url” method=”post”>
<p>
Cuadro de texto: <input type=”text” name=”control1a” value=”Un valor ini-
cial” />
<br /><br />
Cuadro de texto contraseña: <input type=”password” name=”control1b” />
<br /><br />
Botones de radio:
<input type=”radio” name=”control2” value=”1” />Opción 1
<input type=”radio” name=”control2” value=”2” />Opción 2
<br /><br />
Casilla de verificación:
Consejo
En una página web se puede incluir un control sin necesidad de estar dentro
de un formulario.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de cuadros de texto</title>
</head>
<body>
<form action=”url” method=”post”>
<p>
Cuadro de texto: <input type=”text” name=”control1” value=”Un valor ini-
cial” />
<br /><br />
Cuadro de texto: <input type=”text” name=”control2” size=”40” max-
length=”60” />
<br /><br />
Con disabled: <input type=”text” name=”control3” value=”Un valor inicial”
disabled=”disabled”/>
<br /><br />
Con readonly: <input type=”text” name=”control4” value=”Un valor inicial”
readonly=”readonly” />
</p>
</form>
</body>
</html>
Listado 40: Ejemplo de formulario con distintos campos de texto
Advertencia
¡Cuidado! Aunque un campo de contraseña oculta en pantalla los datos
introducidos, cuando se envían al servidor no están ocultos ni encriptados.
Campos de verificación
Un campo de veriϐicación (<input type=”checkbox”/>) se emplea
cuando se quiere que el usuario pueda seleccionar una o más opciones
de un conjunto de opciones. Los campos de verificación poseen dos
valores: activado y desactivado. Si al enviarse un formulario un campo
de verificación está activo, se envía al servidor el valor indicado por el
atributo value. Distintos campos de verificación pueden tener el mismo
nombre con el atributo name, aunque no es lo usual ya que complica la
programación de la aplicación web que recibe los datos en el servidor.
Si se desea que por defecto un campo de verificación aparezca activa-
do, se tiene que incluir el atributo checked=”checked” en la etiqueta.
Consejo
Los campos de verificación y las listas de selección son equivalentes. Utiliza
los campos de verificación cuando el conjunto de opciones sea pequeño (me-
nos de cinco opciones). Utiliza las listas de selección cuando haya muchas
opciones y no sea conveniente enseñarlas todas a la vez en la página web.
Campos excluyentes
Un campo excluyente o botón de radio (<input type=”radio”/>) se
emplea cuando se quiere que el usuario pueda seleccionar una sola
opción de un conjunto de opciones. Un grupo de botones de radio está
formado por varios botones de radio que tienen todos el mismo nombre
(name). En un grupo de botones de radio sólo un botón de radio puede
estar seleccionado en un instante. Cuando se selecciona un botón de
radio distinto en un grupo, automáticamente se deselecciona el botón
de radio que antes estaba seleccionado. Un formulario puede contener
distintos grupos de botones de radio, cada uno con un nombre distinto.
Los botones de radio también poseen el atributo checked=”checked”
que permite indicar un botón de radio seleccionado por defecto.
Envío de ficheros
Un campo de envío de ϐicheros (<input type=”file”/>) se emplea para
enviar (subir) ficheros desde el cliente al servidor. Cuando se emplea un
campo de este tipo en un formulario, se tiene que cambiar el modo de
codificación de los datos enviados al servidor para que el envío sea co-
rrecto. Para ello, en el atributo enctype de la etiqueta <form> se tiene
que indicar el valor multipart/form-data, necesario para poder enviar
datos binarios como los contenidos en un fichero.
250 © Alfaomega - Altaria
Curso práctico avanzado
Advertencia
Recuerda modificar el valor del atributo enctype cuando un formulario
incluya un control para envío de fichero.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de envío de fichero</title>
</head>
<body>
<form action=”url” method=”post”>
<p>
Una fotografía: <input type=”file” name=”fichero1” accept=”image/gif,image/
jpeg,image/png” />
<br /><br />
Un documento de Microsoft Word: <input type=”file” name=”fichero2”
accept=”application/msword” />
<br /><br />
<input type=”submit” value=”Enviar ficheros” />
</p>
</form>
</body>
</html>
(a) (b)
(c) (d)
Figura 137: Ejemplo de formulario con envío de ficheros
Campos ocultos
Un campo oculto (<input type=”hidden”/>) no se visualiza en la
página web. Se suele emplear para almacenar información que se quiere
pasar de una página a otra o para almacenar información necesaria para
Consejo
Coloca los campos ocultos al principio del formulario justo después de la
etiqueta <form>, ya hace que sean más fáciles de encontrar e identificar.
Listas de selección
Una lista de selección, lista desplegable o menú desplegable (dropdown
menu) se crea con la etiqueta <select>. En las listas de selección se
muestra una serie de opciones entre las que el usuario puede elegir una.
Si se añade el atributo multiple=”multiple”, el usuario puede elegir
múltiples opciones71 a la vez. El atributo size permite indicar cuantas
opciones de la lista se visualizan simultáneamente. Si el valor de este
atributo es 1 (valor por defecto), se muestra una lista desplegable; si el
valor de este atributo es mayor que 1, se muestra un cuadro de opciones
con una barra de desplazamiento vertical para desplazarse entre todas
las opciones.
Cada opción de una lista de selección se indica con la etiqueta <op-
tion>. Cada opción puede tener asociado un valor definido con el
atributo value, que es el valor que se enviará al servidor cuando la
opción sea seleccionada. Si no se indica un valor con este atributo, el
navegador enviará al servidor el texto de la etiqueta, es decir, el conte-
nido existente entre <option> y </option>. Si se desea que una opción
aparezca marcada por defecto se tiene que añadir a la opción el atributo
selected=”selected”.
Advertencia
¡Cuidado! En la sintaxis HTML de HTML5 la etiqueta de cierre </option>
es opcional, pero en la sintaxis XHTML es obligatoria.
71 Para seleccionar varias opciones, en Microsoft Windows se emplean la tecla “Control” para seleccionar
de una en una y la tecla “Mays ↑” para seleccionar un conjunto contiguo de opciones (se tiene que marcar
la primera y la última opción).
Consejo
Utilice los menús desplegables con moderación, sobre todo si los elementos
no son fáciles de entender. Los usuarios se sienten atraídos por ellos, y a menudo
son los elementos de navegación menos efectivos. Si tienes muy pocos elementos en
un menú desplegable, a menudo es mejor hacer una lista con ellos directamente
en la página principal. Del mismo modo, evite las largas listas desplegables, ya
que son diϔíciles de utilizar eϔicazmente para los usuarios, y los usuarios a menudo
tienen diϔicultades para diferenciar entre los elementos de la lista. A menudo es
mejor llevar a los usuarios a una página distinta para la selección, donde se pueden
explicar los diferentes elementos o, al menos, se pueden organizar en categorías
más signiϔicativas que una sola lista.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
Consejo
Los menús desplegables son el último recurso de las interfaces.
Fuente: Luke Wroblewski
https://twitter.com/lukew/status/412616840712433664
El ejemplo del Listado 42 muestra cuatro listas: una lista normal, una
lista normal que muestra tres opciones a la vez y posee una seleccionada
por defecto, una lista múltiple y una lista con las opciones agrupadas.
En la Figura 138 se puede observar cómo se visualiza esta página en
un navegador. En la última lista se puede observar cómo se realiza la
agrupación de opciones.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de lista de selección</title>
</head>
<body>
<form action=”url” method=”post”>
<p>
Lista de selección normal:
<select name=”provincia”>
<option value=”1”>Alicante</option>
<option value=”2”>Valencia</option>
<option value=”3”>Castellón</option> </select>
<br /><br />
Lista de selección normal de tamaño 3:
<select name=”universidad” size=”3”>
<option value=”uv”>Universidad de Valencia</option>
<option value=”uji”>Universidad Jaime I</option>
<option value=”ua” selected=”selected”>Universidad de Alicante</option>
<option value=”upv”>Universidad Politécnica de Valencia</option>
<option value=”umh”>Universidad Miguel Hernández</option>
</select>
<br /><br />
Lista de selección múltiple:
<select name=”departamento” multiple=”multiple”>
<option value=”dlsi”>D. de Lenguajes y Sistemas Informáticos</option>
<option value=”damma”>D. de Análisis M. y M. Aplicada</option>
<option value=”dfists”>D. de Física e Ingeniería de Sistemas</option>
<option value=”dagr”>D. de Análisis Geográfico Regional</option>
<option value=”mmlab”>Laboratorio Multimedia</option>
</select>
<br /><br />
Lista con opciones agrupadas:
<select name=”ciudades”>
<optgroup label=”Alicante”>
<option value=”1”>Alcoy</option>
<option value=”2”>Alicante</option>
<option value=”3”>Elche</option>
</optgroup>
<optgroup label=”Valencia”>
<option value=”4”>Sagunto</option>
<option value=”5”>Silla</option>
<option value=”6”>Valencia</option>
</optgroup>
<optgroup label=”Castellón”>
<option value=”7”>Castellón</option>
<option value=”8”>Peñíscola</option>
</optgroup>
</select>
</p>
</form>
</body>
</html>
Listado 42: Ejemplo de formulario con distintas listas de selección
Áreas de texto
La etiqueta <textarea> define un área de texto donde se pueden es-
cribir varias líneas de texto y un número ilimitado de caracteres. Esta
etiqueta posee dos atributos obligatorios que permiten modificar su ta-
maño. El atributo cols indica el número de caracteres por línea que se
pueden mostrar sin tener que realizar desplazamiento (scroll) horizontal.
El atributo rows define el número de líneas que se pueden mostrar sin
realizar desplazamiento vertical. Si se quiere que el área de texto mues-
tre un texto por defecto, se puede incluir entre las etiquetas de inicio
<textarea> y fin </textarea>.
El siguiente ejemplo (Listado 43) muestra dos áreas de texto de dis-
tinto tamaño, una de ellas con un texto por defecto. En la Figura 139 se
puede ver esta página visualizada en un navegador.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de áreas de texto</title>
</head>
<body>
<form action=”url” method=”post”>
<p>
Área 1:
<textarea rows=”3” cols=”40”>Texto por defecto...</textarea>
<br />
Área 2:
<textarea rows=”4” cols=”20”></textarea>
</p>
</form>
</body>
</html>
Listado 43: Ejemplo de formulario con áreas de texto de distinto tamaño
Cuando un área de texto contiene más texto del que se puede visuali-
zar aparecen unas barras de desplazamiento vertical, tal como se puede
ver en la Figura 140.
Advertencia
¡Cuidado! Todo lo que escribas, incluidos los saltos de línea y las tabulacio-
nes, entre la etiqueta de apertura <textarea> y de cierre </textarea> se
mostrarán en el área de texto.
Etiquetas de campos
La etiqueta <label> se emplea para definir una etiqueta de un campo
de un formulario. Una etiqueta de un campo no se visualiza con un for-
mato especial, pero proporciona un mecanismo que mejora la usabilidad
del formulario, ya que pulsar sobre la etiqueta equivale a pulsar sobre
el campo asociado.
Esta etiqueta emplea el atributo for para indicar a qué campo está
asociada. El valor del atributo for tiene que coincidir con el valor del
atributo id del campo asociado.
Por ejemplo, el siguiente código (Listado 44) muestra dos conjuntos de
campos excluyentes y campos de verificación; el texto asociado a cada
campo está encerrado por una etiqueta <label>, por lo que al pulsar
sobre el texto se activa el campo correspondiente. En la Figura 141 se
puede ver esta página visualizada en un navegador web.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de etiquetas de campos</title>
</head>
<body>
<form action=”procesa.asp” method=”post”>
<p>
Sexo:
<input type=”radio” id=”sexo1” name=”sexo” value=”H” /><label for=”sex-
o1”>Hombre</label>
<input type=”radio” id=”sexo2” name=”sexo” value=”M” /><label for=”sex-
o2”>Mujer</label>
<br /><br />
Idioma:
<input type=”checkbox” id=”idioma1” name=”idioma” value=”es” /><label
for=”idioma1”>Español</label>
Más información
https://youtu.be/m9BHdK2Lt3k
https://youtu.be/1vNlx4EvFVQ
Eventos
En programación, un evento es una acción o acontecimiento detectado
por un programa y manejado por el programa. Un evento puede estar
causado por un usuario (el usuario pulsa una tecla en el teclado o sitúa
el ratón encima de un elemento particular en la pantalla del ordenador),
por el sistema (finaliza la ejecución de una tarea) o por el hardware (se
conecta un dispositivo al ordenador).
En HTML existen una serie de eventos a los que se puede asociar código
de script como el escrito con el lenguaje de programación JavaScritpt.
Los principales eventos definidos en HTML son72:
• onload: este evento ocurre cuando finaliza la carga de una página
en una ventana o de todos los marcos en una página dividida en
marcos. Este atributo se puede emplear en las etiquetas <body>
y <frameset>73.
• onunload: este evento ocurre cuando se quita una página de una
ventana o de un marco. Este atributo se puede emplear en las
etiquetas <body> y <frameset>.
• onclick : este evento ocurre cuando el botón del dispositivo
apuntador es pulsado sobre un elemento. Este atributo se puede
emplear con la mayoría de las etiquetas.
• ondblclick: este evento ocurre cuando el botón del dispositivo
apuntador es pulsado dos veces sobre un elemento. Este atributo
se puede emplear con la mayoría de las etiquetas.
Más información
Para más información sobre los eventos en las páginas web consulta las si-
guientes referencias:
• W3C - Document Object Model (DOM) Level 2 Events Speci ication: http://
www.w3.org/TR/DOM-Level-2-Events/
• W3C - Document Object Model (DOM) Level 3 Events Speci ication: http://
www.w3.org/TR/DOM-Level-3-Events/
• MDN - Event reference: https://developer.mozilla.org/en-US/docs/Web/
Events
• W3Schools - HTML DOM Events: http://www.w3schools.com/jsref/
dom_obj_event.asp
Novedades en HTML5
Durante más de una década, en los formularios web sólo se podían
usar los controles que se han visto hasta el momento en esta sección.
Todos esos controles siguen existiendo en HTML5 y se pueden seguir
usando, pero se han visto ampliados.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de formulario con controles de HTML5</title>
</head>
<body>
<p>
Url: <input type=”url” name=”direccion” required />
</p>
<p>
<input type=”submit” value=”Enviar” />
<input type=”reset” value=”Borrar” />
</p>
</form>
</body>
</html>
Listado 45: Ejemplo de formulario con validación
(a) (b)
Figura 145: Validación de campo requerido
(a) (b)
Figura 146: Validación de correo electrónico y URL
74 Disponible en http://caniuse.com/#feat=input-placeholder
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de formulario con controles de HTML5</title>
</head>
<body>
<form action=”url” method=”post”>
<p>
Hora de nacimiento: <input type=”time” name=”control-hora” />
</p>
<p>
Fecha de nacimiento: <input type=”date” name=”control-fecha” />
</p>
<p>
<input type=”submit” value=”Enviar” />
<input type=”reset” value=”Borrar” />
</p>
</form>
</body>
</html>
Listado 46: Ejemplo de uso de los controles date y time
Más información
https://youtu.be/6oGjhVRu7cU
thttps://youtu.be/Bjc-sykJ8bg
Alineamiento de formularios
El alineamiento de los controles de un formulario es muy importante,
ya que facilita su lectura y su utilización. Un formulario bien alineado
Consejo
Un formulario bien alineado mejora su usabilidad.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Formulario no organizado</title>
</head>
<body>
<form action=”procesa.asp” method=”post”>
<p>
Nombre empresa: <input type=”text” name=”nombreempresa” size=”40” />
<br />
Nombre: <input type=”text” name=”nombre” size=”20” />
<br />
Apellidos: <input type=”text” name=”apellidos” size=”30” />
<br />
Sexo:
<input type=”radio” name=”sexo” value=”H” /> Hombre
<input type=”radio” name=”sexo” value=”M” /> Mujer
<br />
Dirección: <input type=”text” name=”direccion” size=”40” />
<br />
Población:
<select name=”poblacion”>
<option value=”1”>Alicante</option>
<option value=”2”>Castellón</option>
<option value=”3”>Valencia</option>
</select>
<br />
Deportes:
<select name=”deportes” multiple=”multiple”>
<option value=”1”>Fútbol</option>
<option value=”2”>Páddel</option>
<option value=”3”>Tenis</option>
</select>
<br />
Música:
<select name=”musica” multiple=”multiple”>
<option value=”1”>Clásica</option>
<option value=”2”>Pop</option>
<option value=”3”>Rock</option>
</select>
<br />
<input type=”submit” />
<input type=”reset” />
</p>
</form>
</body>
</html>
Listado 47: Ejemplo de formulario sin alineamiento de los controles
Consejo
Mejora el diseño de los formularios web mediante la colocación de las etiquetas
cerca de los campos y agrupando los campos similares.
Fuente: Form Design Quick Fix: Group Form Elements Effectively
Using White Space, Nielsen Norman Group
http://www.nngroup.com/articles/form-design-white-space/
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Formulario organizado con campos</title>
</head>
<body>
<form action=”procesa.asp” method=”post”>
<fieldset>
<legend>Datos personales</legend>
Nombre empresa: <input type=”text” name=”nombreempresa” size=”40” />
<br />
Nombre: <input type=”text” name=”nombre” size=”20” />
<br />
Apellidos: <input type=”text” name=”apellidos” size=”30” />
<br />
Sexo:
<input type=”radio” name=”sexo” value=”H” /> Hombre
<input type=”radio” name=”sexo” value=”M” /> Mujer
<br />
Dirección: <input type=”text” name=”direccion” size=”40” />
<br />
Población:
<select name=”poblacion”>
<option value=”1”>Alicante</option>
<option value=”2”>Castellón</option>
<option value=”3”>Valencia</option>
</select>
</fieldset>
<br />
<fieldset>
<legend>Aficiones</legend>
Deportes:
<select name=”deportes” multiple=”multiple”>
<option value=”1”>Fútbol</option>
<option value=”2”>Páddel</option>
<option value=”3”>Tenis</option>
</select>
<br />
Música:
<select name=”musica” multiple=”multiple”>
<option value=”1”>Clásica</option>
<option value=”2”>Pop</option>
<option value=”3”>Rock</option>
</select>
</fieldset>
<p>
<input type=”submit” />
<input type=”reset” />
</p>
</form>
</body>
</html>
Listado 48: Ejemplo de formulario organizado con campos
Advertencia
¡Cuidado! No utilices la etiqueta <center> para centrar los elementos de la
página, está desaconsejada en HTML 4.01 y no existe a partir de XHTML 1.0
Strict. En su lugar se debe utilizar CSS.
Consejo
No utilices tablas para maquetar y alineas los controles de un formulario. En
su lugar se debe utilizar CSS. Si utilizas una tabla para maquetar, no utilices
las etiquetas <th>, <thead>, <tbody>, <tfoot> y <caption>.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Formulario organizado con una tabla</title>
</head>
<body>
<form action=”procesa.asp” method=”post”>
<table>
<tr>
<td>Nombre empresa:</td>
<td><input type=”text” name=”nombreempresa” size=”40” /></td>
</tr>
<tr>
<td>Nombre:</td>
<td><input type=”text” name=”nombre” size=”20” /></td>
</tr>
<tr>
<td>Apellidos:</td>
<td><input type=”text” name=”apellidos” size=”30” /></td>
</tr>
<tr>
<td>Sexo:</td>
<td><input type=”radio” name=”sexo” value=”H” /> Hombre
<input type=”radio” name=”sexo” value=”M” /> Mujer
</td>
</tr>
<tr>
<td>Dirección:</td>
<td><input type=”text” name=”direccion” size=”40” /></td>
</tr>
<tr>
<td>Población:</td>
<td><select name=”poblacion”>
<option value=”1”>Alicante</option>
<option value=”2”>Castellón</option>
<option value=”3”>Valencia</option>
</select>
</td>
</tr>
<tr>
<td>Deportes:</td>
<td><select name=”deportes” multiple=”multiple”>
<option value=”1”>Fútbol</option>
<option value=”2”>Páddel</option>
<option value=”3”>Tenis</option>
</select>
</td>
</tr>
<tr>
<td>Música:</td>
<td><select name=”musica” multiple=”multiple”>
<option value=”1”>Clásica</option>
<option value=”2”>Pop</option>
<option value=”3”>Rock</option>
</select>
</td>
</tr>
<tr>
<td><input type=”submit” /></td>
<td><input type=”reset” /></td>
</tr>
</table>
</form>
</body>
</html>
Listado 49: Ejemplo de formulario maquetado con una tabla
Figura 155: Ejemplo de formulario maquetado con una tabla con alineación a la izquierda
<tr>
<td align=”right”>Nombre empresa:</td>
<td><input type=”text” name=”nombreempresa” size=”40” /></td>
</tr>
<tr>
<td align=”right”>Nombre:</td>
<td><input type=”text” name=”nombre” size=”20” /></td>
</tr>
Figura 156: Ejemplo de formulario maquetado con una tabla con alineación a la derecha
Consejo
Se recomienda la colocación de las etiquetas de los campos por encima de los
campos de texto correspondientes. Aunque esto aumenta la longitud total del
formulario, hace que el formulario sea más fácil de explorar, ya que los usuarios
pueden ver el campo de texto en la misma posición que la etiqueta. La posición
superior también permite que las etiquetas de los campos sean más largos, ya que
el espacio horizontal no es un problema.
Fuente: Form Design Quick Fix: Group Form Elements Effectively
Using White Space, Nielsen Norman Group
http://www.nngroup.com/articles/form-design-white-space/
Los ocho errores detectados se corresponden con las ocho veces que
se ha añadido el atributo align=”right”, tal como se puede ver en la
Figura 158.
Figura 158: Mensajes de error de la validación de un formulario maquetado con una tabla
Vídeo
Antes de HTML5 no existía un método estándar para reproducir un
vídeo en una página web. HTML5 añade la etiqueta <video> que permite
reproducir un vídeo en una página web sin necesidad de una extensión
o complemento.
© Alfaomega - Altaria 283
HTML & CSS
75 Disponible en http://youtube-eng.blogspot.com/2010/06/flash-and-html5-tag_29.html
76 Disponible en http://youtube-eng.blogspot.com/2015/01/youtube-now-defaults-to-html5_27.html
77 Disponible en https://www.youtube.com/html5?hl=es-419
Figura 160: Compatibilidad del reproductor de vídeo HTML5 en Microsoft Internet Explorer 11
78 Disponible en http://www.w3.org/TR/media-source/
Tal como se puede ver en la Figura 161 que muestra la tabla de com-
patibilidad que existe en Can I use…?79, los navegadores web más popu-
lares como Microsoft Internet Explorer, Mozilla Firefox, Google Chrome
y Safari soportan la etiqueta <video>.
79 Disponible en http://caniuse.com/#search=video
80 Disponible en http://caniuse.com/#search=video
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de la etiqueta video</title>
</head>
<body>
<h1>Ejemplo de video</h1>
<video width=”320” height=”240” controls=”controls” poster=”small.png”>
<source src=”small.mp4” type=”video/mp4”>
<source src=”small.ogv” type=”video/ogg”>
El navegador no soporta la etiqueta video.
</video>
</body>
</html>
Listado 50: Ejemplo de uso de la etiqueta <video>
Audio
Antes de HTML5 no existía un método estándar para reproducir un
audio en una página web. HTML5 añade la etiqueta <audio> que permite
reproducir un archivo de audio en una página web sin necesidad de una
extensión o complemento.
Esta etiqueta posee los atributos:
• autoplay: indica si la reproducción del audio debe comenzar en
cuanto sea posible.
• controls: especifica si los controles de reproducción, como los
botones de inicio/paro o de avance/retroceso, se deben mostrar.
• loop: indica si la reproducción del audio debe comenzar de forma
automática cada vez que termine.
• muted: especifica que la salida del audio debe ser silenciada.
• preload: indica si la carga del audio se debe realizar antes de que
sea necesaria su reproducción.
• src: indica la URL del fichero de audio.
Tal como se puede ver en la Figura 166 que muestra la tabla de com-
patibilidad que existe en Can I use…?81, los navegadores web más popu-
lares como Microsoft Internet Explorer, Mozilla Firefox, Google Chrome
y Safari soportan esta etiqueta.
81 Disponible en http://caniuse.com/#search=audio
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de la etiqueta audio</title>
</head>
<body>
<h1>Ejemplo de audio</h1>
<audio controls=”controls” autoplay=”autoplay”>
<source src=”pachebelcanon.ogg” type=”audio/ogg”>
<source src=”pachebelcanon.mp3” type=”audio/mpeg”>
El navegador no soporta la etiqueta audio.
</audio>
</body>
</html>
Listado 51: Ejemplo de uso de la etiqueta <audio>
CSS
13
Las hojas de
estilo en cascada
Introducción
CSS es una recomendación del W3C que define un lenguaje formal que
Evolución de CSS
La idea de emplear un lenguaje de estilos para definir la presentación
de las páginas web existió prácticamente desde el nacimiento de HTML,
pero no es hasta el año 1994 cuando Håkon Wium Lie, que trabajaba
con Tim Berners-Lee en el CERN, propuso el lenguaje de estilos que fi-
nalmente se estandarizó como CSS. Inicialmente se propusieron varios
lenguajes de estilos, pero finalmente la propuesta de Håkon Wium Lie
fue la que finalmente se impuso.
font.family = times
font.size = 12pt
font.slant = normal
font.weight = normal
h1.font.size = font.size * 3
h2.font.size = font.size * 2.5
h3.font.size = font.size * 2
strong.font.weight = bold
em.font.slant = italics
tt.font.spacing = proportional
Listado 52: Ejemplo de la sintaxis original de CSS
Más información
Si quieres saber más sobre los orígenes de CSS, consulta el capítulo 20 “La
saga de las CSS” del libro “Cascading Style Sheets, designing for the Web” dis-
ponible en http://www.spanish-translator-services.com/espanol/t/history.html
Fecha Versión
Diciembre 1996 CSS Level 1 Recommendation
Mayo 1998 CSS Level 2 Recommendation
Mayor 2001 Introduction to CSS3 (Working Draft)
Julio 2007 CSS Level 2.1 (Candidate Recommendation)
Abril 2008 CSS Level 1 Revised
Mayo 2011 CSS Snapshot 2010
Junio 2011 CSS 2.1 Recommendation
Junio 2011 CSS Color Module Level 3 Recommendation
Septiembre 2011 Selectors Level 3
Junio 2012 Media Queries
Tabla 13: Versiones de CSS
84 Disponible en http://www.w3.org/Style/CSS/current-work
86 Disponible en http://accesibilidadweb.dlsi.ua.es/
Consejo
Utilice colores para el texto y el fondo de alto contraste para que el texto sea
lo más legible posible.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
87 Disponible en http://www.opera.com/es/developer/mobile-emulator
Las reglas de CSS se pueden escribir en una sola línea, pero también se
pueden escribir en varias líneas. Por ejemplo, la regla que se muestra en
la Figura 179 se puede también escribir como se muestra a continuación:
h1 {
font-weight: bolder;
background: #00FF00;
}
Consejo
La última regla no necesita el separador (el punto y coma), ya que no hay una
regla a continuación, pero es una buena práctica escribir siempre el separador.
Más información
https://youtu.be/7aAsXtFzNH8
Consejo
Intenta utilizar siempre el estilo externo, ya que ofrece la máxima separación
del contenido y la presentación y permite la reutilización de la hoja de estilo
en diferentes páginas web.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Una página web con estilo en línea</title>
</head>
<body>
<p style=”font-size: 10px;”>Párrafo con texto tamaño 10px.</p>
<p style=”font-size: 10px;”>Otro párrafo con texto tamaño 10px.</p>
</body>
</html>
Listado 53: Ejemplo de página web con estilo en línea
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Una página web con estilo en línea</title>
</head>
<body>
<p style=”font-size: 10px; color: red;”>Párrafo con texto tamaño 10px y color
rojo.</p>
<p style=”font-size: 10px; color: blue;”>Otro párrafo con texto tamaño 10px
y color azul.</p>
</body>
</html>
Listado 54: Ejemplo de página web con estilo en línea
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Una página web con estilo embebido</title>
<style>
p { font-size: 10px;}
</style>
</head>
<body>
<p>Párrafo con texto tamaño 10px.</p>
<p>Otro párrafo con texto tamaño 10px.</p>
</body>
</html>
Listado 55: Ejemplo de página web con estilo embebido
89 El color de un elemento se define con la propiedad color (color en inglés americano), no se puede
utilizar colour (color en inglés británico).
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Una página web con estilo externo</title>
<link rel=”stylesheet” href=”estilos.css” />
</head>
<body>
<p>Párrafo con texto tamaño 10px.</p>
<p>Otro párrafo con texto tamaño 10px.</p>
</body>
</html>
Listado 56: Ejemplo de página web con estilo externo
p { font-size: 10px;}
Listado 57: Fichero estilos.css
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Una página web con estilo externo</title>
<link rel=”stylesheet” href=”estilos.css” />
<style>
p { font-size: 10px;}
</style>
</head>
<body>
<p style=”color: red;”>Párrafo con texto tamaño 10px y color rojo.</p>
<p style=”color: blue;”>Otro párrafo con texto tamaño 10px y color azul.</p>
</body>
</html>
Listado 58: Ejemplo de página web con las tres formas de definir los estilos CSS
p { font-weight: bold;}
Listado 59: Fichero estilos.css
Más información
https://youtu.be/pXttPcKkPzg
El acoplamiento en un sistema
informático, las tres formas de
usar CSS en HTML, el atributo
style, demostración de uso.
https://youtu.be/TwYfHrTUrFE
https://youtu.be/Y4BAwYR-wBc
Comentarios
En el modo embebido y el modo externo se pueden incluir comentarios
con la sintaxis /* Comentario */. Un comentario puede ocupar una
o varias líneas de código, ya que el delimitador de cierre de comentario
*/ se puede situar en una línea diferente al delimitador de apertura de
comentario /*. Los comentarios no se procesan y no producen una salida
visible en la página web.
Por ejemplo, el Listado 60 contiene dos reglas de CSS que modifican
el tamaño del texto y el color de un párrafo. La segunda regla está co-
mentada para realizar pruebas de cómo se visualiza la página web con
una regla o con la otra.
p{
font-size: 10px;
color: blue;
}
/*
p{
font-size: 20px;
color: red;
}
*/
Listado 60: Código CSS con comentario
Consejo
Emplea los comentarios de CSS para clarificar la estructura de la hoja de es-
tilos: utiliza los comentarios para separar distintas partes del código.
También puedes emplear los comentarios para desactivar temporalmente
alguna parte de la hoja de estilo para realizar pruebas sin tener que borrar
esa parte del código.
Por ejemplo, en la Figura 180 se muestra una página web con una
noticia del periódico El País90. Además de la noticia, en la página web
existen muchos elementos adicionales como diferentes barras de nave-
gación, un cuadro de texto para realizar búsquedas, un panel con las
últimas noticias, etc. Todos estos elementos son útiles cuando la noticia
se visualiza en una página web, pero no cuando la noticia se imprime
en papel.
Estas dos líneas definen los estilos CSS que se deben emplear cuando
la página web se imprima (media=”print”).
90 Disponible en http://elpais.com/
Figura 182: Vista previa de impresión de una noticia del periódico El País
Estilos alternativos
HTML permite definir estilos alternativos de presentación de una
página web no sólo para diferentes dispositivos, sino para el mismo
dispositivo.
Cuando se definen estilos alternativos con rel=”alternate styles-
heet” para un mismo dispositivo, es necesario indicar un nombre para
cada estilo alternativo con el atributo title. Pueden existir varias hojas
de estilo con el mismo nombre, en cuyo caso se aplicarán todas ellas en
91 Disponible en https://chrome.google.com/webstore/detail/alt-css/deaodobjfcolfhkecnnghdclnlmfjdje
92 Disponible en http://gplsi.dlsi.ua.es/~slujan/version-anterior.html
código CSS.
Si se escribe mal el código CSS, normalmente la página web se visualizará
más o menos bien en la mayoría de los navegadores porque estos están
preparados para admitir errores, pero en algunos casos la presentación
de la página puede variar enormemente de un navegador a otro. Por tan-
to, para asegurar que una página web se visualiza correctamente, en la
mayoría de los navegadores es imprescindible escribir un código correcto.
Cuando se escribe el código CSS a mano, se puede utilizar la herra-
mienta “W3C CSS Validation Service”93 para comprobar que el código es
correcto.
En la Figura 185 se muestra la página principal de “W3C CSS Vali-
dation Service”. Este servicio ofrece tres modos de validar el CSS de una
página web:
• Mediante URI: permite validar una página web mediante la in-
troducción de su URL. Por tanto, la página web tiene que estar
publicada en Internet.
• Mediante carga de archivo: permite validar una página web mediante
la subida del fichero correspondiente.
• Mediante entrada directa: permite validar una página web mediante
la introducción directa de su código.
93 Disponible en https://jigsaw.w3.org/css-validator/
body {
color: black;
background-color: white;
}
h1 {
font-size: 4em;
}
h2 {
font-size: 2em;
}
Listado 63: Ejemplo de CSS
Por ejemplo, el siguiente código CSS (Listado 64) contiene dos errores:
• En la línea 3, el valor whit no es un nombre de color correcto
para la propiedad background-color.
• En la línea 11, el valor em no es un valor correcto para la propie-
dad font-size.
body {
color: black;
background-color: whit;
}
h1 {
font-size: 4em;
}
h2 {
font-size: em;
}
Listado 64: Ejemplo de CSS con errores
Más información
Si quieres saber más sobre la importancia de emplear los estándares en el desa-
rrollo de las páginas web y los beneficios que reporta, consulta la página web
de “The Web Standards Project” disponible en http://www.webstandards.org/
Content-Style-Type: text/css
Figura 188: Resultado de validar con Total Validator una página web sin lenguaje de estilo por defecto
Figura 189: Resultado de validar con Total Validator una página web con lenguaje de estilo por defecto
Por otro lado, en las versiones de HTML anteriores a HTML5 era nece-
sario indicar el lenguaje de la hoja de estilo con el atributo type en los
elementos <style> y <link>. Sin embargo, a partir de HTML5 ya no es
necesario, porque se sobreentiende que es CSS.
Por ejemplo, en el Listado 66 se muestra el código fuente de una pá-
gina web escrita con XHTML 1.0 Strict. En la página existe un elemento
<style> que no incluye el atributo type. Cuando se valida esta página
con el validador del W3C96, el validador indica que la página contiene un
error, tal como se puede ver en la Figura 190.
96 Disponible en http://validator.w3.org/
Figura 190: Resultado de validar la página XHTML 1.0 sin el atributo type
Figura 191: Mensaje de error de la validación de la página XHTML 1.0 sin el atributo type
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Sin lenguaje de estilo por defecto</title>
<style>
p {color: red;}
</style>
</head>
<body>
<p>
Un párrafo con el texto de color rojo.
</p>
</body>
</html>
Listado 67: Ejemplo de página HTML5 sin el atributo type
97 Disponible en http://caniuse.com/
98 Disponible en http://caniuse.com/#feat=css-text-align-last
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Alineación del texto</title>
<style>
.izquierda {
text-align: justify;
text-align-last: left;
}
.derecha {
text-align: justify;
text-align-last: right;
}
.centrado {
text-align: justify;
text-align-last: center;
}
.justificado {
text-align: justify;
text-align-last: justify;
}
</style>
</head>
<body>
<p class=”izquierda”>
Style sheets represent a major breakthrough for Web page designers, expand-
ing their…
</p>
<p class=”derecha”>
HTML allows authors to design documents that take advantage of the char-
acteristics of…
</p>
<p class=”centrado”>
Media control is particularly interesting when applied to external style sheets
since user…
</p>
<p class=”justificado”>
Authors may specify a number of mutually exclusive style sheets called al-
ternate style…
</p>
</body>
</html>
Listado 68: Ejemplo de uso de la propiedad text-align-last de CSS3
332 © Alfaomega - Altaria
Curso práctico avanzado
Además de “Can I use…?”, existen otros sitios web en los que se puede
verificar la compatibilidad de CSS3 con los navegadores actuales. Por
ejemplo, el sitio web “CSS3 Click Chart”99 agrupa la información sobre
CSS3 en categorías y, además del soporte de los navegadores web, in-
cluye ejemplos de uso.
Consejo
Recuerda, no diseñas para IE, Chrome, iPhone o Android. Diseñas para las personas.
Fuente: Jeffrey Zeldman
https://psdtowp.net/interview-jeffrey-zeldman.html
Introducción
El color es una de las principales características que se emplea para
definir la presentación de una página web. Existen varias propiedades
que definen el color de alguna parte de un elemento:
• background-color: define el color del fondo.
• border-color: define el color del borde.
Consejo
Limita el número de tipos de letra y los colores en tu sitio y aplícalos con consis-
tencia. La gente no conϔía en los sitios que parecen notas de secuestro.
Fuente: Prioritizing Web Usability. Jakob Nielsen, Hoa Loranger. New Riders, 2006
Código hexadecimal
El código hexadecimal se especifica con el formato #RRGGBB, donde RR
representa la componente roja (red) del color, GG la componente verde
(green) y BB la componente azul (blue) mediante dígitos hexadecimales
que toman valores desde 00 (0 en decimal) hasta FF (255 en decimal).
Los dígitos hexadecimales no son sensibles a mayúsculas, por lo que se
puede escribir FF o ff.
/* rojo */
p {background-color: #ff0000;}
/* verde */
ul {background-color: #00ff00;}
/* azul */
ol {background-color: #0000ff;}
Listado 69: Ejemplo de colores especificados con código hexadecimal
Más información
https://youtu.be/Y7Vfnt2OK2M
Código HSL
El código HSL representa un color mediante tres componentes: matiz
(hue), saturación (saturation) y luminosidad (lightness).
El matiz, también llamado tono o tinte, se representa mediante un valor
entre 0 y 360 grados correspondiente a la rueda de color que se muestra
en la Figura 201. Según esta rueda de color, 0 (o 360) representa el rojo,
120 es el verde y 240 es el azul. En la Figura 201 se muestra también el
nombre del color y el código RGB del color.
/* Verde */
p {background-color: hsl(120, 100%, 50%);}
/* Verde claro */
p {background-color: hsl(120, 100%, 75%);}
/* Verde oscuro */
p {background-color: hsl(120, 100%, 25%);}
/* Verde pastel */
p {background-color: hsl(120, 60%, 70%);}
Listado 71: Ejemplo de colores especificados con código HSL
Código HSLA
El código HSLA es similar al código HSL, pero añade la componente
A, que representa el canal alfa de transparencia (u opacidad). Su fun-
cionamiento es el mismo que el canal alfa en el código RGBA, un valor
decimal entre 0.0 (totalmente transparente) y 1.0 (totalmente opaco).
El ejemplo mostrado en el Listado 72 define el color de fondo para un
párrafo utilizando el código HSLA.
Más información
https://youtu.be/mDAobnj359A
Selectores
Una regla de CSS se compone de un selector y un conjunto de pare-
jas propiedad/valor que definen una característica del elemento de la
página web seleccionado por el selector. En la Figura 202 se muestra la
estructura general de una regla de CSS.
En este ejemplo, el selector es el elemento h1 (encabezado de nivel 1),
lo que significa que esta regla se aplicará a todos los elementos h1 de la
página sin distinción. El selector indica la parte de la página a la que se
debe aplicar la regla.
Patrón Significado
* Cualquier elemento
E Un elemento de tipo E
EF Un elemento F que desciende de un elemento E
E>F Un elemento F que es hijo de un elemento E
E:first-child Un elemento E cuando E es el primer hijo de su padre
E:link Un elemento E si E es un enlace y no ha sido visitado
E:visited Un elemento E si E es un enlace y ha sido visitado
E:active Un elemento E cuando el elemento es activado por el
usuario
E:hover Un elemento E cuando el cursor del ratón está situado
sobre el elemento
E:focus Un elemento E cuando el elemento ha recibido el foco
E:lang(c) Un elemento E si tiene definido el idioma c
E+F Un elemento F precedido inmediatamente por un
elemento E
E[foo] Un elemento E con el atributo foo con valor (cualquier
valor)
E[foo=”warning”] Un elemento E con el atributo foo con el valor “war-
ning”
<div>
<p>Un párrafo</p>
<blockquote >
<p>Otra párrafo</p>
</blockquote >
<p>Otra párrafo más</p>
</div>
la regla:
div p {
background-color: yellow;
}
<div>
<p>Un párrafo</p>
<blockquote>
<p>Otra párrafo</p>
</blockquote>
<p>Otra párrafo más</p>
</div>
la regla:
div > p {
background-color: yellow;
}
<div>
<p>Un párrafo</p>
<blockquote>
<p>Otra párrafo</p>
</blockquote>
<p>Otra párrafo más</p>
</div>
la regla:
div + p {
background-color: yellow;
}
input[type=”text”] {
width: 150px;
margin-bottom: 10px;
background-color: yellow;
display: block;
}
input[type=”button”] {
width: 120px;
margin-left: 35px;
display: block;
}
Listado 73: Selector de atributo
Patrón Significado
E::first-line La primera línea del elemento E
E::first-letter La primera letra del elemento E
E::before Contenido generado antes del elemento E
E::after Contenido generado después del elemento E
Tabla 15: Pseudoelementos en CSS 2.1
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Pseudoclase ::before</title>
<style type=”text/css”>
.importante::before {
content: “Importante: “;
background-color: yellow;
color: red;
font-weight: bold;
}
</style>
</head>
<body>
<p>Los elementos necesarios para la reparación son:</p>
<ul>
<li>Resina</li>
<li class=”importante”>Tela asfáltica</li>
<li>Pintura</li>
<li class=”importante”>Pegamento</li>
<li>Cemento</li>
</ul>
</body>
</html>
Listado 74: Ejemplo de uso de ::before
Más información
https://youtu.be/jNQfWCjV8Os
Selectores en CSS3
En CSS3 existen todos los selectores de CSS2 más los nuevos que se
definen en CSS3. En la Tabla 16 se muestran los nuevos selectores que
incorpora CSS3.
Patrón Significado
E[foo^=”bar”] Un elemento E que tiene un atributo foo cuyo valor
comienza exactamente con la cadena “bar”
E[foo$=”bar”] Un elemento E que tiene un atributo foo cuyo valor
finaliza exactamente con la cadena “bar”
E[foo*=”bar”] Un elemento E que tiene un atributo foo cuyo valor
contiene la subcadena “bar”
E:root Un elemento E raíz del documento
E:nth-child(n) Un elemento E, el hijo n de su padre
E:nth-last-child(n) Un elemento E, el hijo n de su padre contando desde
el último
E:nth-of-type(n) Un elemento E, el hermano n de su tipo
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de nth-child</title>
<style type=”text/css”>
p:nth-child(1) {
background-color: #777;
}
p:nth-child(2) {
background-color: #999;
}
p:nth-child(3) {
background-color: #BBB;
}
p:nth-child(4) {
background-color: #DDD;
}
</style>
</head>
<body>
<p>Primer párrafo de prueba.</p>
<p>Segundo párrafo de prueba.</p>
<p>Tercer párrafo de prueba.</p>
<p>Cuarto párrafo de prueba.</p>
</body>
</html>
Listado 75: Ejemplo de uso de nth-child()
Más información
https://youtu.be/-LIc4yu-Ojc
Unidades de medida
CSS proporciona diferentes unidades de medida para los diferentes
valores que pueden tomar sus propiedades. Las unidades de medida se
organizan en:
• Unidades relativas de longitud (Tabla 17).
• Unidades absolutas de longitud (Tabla 18).
• Unidades de ángulos (Tabla 19).
• Unidades de tiempo (Tabla 20).
Unidad Significado
em El tamaño calculado del tipo de letra
ex La altura de la letra minúscula “x”
px Píxel
% Porcentaje
rem El tamaño del tipo de letra del elemento raíz
vw La anchura de la ventana de visualización
vh La altura de la ventana de visualización
vm El valor menor de la anchura o la altura de la
ventana de visualización
ch La anchura del cero
Tabla 17: Unidades relativas de longitud
Unidad Significado
in Pulgadas (1 pulgada = 2,54 centímetros)
cm Centímetros
mm Milímetros
pt Puntos (1 punto = 1/72 pulgadas)
pc Picas (1 pica = 12 puntos)
Tabla 18: Unidades absolutas de longitud
Unidad Significado
deg Grados sexagesimal
grad Grado centesimal
rad Radianes
turn Giros
Tabla 19: Unidades de ángulos
Unidad Significado
ms Milisegundos
s Segundos
Tabla 20: Unidades de tiempo
Funciones
CSS proporciona una serie de funciones que se pueden emplear en
las reglas:
• attr(): devuelve el valor del atributo indicado.
• url(): indica una URL para un recurso.
• counter(): devuelve el valor del contador indicado.
• calc(): realiza un cálculo aritmético. Admite alguno de estos cinco
operadores: suma “+”, resta “-”, multiplicación “*”, división “/” y
módulo de la división “mod”.
En el Listado 76 se muestra un ejemplo de uso de la función attr().
En este ejemplo se usa esta función para obtener la URL de un enlace y
visualizarla junto el enlace.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de attr</title>
<style type=”text/css”>
a::after {
content: “ (“ attr(href) “) “;
}
</style>
</head>
<body>
<p>El lenguaje <a href=”http://es.wikipedia.org/wiki/HTML”>HTML</
a> y el lenguaje <a href=”http://es.wikipedia.org/wiki/Hoja_de_estilos_en_
cascada”>CSS</a> son la base de las páginas web.</p>
</body>
</html>
Listado 76: Ejemplo de uso de attr()
En la Figura 205 se muestra la página del Listado 76, pero sin la re-
gla de CSS a::after. Los enlaces se muestran únicamente con el texto
del enlace. Sin embargo, cuando se aplica esa regla de CSS, además del
texto del enlace también se muestra la URL de éste, tal como se puede
ver en la Figura 206.
Advertencia
Aunque con CSS se puede alterar la presentación normal de cualquier ele-
mento de HTML (un elemento en línea se puede presentar como un elemento
en bloque y viceversa), es una muy mala práctica.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Una página con inline-block normal</title>
</head>
<body>
<p>
Algunos iconos del W3C
<img src=”valid-xhtml10.png” alt=”XHTML válido”/>
<img src=”vcss.gif” alt=”CSS válido” />
<img src=”wcag1AAA.png” alt=”AAA válido” />
que se pueden descargar de su página web.
</p>
<p>
Otro párrafo con otras cosas.
</p>
<p>
Y una lista con elementos:
</p>
<ul>
<li>Elemento 1.</li>
<li>Elemento 2.</li>
<li>Elemento 3.</li>
</ul>
</body>
</html>
Listado 77: Ejemplo de elementos en línea y en bloque
358 © Alfaomega - Altaria
Curso práctico avanzado
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=“utf-8“ />
<title>Una página con inline-block cambiado</title>
<style>
.enbloque {display: block}
.enlinea {display: inline}
</style>
</head>
<body>
<p>
Algunos iconos del W3C
<img src=“valid-xhtml10.png“ alt=“XHTML válido“/>
<img src=“vcss.gif“ alt=“CSS válido“ class=“enbloque“ />
<img src=“wcag1AAA.png“ alt=“AAA válido“ />
que se pueden descargar de su página web.
</p>
<p class=”enlinea”>
Otro párrafo con otras cosas.
</p>
<p class=”enlinea”>
Y una lista con elementos:
</p>
<ul>
<li class=”enlinea”>Elemento 1.</li>
<li class=”enlinea”>Elemento 2.</li>
<li class=”enlinea”>Elemento 3.</li>
</ul>
</body>
</html>
Listado 78: Ejemplo de uso de la propiedad display
Advertencia
¡Cuidado! No es una buena práctica cambiar el comportamiento normal de
los elementos.
.izquierda {
text-align: justify;
text-align-last: left;
}
.derecha {
text-align: justify;
text-align-last: right;
}
.centrado {
text-align: justify;
text-align-last: center;
}
.justificado {
text-align: justify;
text-align-last: justify;
}
Listado 79: Hoja de estilo sin minimizar
.izquierda{text-align:justify;text-align-last:left}.derecha{text-align:justify;-
text-align-last:right}.centrado{text-align:justify;text-align-last:center}.justifica-
do{text-align:justify;text-align-last:justify}
Listado 80: Hoja de estilo minimizada
La propiedad font
En las primeras versiones de HTML, la presentación del texto se po-
día cambiar con la etiqueta <font>. Esta etiqueta tenía tres atributos
opcionales:
• face: define el tipo de letra (la fuente) del texto.
• size: define el tamaño del texto, un valor de 1 (el tamaño más
pequeño) a 7 (el tamaño más grande).
• color: define el color del texto con la notación hexadecimal #RR-
GGBB.
En el Listado 81 se muestra un ejemplo de uso de esta etiqueta. En
esta página se emplea la etiqueta <font> para modificar la presentación
de los encabezados (<h1> y <h2>) y los párrafos (<p>).
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Uso de la antigua etiqueta <font></title>
</head>
<body>
<h1><font face=”Verdana” size=”7” color=”#0000CC”>Encabezado nivel 1</
font></h1>
<p><b><font face=”Courier” size=”5” color=”#00AA00”>Un párrafo de texto.</
font></b></p>
<h2><font face=”Arial” size=”6” color=”#0000AA”>Encabezado nivel 2</font></
h2>
<p><b><font face=»Courier»><font size=»5»><font color=»#00AA00»>Otro
párrafo de texto.</font></font></font></b></p>
</body>
</html>
Listado 81: Ejemplo de uso de la etiqueta <font>
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de font</title>
<style type=”text/css”>
h1 {
font: bold 36px Arial, Verdana, sans-serif;
}
h2 {
font: small-caps bold 24px Georgia, Times, serif;
}
h3 {
font: italic normal 20px Tahoma, Helvetica, sans-serif;
}
</style>
</head>
<body>
<h1>Encabezado nivel 1</h1>
<h2>Encabezado nivel 2</h2>
<h3>Encabezado nivel 3</h3>
</body>
</html>
Listado 82: Ejemplo de uso de la propiedad font
Consejo
Limite los estilos de fuente y otros formatos del texto, como los tamaños, los
colores, etc. en la página, porque demasiado diseño del texto puede disminuir
el signiϔicado de las palabras. Si el texto se parece demasiado a los gráϔicos, los
usuarios tienden a pasarlos por alto, confundiéndolos con los anuncios.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
Consejo
Un tamaño de letra pequeño no es una solución para meter más contenido en una
página. Más texto a menudo signiϔica menos lectura. El texto denso echa a la gente.
Fuente: Prioritizing Web Usability. Jakob Nielsen, Hoa Loranger. New Riders, 2006
h1, h2, h3 {
font-family: Georgia, “Times New Roman”, Times, serif;
}
p{
font-family: Arial, Helvetica, “Nimbus Sans L”, “Liberation Sans”, sans-serif;
}
Listado 83: Definición de tipos de letra de reserva
@font-face {
font-family: <un-nombre-de-fuente-remota>;
src: <origen> [,<origen>]*;
[font-weight: <altura>];
[font-style: <estilo>];
}
En el atributo src se indica el fichero fuente que contiene la definición del tipo
de letra que se quiere utilizar. Desafortunadamente, existen varios formatos de
tipo de letra, como OpenType, TrueType y Web Open Font Format (WOFF) y
los diferentes navegadores web actuales soportan diferentes formatos. Debido
a esto, cuando se emplea esta instrucción se debe indicar el mismo tipo de letra
con diferentes formatos, tal como se muestra en el ejemplo del Listado 84.
@font-face {
font-family: ‘MyWebFont’;
/* Compatible con IE9 */
src: url(‘webfont.eot’);
/* Compatible con IE6-IE8 */
src: url(‘webfont.eot?#iefix’) format(‘embedded-opentype’),
/* Compatible con los navegadores más modernos */
url(‘webfont.woff2’) format(‘woff2’),
/* Compatible con los navegadores modernos */
url(‘webfont.woff’) format(‘woff’),
/* Safari, Android, iOS */
url(‘webfont.ttf’) format(‘truetype’),
/* Otros navegadores */
url(‘webfont.svg#svgFontName’) format(‘svg’);
}
Listado 84: Uso de @font-face
El primer filtro (Figura 214) permite escoger las familias entre las que se quiere
buscar el tipo de letra.
El siguiente paso (Figura 217) es escoger los estilos de los tipos de letra
seleccionados. Para cada tipo de letra se pueden seleccionar diferentes
estilos, como negrita o cursiva. Además, en esta página se informa del
impacto de los tipos de letra seleccionados en la carga de la página web.
Cuantos más tipos de letra y más estilos se seleccionen, más tiempo
tardará en cargarse la página web.
Figura 218: Código para usar los tipos de letra de Google Fonts
<head>
…
<link href=’http://fonts.googleapis.com/css?family=Lora|Open+Sans’
rel=’stylesheet’ type=’text/css’>
…
</head>
@import url(http://fonts.googleapis.com/css?family=Lora|Open+Sans);
<script type=”text/javascript”>
WebFontConfig = {
google: { families: [ ‘Lora::latin’, ‘Open+Sans::latin’ ] }
};
(function() {
var wf = document.createElement(‘script’);
wf.src = (‘https:’ == document.location.protocol ? ‘https’ : ‘http’) +
‘://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js’;
wf.type = ‘text/javascript’;
wf.async = ‘true’;
var s = document.getElementsByTagName(‘script’)[0];
s.parentNode.insertBefore(wf, s);
})(); </script>
Más información
https://youtu.be/67gVFpvkdDk
Sangría
En tipografía, la sangría o el sangrado (en inglés indentation) de un
texto consiste en empezar un renglón de un bloque de texto más adentro
que el resto. Normalmente se suele hacer con el primer renglón de cada
párrafo, que suele aparecer de tres a cinco caracteres más a la derecha.
Pero también existe la sangría negativa o sangría francesa, en la que la
primera línea sobresale por la izquierda algo más que el resto, que van
algo más sangradas.
Las sangrías son un recurso muy usual en los textos impresos, ya que
ayudan a mejorar la legibilidad de los textos. En informática, la sangría
se utiliza para mejorar la legibilidad del código fuente por parte de los
programadores.
En CSS existe la propiedad text-indent, que puede tomar como valor
una medida o un porcentaje, ya sea positivo o negativo. Por ejemplo, en
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Sangría del texto</title>
<style type=”text/css”>
.positiva {text-indent: 3em;}
.francesa {text-indent: -3em; margin-left: 3em;}
.porcentaje {text-indent: 3%;}
</style>
</head>
<body>
<p class=”positiva”>
Una regla CSS consta de dos partes principales: un selector (‘H1’) y una decla-
ración (‘color: blue’). La declaración tiene dos partes: una propiedad (‘color’)
y un valor (‘blue’). Con tal de que el ejemplo anterior intente influir en una
sola propiedad necesaria para el procesamiento de un documento HTML, ya
lo califica como una hoja de estilo en sí mismo. Combinado con otras hojas de
estilo (un rasgo fundamental de CSS es que las hojas de estilo se combinan),
determinará la presentación final del documento.
, </p>
<p class=”francesa”>
CSS puede usarse con cualquier formato de documento estructurado, por
ejemplo con aplicaciones del eXtensible Markup Language [XML10]. De hecho,
XML depende más de las hojas de estilo que HTML, puesto que los autores
pueden construir elementos propios que las aplicaciones del usuario no saben
cómo mostrar.
</p>
<p class=”porcentaje”>
En todos los medios, el término lienzo describe “el espacio donde la estructura
del formato es procesada”. El lienzo es infinito por cada dimensión del espacio,
pero el procesamiento generalmente tiene lugar en una región limitada del
lienzo, establecida por la aplicación del usuario de acuerdo con el medio al
que está dirigido. Por ejemplo, las aplicaciones del usuario que procesan para
pantalla, generalmente imponen un ancho mínimo y eligen un ancho inicial
basado en las dimensiones del acceso visual.
</p>
</body>
</html>
Listado 85: Ejemplo de sangría del texto
Alineación
La propiedad text-align define cómo se alinea el contenido al ni-
vel de línea del bloque en que se aplica la propiedad. Por ejemplo, esta
propiedad define cómo se alinea el texto de un párrafo (el contenido a
nivel de línea), pero no indica cómo se alinea el propio párrafo (el bloque)
respecto a otros bloques.
La propiedad text-align puede tomar cuatro posibles valores:
• left: alinear a la izquierda.
• right: alinear a la derecha.
• center: alinear al centro, centrar.
• justify: alinear a la izquierda y a la derecha, justificar.
Consejo
Si quieres saber cómo alinear un bloque, como una tabla o una lista, consulta
la sección sobre el modelo de caja.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Alineación del texto</title>
<style type=”text/css”>
.izquierda {text-align: left;}
.derecha {text-align: right;}
.centrado {text-align: center;}
.justificado {text-align: justify;}
</style>
</head>
<body>
<p class=”izquierda”>
Style sheets represent a major breakthrough for Web page designers, expand-
ing their ability to improve the appearance of their pages. In the scientific
environments in which the Web was conceived, people are more concerned
with the content of their documents than the presentation. As people from
wider walks of life discovered the Web, the limitations of HTML became a
source of continuing frustration and authors were forced to sidestep HTML’s
stylistic limitations. While the intentions have been good -- to improve the
presentation of Web pages -- the techniques for doing so have had unfortunate
side effects. These techniques work for some of the people, some of the time,
but not for all of the people, all of the time.
</p>
<p class=”derecha”>
HTML allows authors to design documents that take advantage of the char-
acteristics of the media where the document is to be rendered (e.g., graphical
displays, television screens, handheld devices, speech-based browsers, braille-
based tactile devices, etc.). By specifying the media attribute, authors allow
user agents to load and apply style sheets selectively. Please consult the list
of recognized media descriptors.
</p>
<p class=”centrado”>
Decoración
La propiedad text-decoration permite definir la decoración que se
aplica al texto de un elemento. Esta propiedad puede tomar los siguien-
tes valores:
• none: no produce ninguna decoración del texto.
• underline: el texto es subrayado.
• overline: el texto tiene una línea encima.
• line-through: el texto tiene una línea por el medio (tachado).
• blink: el texto parpadea.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Decoración del texto</title>
<style type=”text/css”>
b u {text-decoration: none;}
.subrayado{text-decoration: underline;}
.encima {text-decoration: overline;}
.tachado {text-decoration: line-through;}
.parpadeante {text-decoration: blink;}
</style>
</head>
<body>
<p>
Este texto está <u>subrayado</u>, <b><u>pero este no</u></b>, pero
<u><b>este sí</b></u>.
Una prueba de <span class=”subrayado”>texto subrayado</span>.
Una prueba de <span class=”encima”>texto con una línea encima</span>.
Una prueba de <span class=”tachado”>texto tachado</span>.
Una prueba de <span class=”parpadeante”>texto parpadeante</span>.
</p>
</body>
</html>
Listado 87: Ejemplo de decoración del texto
Sombra
La propiedad text-shadow permite definir la sombra que se aplica
a un texto. Esta propiedad text-shadow fue definida por primera vez
en CSS2, pero fue eliminada en CSS2.1 debido a que su definición era
incorrecta. El uso de ésta se extendió a partir de que Microsoft Internet
Explorer 10 la aceptase.
© Alfaomega - Altaria 383
HTML & CSS
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Sombra del texto</title>
<link rel=”stylesheet” href=”sombra.css” />
</head>
<body>
<h1 class=”simple”>Monster Mash</h1>
<h1 class=”otto”>Slippery Slime</h1>
<h1 class=”relief”>Mummy Mommy</h1>
<h1 class=”close”>Graveyard Smash</h1>
<h1 class=”printers”>Skeleton Crew</h1>
<h1 class=”glow”>Smooth Zombie</h1>
<h1 class=”vamp”>Vampire Diaries</h1>
</body>
</html>
Listado 88: Ejemplo de sombra del texto
.simple {
background: #91877b;
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4);
}
.otto {
background: #0e8dbc;
color: white;
text-shadow: 0 1px 0 #ccc,
0 2px 0 #c9c9c9,
0 3px 0 #bbb,
0 4px 0 #b9b9b9,
0 5px 0 #aaa,
0 6px 1px rgba(0,0,0,.1),
0 0 5px rgba(0,0,0,.1),
0 1px 3px rgba(0,0,0,.3),
0 3px 5px rgba(0,0,0,.2),
0 5px 10px rgba(0,0,0,.25),
0 10px 10px rgba(0,0,0,.2),
0 20px 20px rgba(0,0,0,.15);
}
.relief {
background-color: #3a50d9;
color: #e0eff2;
font: italic bold 100px Georgia, Serif;
text-shadow: -4px 3px 0 #3a50d9, -14px 7px 0 #0a0e27;
}
Listado 89: Ejemplo de sombra del texto (definición de estilos)
.close {
background-color: #fff;
color: #202c2d;
text-shadow:
0 1px #808d93,
-1px 0 #cdd2d5,
-1px 2px #808d93,
-2px 1px #cdd2d5,
-2px 3px #808d93,
-3px 2px #cdd2d5,
-3px 4px #808d93,
-4px 3px #cdd2d5,
-4px 5px #808d93,
-5px 4px #cdd2d5,
-5px 6px #808d93,
-6px 5px #cdd2d5,
-6px 7px #808d93,
-7px 6px #cdd2d5,
-7px 8px #808d93,
-8px 7px #cdd2d5;
}
.printers {
background-color: #edde9c;
color: #bc2e1e;
text-shadow:
0 1px 0px #378ab4,
1px 0 0px #5dabcd,
1px 2px 1px #378ab4,
2px 1px 1px #5dabcd,
2px 3px 2px #378ab4,
3px 2px 2px #5dabcd,
3px 4px 2px #378ab4,
4px 3px 3px #5dabcd,
4px 5px 3px #378ab4,
5px 4px 2px #5dabcd,
5px 6px 2px #378ab4,
Consejo
TODO EL TEXTO EN MAYÚSCULAS REDUCE LA VELOCIDAD DE LECTURA APROXI-
MADAMENTE EN UN DIEZ POR CIERTO. LAS LETRAS EN MAYÚSCULAS Y MINÚSCU-
LAS TIENEN VARIACIONES QUE ROMPEN EL TEXTO EN FORMAS RECONOCIBLES,
MIENTRAS QUE UN PÁRRAFO TODO EN MAYÚSCULAS TIENE UNA ALTURA Y
FORMA UNIFORMES, HACIENDO QUE PAREZCA FORMADO POR BLOQUES Y TODO
JUNTO. ADEMÁS, LA UTILIZACIÓN DE TODAS LAS LETRAS EN MAYÚSCULAS PUE-
DE PARECER INFANTIL Y DE AFICIONADOS, O AGRESIVO O POCO PROFESIONAL.
RESERVA TODO EN MAYÚSCULAS PARA LOS ENCABEZADOS Y TÍTULOS CORTOS,
Y PARA GRITAR.
Fuente: Prioritizing Web Usability. Jakob Nielsen, Hoa Loranger. New Riders, 2006
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Transformación del texto</title>
<style type=”text/css”>
h1 {text-transform: uppercase;}
h2 {text-transform: capitalize;}
</style>
</head>
<body>
<h1>Propiedades del borde</h1>
<h2>Ancho del borde</h2>
<p>
Las propiedades del ancho del borde especifican la medida del área del bor-
de. Las propiedades definidas en esta sección se refieren al tipo de valor de
border-width, que puede tomar uno de los siguientes valores:
thin, medium, thick.
</p>
Más información
https://youtu.be/lwhzMhnFB2I
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Espaciado del texto</title>
<style type=”text/css”>
h1 {letter-spacing: 1em; word-spacing: 2em;}
h2 {letter-spacing: 0.5em; word-spacing: 1em;}
.unoymedio {line-height: 1.5em;}
.doble {line-height: 2em;}
</style>
</head>
<body>
<h1>Espaciado de letras y palabras</h1>
<h2>Espaciado de letras</h2>
<p class=”unoymedio”>
La propiedad letter-spacing especifica el comportamiento de los espacios entre
los caracteres del texto.
Espacios en blanco
En HTML los espacios en blanco no son significativos, lo que signifi-
ca que no producen los efectos visuales de espaciado que normalmente
generan. Recordemos que se definen como espacios en blanco el espacio
(código 32 en ASCII y Unicode114), el tabulador (código 9), el avance o
salto de línea (código 10), el retorno de carro (código 13) y el avance de
página (código 12).
Sin embargo, la propiedad de CSS white-space permite indicar cómo
tratar los espacios en blanco dentro de un elemento. Esta propiedad
puede tomar los siguientes valores:
• normal: el comportamiento normal. Los saltos de línea se indican
con la etiqueta <br> y las líneas se cortan automáticamente para
ajustarse al ancho disponible.
• pre: el comportamiento es similar a la etiqueta <pre>, los saltos
de línea se producen por los saltos de línea que contenga el texto
o por los indicados con la etiqueta <br> y las líneas no se cortan
automáticamente.
• nowrap: similar al comportamiento normal, pero las líneas no se
cortan automáticamente.
En el ejemplo del Listado 93 se muestra el comportamiento de la pro-
piedad white-space con los tres valores comentados. En el ejemplo hay
tres párrafos con el mismo texto, que contiene saltos de línea, espacios,
tabuladores y la etiqueta <br>. En la Figura 227 se puede ver cómo se
muestra este ejemplo en un navegador.
114 Con el objetivo de lograr compatibilidad hacia atrás, los 128 primeros caracteres de Unicode coinciden
con los 128 caracteres de ASCII.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Espacios en blanco del texto</title>
</head>
<body>
<p>
Ciertas propiedades CSS son diseñadas sólo para ciertos medios (ej., la pro-
piedad ‘cue-before’ para las aplicaciones del usuario auditivas).
<br />
En ocasiones, sin embargo, las hojas de estilo para diferentes tipos de medios
pueden compartir una propiedad, pero requieren de valores diferentes para
esa propiedad.
Por ejemplo, la propiedad ‘font-size’ es útil para la pantalla y los medios
impresos.
Sin embargo, los dos medios son lo suficientemente diferentes como para re-
querir diferentes valores para la propiedad común; un documento necesitará
típicamente una fuente mayor en una pantalla de computadora que sobre
papel.
</p>
<p style=”white-space: pre”>
Ciertas propiedades CSS son diseñadas sólo para ciertos medios (ej., la pro-
piedad ‘cue-before’ para las aplicaciones del usuario auditivas).
<br />
En ocasiones, sin embargo, las hojas de estilo para diferentes tipos de medios
pueden compartir una propiedad, pero requieren de valores diferentes para
esa propiedad.
Por ejemplo, la propiedad ‘font-size’ es útil para la pantalla y los medios
impresos.
Sin embargo, los dos medios son lo suficientemente diferentes como para re-
querir diferentes valores para la propiedad común; un documento necesitará
típicamente una fuente mayor en una pantalla de computadora que sobre
papel.
</p>
<p style=”white-space: nowrap”>
Ciertas propiedades CSS son diseñadas sólo para ciertos medios (ej., la pro-
piedad ‘cue-before’ para las aplicaciones del usuario auditivas).
<br />
En ocasiones, sin embargo, las hojas de estilo para diferentes tipos de medios
pueden compartir una propiedad, pero requieren de valores diferentes para
esa propiedad.
Por ejemplo, la propiedad ‘font-size’ es útil para la pantalla y los medios
impresos.
Sin embargo, los dos medios son lo suficientemente diferentes como
para requerir diferentes valores para la propiedad común; un documento ne-
cesitará típicamente una fuente mayor en una pantalla de computadora que
sobre papel.
</p>
</body>
</html>
Listado 93: Ejemplo de espacios en blanco del texto
Figura 228: Ejemplo de espacios en blanco del texto (zoom reducido al 50%)
Más información
https://youtu.be/sui6ru74PT8
// cellpadding
th, td { padding: 5px; }
// cellspacing
table { border-collapse: separate; border-spacing: 5px; } // cellspacing=”5”
table { border-collapse: collapse; border-spacing: 0; } // cellspacing=”0”
// valign
th, td { vertical-align: top; }
// align (center)
table { margin: 0 auto; }
Listado 94: Simulación de atributos de tabla con CSS
Por ejemplo, el código del Listado 95 muestra una tabla cuyos bordes
han sido modificados con las propiedades border, border-spacing y
border-collapse. Con estas modificaciones, la tabla se visualiza (Figura
229) de la misma forma que la tabla que se había creado con caracteres
y la etiqueta <pre> (Figura 93).
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=“utf-8“ />
<meta name=“generator“ content=“Bloc de notas“ />
<meta name=“author“ content=“Sergio Luján Mora“ />
<meta name=“keywords“ content=“XHTML, web“ />
<meta name=”description” content=”Tabla con bordes modificados” />
<title>Tabla con bordes modificados</title>
<style>
table {
border: 1px solid #000;
border-spacing: 0;
border-collapse: collapse;
font-family: monospace;
}
th, td {
font-weight: normal;
padding-top: 8px;
padding-bottom: 8px;
text-align: left;
vertical-align: top;
border: 1px solid #000;
}
th.right, td {
width: 40px;
text-align: right;
}
</style>
</head>
<body>
<table>
<tr>
<th>Mes</th><th class=”right”>Agua</th><th class=”right”>Gas</th>
</tr>
<tr>
<th>enero</th><td>1200</td><td>5720</td>
</tr>
<tr>
<th>febrero</th><td>2000</td><td>4000</td>
</tr>
<tr>
<th>marzo</th><td>1500</td><td>6000</td>
</tr>
<tr>
<th>abril</th><td>500</td><td>3000</td>
</tr>
</table>
</body>
</html>
Listado 95: Tabla con bordes modificados
El título de la tabla
El título de una tabla se define con el elemento <caption>. Por de-
fecto el título de una tabla aparece en la parte superior de la tabla, pero
la posición se puede cambiar con la propiedad caption-side de CSS.
Esta propiedad puede tomar los valores:
• top: en la parte superior de la tabla, el valor por defecto.
• bottom: en la parte inferior de la tabla.
El Listado 96 contiene el código de una página web que posee dos
tablas. Como se puede ver en la Figura 230, el título de la primera tabla
aparece en la parte superior, mientras que el título de la segunda tabla
aparece en la parte inferior porque se ha aplicado la clase titulo-in-
ferior que tiene la regla caption-side: bottom.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Tabla con título</title>
<style>
table, th, td {
border: 1px solid #000;
}
.titulo-inferior {
caption-side: bottom;
}
</style>
</head>
<body>
<p>Una tabla con gastos:</p>
<table>
<caption>Gastos de agua y gas en los meses enero, febrero, marzo y abril</
caption>
<tr>
<th>Mes</th><th class=”right”>Agua</th><th class=”right”>Gas</th>
</tr>
<tr>
<th>enero</th><td>1200</td><td>5720</td>
</tr>
<tr>
<th>febrero</th><td>2000</td><td>4000</td>
</tr>
<tr>
<th>marzo</th><td>1500</td><td>6000</td>
</tr>
<tr>
<th>abril</th><td>500</td><td>3000</td>
</tr>
</table>
<p>Otra tabla con gastos:</p>
<table class=”titulo-inferior”>
<caption>Gastos de agua y gas en los meses enero, febrero, marzo y abril</
caption>
<tr>
<th>Mes</th><th class=”right”>Agua</th><th class=”right”>Gas</th>
</tr>
<tr>
<th>enero</th><td>1200</td><td>5720</td>
</tr>
<tr>
<th>febrero</th><td>2000</td><td>4000</td>
</tr>
<tr>
<th>marzo</th><td>1500</td><td>6000</td>
</tr>
<tr>
<th>abril</th><td>500</td><td>3000</td>
</tr>
</table>
</body>
</html>
Listado 96: Ejemplo de tabla con la posición del título modificada
Estilo cebra
El estilo cebra o en franjas consiste en colorear de forma alternativa
las filas que forman una tabla. Este estilo busca dos objetivos principales:
• Mejorar la presentación visual de las tablas con un estilo más
estético.
• Ayudar al usuario a consultar la tabla, ya que ayuda a guiar el
ojo para que siga los datos que forman una fila.
La forma tradicional de lograr esta presentación es definiendo una o
dos clases de CSS que se aplican a las filas de la tabla de forma alterna-
da. Sin embargo, esta solución tiene dos problemas muy importantes:
requiere mucho trabajo manual y se pueden producir inconsistencias si
se añaden o eliminan filas de la tabla una vez finalizada.
© Alfaomega - Altaria 405
HTML & CSS
Otra forma mejor es utilizar JavaScript y DOM para asignar las cla-
ses a las filas de forma dinámica. Esta solución no tiene los problemas
que presenta la primera solución, pero tiene el inconveniente de ser una
solución pesada que requiere la ejecución de código.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=“utf-8“ />
<meta name=“generator“ content=“Bloc de notas“ />
<meta name=“author“ content=“Sergio Luján Mora“ />
<meta name=“keywords“ content=“XHTML, web“ />
<meta name=”description” content=”Tabla con estilo cebra” />
<title>Tabla con estilo cebra</title>
<style>
table {
border: 1px solid #000;
border-spacing: 0;
border-collapse: collapse;
font-family: monospace;
}
th, td {
font-weight: normal;
padding-top: 8px;
padding-bottom: 8px;
text-align: left;
vertical-align: top;
border: 1px solid #000;
}
th.right, td {
width: 40px;
text-align: right;
}
tr:nth-child(odd) {
background-color: #AAA;
}
tr:nth-child(1) {
color: #FFF;
background-color: #000;
}
</style>
</head>
<body>
<table>
<tr>
<th>Mes</th><th class=”right”>Agua</th><th class=”right”>Gas</th>
</tr>
<tr>
<th>enero</th><td>1200</td><td>5720</td>
</tr>
<tr>
<th>febrero</th><td>2000</td><td>4000</td>
</tr>
<tr>
<th>marzo</th><td>1500</td><td>6000</td>
</tr>
<tr>
<th>abril</th><td>500</td><td>3000</td>
</tr>
</table>
</body>
</html>
Listado 97: Tabla con estilo cebra
© Alfaomega - Altaria 407
HTML & CSS
tr:nth-child(1) {
color: #FFF;
background-color: #000;
}
tr:nth-child(odd) {
background-color: #AAA;
}
Introducción
CSS3 añade nuevas propiedades que permiten realizar transformacio-
nes de los elementos presentados en una página web sin necesidad de
utilizar JavaScript o alguna librería basada en JavaScript como jQuery115
o Zepto.js116. Esto supone una gran ventaja, ya que el uso de JavaScript
115 Disponible en https://jquery.com/
116 Disponible en http://zeptojs.com/
Escalar
La función scale() permite modificar el tamaño del elemento. Esta
función recibe dos parámetros: el valor X para el eje horizontal y el valor
Y para el eje vertical. Si sólo recibe un valor, ese valor es aplicado a am-
bos ejes. Los valores entre 0 y 1 reducen las dimensiones del elemento,
un valor de 1 mantiene la dimensión original y los valores mayores que
1 aumentan las dimensiones del elemento.
En la Figura 233 se muestra un elemento con su tamaño original. El
elemento está compuesto de un rectángulo con bordes redondeados que
en su interior posee el texto “CSS3.0 Transform”.
Rotar
La función rotate() rota o gira un elemento el número de grados
indicados en el sentido de las agujas del reloj. Si el número de grados
es un valor negativo, la rotación se realiza en el sentido contrario a las
agujas del reloj.
El ángulo de rotación se puede indicar con diferentes unidades de
medida:
• deg: grado sexagesimal. Hay 360 grados sexagesimales en una
circunferencia completa.
• grad: grado centesimal, gon o gradián. Hay 400 grados centesi-
males en una circunferencia completa.
• rad: radián. Hay 2π radianes en una circunferencia completa.
• turn: giro. Hay 1 giro en una circunferencia completa.
Un mismo ángulo se puede indicar con cualquiera de las cuatro uni-
dades. Por ejemplo, un ángulo recto se puede representar como 90deg,
100grad, 0.25turn o aproximadamente 1.570796326794897rad.
En la Figura 236 se muestra un elemento que ha sido girado 340
grados con la siguiente regla de CSS:
transform: rotate(340deg) ;
transform: rotate(-20deg) ;
transform: rotate(180deg) ;
transform: rotate(-180deg) ;
Sesgar
La función skew(), que se puede traducir como sesgar o inclinar,
permite inclinar un elemento y cambiar la simetría del eje horizontal y
vertical. Esta función recibe dos parámetros: el primero para el eje hori-
zontal y el segundo para el eje vertical. Si sólo se proporciona un valor,
el segundo parámetro toma el valor 0.
Por ejemplo, en la Figura 238 se ha aplicado un sesgo de -16 grados
en el eje vertical con la siguiente regla de CSS:
Trasladar
La función translate() traslada un elemento de posición. Esta
función recibe dos parámetros, el primero para la translación en el eje
horizontal y el segundo para la translación en el eje vertical. Si sólo se
proporciona un valor, el segundo parámetro toma el valor 0.
También se puede realizar una parcial en el eje horizontal o en el eje
vertical utilizando las funciones translateX() y translateY().
Introducción
CSS3 añade nuevas propiedades que permiten realizar transiciones
en una página web sin necesidad de utilizar JavaScript
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de transition</title>
<style type=”text/css”>
li {
transition: background-color 1s;
background: yellow;
}
li:hover {
background-color: red;
transition-duration: 2s;
}
</style>
</head>
<body>
<p>Principios de la accesibilidad web:</p>
<ul>
<li>Perceptible</li>
<li>Operable</li>
<li>Comprensible</li>
<li>Robusto</li>
</ul>
</body>
</html>
Listado 98: Ejemplo de uso de transition
texto. Cuando el cursor del ratón se sitúa encima del párrafo de texto,
su anchura aumenta desde 100 píxeles hasta 300 píxeles.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de transition</title>
<style type=”text/css”>
p{
width: 100px;
height: 100px;
background: red;
transition: width ease-in 3s;
}
p:hover {
width: 300px;
transition: width cubic-bezier(0.110, 0.875, 0.225, 0.945) 1s;
}
</style>
</head>
<body>
<p>Un párrafo de texto.</p>
</body>
</html>
Listado 99: Ejemplo de transición con función de intervalo
Más información
https://youtu.be/9HVBvwPp1MA
https://youtu.be/N7p3OMM1wII
El modelo de caja
El modelo de caja (en inglés box model) de CSS describe las cajas rec-
tangulares que son generadas por los elementos de la estructura del
documento. Cada caja tiene un área de contenido como, por ejemplo
un texto o una imagen, y las áreas circundantes opcionales del relleno
(padding), el borde (border) y el margen (margin). La Figura 253 mues-
tra cómo se relacionan las cuatro áreas y la forma de referirse a cada
una de ellas: el área de contenido es la de más adentro y el resto están
anidadas unas dentro de las otras.
El relleno
Las propiedades del relleno especifican el ancho del área de relleno de
una caja. La propiedad resumida padding define el relleno para los cuatro
lados padding-top, padding-right, padding-bottom y padding-left.
Los valores de relleno no pueden ser negativos.
Cuando se emplea la propiedad resumida padding, si sólo hay un valor,
se aplica a todos los lados del elemento. Si hay dos valores, los rellenos
superior e inferior son determinados por el primer valor y los rellenos
derecho e izquierdo son determinados por el segundo. Si hay tres valo-
res, el superior es definido por el primer valor, el izquierdo y el derecho
son definidos por el segundo, y el inferior es definido por el tercero. Si
hay cuatro valores, ellos se aplican empezando por el relleno superior y
girando en el sentido de las agujas del reloj: superior, derecho, inferior
e izquierdo, respectivamente.
Por ejemplo, en el Listado 100 se muestran varias formas de definir
el relleno de un párrafo. Para cada regla de CSS se ha indicado con un
comentario la interpretación de la regla.
/* padding-top = 1em,
padding-right y padding-left = 2em,
padding-bottom = 3em */
p {padding: 1em 2em 3em;}
/* padding-top = 1em,
padding-right = 2em,
padding-bottom = 3em,
padding-left = 4em */
p {padding: 1em 2em 3em 4em;}
Listado 100: Asignación de valores en la propiedad padding
p{
padding-top: 1em;
padding-right: 2em;
padding-bottom: 3em;
padding-left: 4em;
}
El borde
Las propiedades del borde especifican el ancho, el color y el estilo del
área del borde de una caja que se dibuja a su alrededor. A continuación
se explican de forma detallada estas tres propiedades:
• border-width: la anchura del borde.
• border-color: el color del borde.
• border-style: el estilo del borde.
Además, también se explica la propiedad resumida border, que permi-
te establecer las tres propiedades anteriores con una sola regla de CSS.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Estilos de los bordes</title>
<style>
p{
width: 50%;
margin-left: auto;
margin-right: auto;
text-align: center;
}
</style>
</head>
<body>
<p style=”border-style: none”>
none
</p>
<p style=”border-style: hidden”>
hidden
</p>
<p style=”border-style: dotted”>
dotted
</p>
<p style=”border-style: dashed”>
dashed
</p>
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Estilos de los bordes con color</title>
<style>
p{
width: 50%;
margin-left: auto;
margin-right: auto;
text-align: center;
background-color: gold;
border-width: 5px;
}
</style>
</head>
<body>
<p style=”border-style: solid”>
solid
</p>
<p style=”border-style: solid; color: red”>
solid
</p>
En la Figura 259 se puede observar que las dos primeras cajas, la caja
que tiene un borde con el estilo solid y la caja que tiene un borde con el
estilo double sí que se visualizan con el borde de color rojo, pero el resto
de cajas aparecen todas con el borde negro, aunque se haya indicado el
color rojo con la propiedad color: red.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Estilos de los bordes definidos con las propiedades resumidas</title>
<style>
p {width: 50%; margin-left: auto; margin-right: auto;}
<p class=”caja2”>
Esto es una caja: el borde izquierdo toma el color de la propiedad color.
</p>
<p class=”caja3”>
Esto es una caja: el borde izquierdo toma el color de la propiedad color.
</p>
<p class=”caja4”>
Esto es una caja: el borde izquierdo toma el color de la propiedad color.
</p>
<p class=”caja5”>
Esto es una caja: inicialmente el borde izquierdo toma el color de la propiedad
color, pero posteriormente border-color modifica su valor.
</p>
</body>
</html>
Listado 104: Ejemplo de bordes definidos con las propiedades resumidas
Advertencia
Recuerda: cuando se emplean las propiedades resumidas del borde, si no se
especifica un valor para una propiedad, la propiedad tomará como valor el
valor inicial.
El margen
Las propiedades del margen especifican el ancho del área de margen de
una caja. La propiedad resumida margin define el margen para los cua-
tro lados margin-top, margin-right, margin-bottom y margin-left.
Los valores negativos para las propiedades de los márgenes son permi-
tidos, pero pueden existir limitaciones específicas de la implementación
realizada por el navegador web.
La propiedad margin puede tomar uno de los siguientes valores:
• una medida: especifica un ancho fijo.
• un porcentaje: el valor es calculado con respecto al ancho del
bloque contenedor y de la propia caja.
• auto: el margen se calcula automáticamente, dependiendo del
ancho del bloque contenedor y de la propia caja.
Cuando se emplea la propiedad resumida margin, si hay sólo un valor,
se aplica a todos los lados. Si hay dos valores, los márgenes superior e
inferior son determinados por el primer valor y los márgenes derecho e
izquierdo son determinados por el segundo. Si hay tres valores, el supe-
rior es definido por el primer valor, el izquierdo y el derecho son definidos
por el segundo, y el inferior es definido por el tercero. Por último, si hay
cuatro valores, se aplican empezando por el margen superior y girando en
el sentido de las agujas del reloj: superior, derecho, inferior e izquierdo,
respectivamente.
Para alinear un elemento en bloque es un error emplear la propiedad
text-align, ya que esta propiedad define la alineación del contenido
del elemento, pero no la alineación del elemento en sí mismo. La pro-
piedad margin se puede emplear para alinear un elemento en el espacio
disponible.
Por ejemplo, el Listado 105 muestra un ejemplo de alienación incorrecta
de un elemento con la propiedad text-align. Como se puede ver en la
Figura 264, los párrafos no aparecen alineados en el espacio disponible,
lo que aparece alineado es el contenido de los párrafos.
446 © Alfaomega - Altaria
Curso práctico avanzado
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Alineación de un elemento</title>
<style>
p {width: 70%;}
.izquierda {text-align: left;}
.derecha {text-align: right;}
.centrado {text-align: center;}
</style>
</head>
<body>
<p class=”izquierda”>
Style sheets represent a major breakthrough for Web page designers, expand-
ing their ability to improve the appearance of their pages. In the scientific
environments in which the Web was conceived, people are more concerned
with the content of their documents than the presentation. As people from
wider walks of life discovered the Web, the limitations of HTML became a
source of continuing frustration and authors were forced to sidestep HTML’s
stylistic limitations. While the intentions have been good -- to improve the
presentation of Web pages -- the techniques for doing so have had unfortunate
side effects. These techniques work for some of the people, some of the time,
but not for all of the people, all of the time.
</p>
<p class=”derecha”>
HTML allows authors to design documents that take advantage of the char-
acteristics of the media where the document is to be rendered (e.g., graphical
displays, television screens, handheld devices, speech-based browsers, braille-
based tactile devices, etc.). By specifying the media attribute, authors allow
user agents to load and apply style sheets selectively. Please consult the list
of recognized media descriptors.
</p>
<p class=”centrado”>
Media control is particularly interesting when applied to external style sheets
since user agents can save time by retrieving from the network only those style
sheets that apply to the current device. For instance, speech-based browsers
can avoid downloading style sheets designed for visual rendering. See the
section on media-dependent cascades for more information.
</body>
</html>
Listado 105: Ejemplo de alineación incorrecta de un elemento
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Alineación de un elemento</title>
<style>
p {width: 70%;}
.izquierda {
margin-left: 0px;
margin-right: auto;
}
.derecha {
margin-left: auto;
margin-right: 0px;
}
.centrado {
margin-left: auto;
margin-right: auto;
}
</style>
</head>
<body>
<p class=”izquierda”>
Style sheets represent a major breakthrough for Web page designers, expand-
ing their ability to improve the appearance of their pages. In the scientific
environments in which the Web was conceived, people are more concerned
with the content of their documents than the presentation. As people from
wider walks of life discovered the Web, the limitations of HTML became a
source of continuing frustration and authors were forced to sidestep HTML’s
stylistic limitations. While the intentions have been good -- to improve the
presentation of Web pages -- the techniques for doing so have had unfortunate
side effects. These techniques work for some of the people, some of the time,
but not for all of the people, all of the time.
</p>
<p class=”derecha”>
HTML allows authors to design documents that take advantage of the char-
acteristics of the media where the document is to be rendered (e.g., graphical
displays, television screens, handheld devices, speech-based browsers, braille-
based tactile devices, etc.). By specifying the media attribute, authors allow
user agents to load and apply style sheets selectively. Please consult the list
of recognized media descriptors.
</p>
<p class=”centrado”>
Media control is particularly interesting when applied to external style sheets
since user agents can save time by retrieving from the network only those style
sheets that apply to the current device. For instance, speech-based browsers
can avoid downloading style sheets designed for visual rendering. See the
section on media-dependent cascades for more information.
</p>
</body>
</html>
Listado 106: Ejemplo de alineación correcta de un elemento
El contorno
a:focus {
outline: 2px solid invert;
}
Posicionamiento
Existen tres propiedades de CSS que se emplean para definir el posi-
cionamiento de los elementos en una página web: display, position
y float.
La propiedad display define el tipo de visualización para un elemento
en una página web. El tipo de visualización se define indicando el tipo de
caja del elemento. Existen más de 20 valores para esta propiedad, pero
los más comunes son:
• block: el elemento se comporta como un elemento de bloque,
como <div> o <p>.
• inline: el elemento se comporta como un elemento en línea, como
<a> o <span>.
• table: el elemento se comporta como una tabla.
• none: el elemento no se visualiza y no participa en la maquetación
de la página.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de display</title>
<style>
.enlinea {
display: inline;
}
b{
display: block;
}
</style>
</head>
<body>
<p>Un párrafo normal.</p>
<p class=”enlinea”>Primer párrafo de texto.</p>
<p class=”enlinea”>Segundo párrafo de texto.</p>
<p class=”enlinea”>Tercer párrafo de texto.</p>
<p>Otro párrafo normal.</p>
<p>Los valores que puede tomar la propiedad display son: <b>block,</b>
<b>inline,</b> <b>table y</b> <b>none.</b></p>
</body>
</html>
Listado 107: Ejemplo de uso de display
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Prueba de position</title>
<style>
.fijo {
position: fixed;
top: 0;
left: 0;
margin: 0;
}
body {
padding-left: 160px;
}
</style>
</head>
<body>
<p class=”fijo”><img src=”w3c-logo.png” alt=”” /></p>
<h1>Prueba de position</h1>
<p>Esto es una prueba de position: fixed.</p>
<p>Esto es una prueba de position: fixed.</p>
<p>Esto es una prueba de position: fixed.</p>
<!-- Texto repetido varias veces -->
</body>
</html>
Listado 108: Ejemplo de uso de position
Estilos de diseños
Tradicionalmente han existido tres estilos de diseño de las páginas web:
el diseño ϐijo, el diseño ϐluido y el diseño elástico, más una combinación de
todos ellos que se conoce como diseño híbrido, en el que los tres estilos
de diseño se emplean en distintas partes de la página web.
Sin embargo, el uso generalizado de los dispositivos móviles como
los teléfonos móviles y las tabletas ha producido que el acceso a la Web
ya no se realice exclusivamente desde un ordenador. Esta situación ha
motivado el desarrollo de nuevas técnicas de diseño de las páginas web
para garantizar que las páginas se puedan visualizar en cualquier tipo
de dispositivo, independientemente del tamaño de la pantalla del dispo-
sitivo. Las nuevas técnicas de diseño se suelen agrupar bajo el nombre
de diseño adaptable o diseño adaptativo.
En los siguientes apartados se van a repasar los cinco estilos de dise-
ño, fijo, líquido o fluido, elástico, híbrido y adaptativo. Para cada uno de
los estilos se va a analizar su comportamiento ante diferentes tamaños
de pantalla. En todos los diseños se va a emplear la misma página para
comparar el comportamiento de cada diseño.
Consejo
La creación de un diseño perfecto hasta el píxel es inútil. Deϔine el diseño por de-
fecto, pero permite a la gente reemplazar tu diseño. Mantener el control signiϔica
renunciar a parte de él.
Fuente: Prioritizing Web Usability. Jakob Nielsen, Hoa Loranger. New Riders, 2006
Consejo
A menos que estés diseñando para usuarios de gama alta, tienes que asumir que
un porcentaje signiϔicativo de tu audiencia utiliza viejas máquinas con monitores
malos.
Fuente: Prioritizing Web Usability. Jakob Nielsen, Hoa Loranger. New Riders, 2006
Diseño fijo
En el diseño fijo, la anchura del contenido de la página y de los dife-
rentes componentes de la página se especifica con unidades de medida
absolutas, normalmente el píxel (px), aunque también se pueden usar
otras medidas como el punto (pt), el centímetro (cm) o la pulgada (in).
Este diseño permanece inalterable sea cual sea el dispositivo donde
se visualiza la página web: sean cuales sean las características del dis-
positivo, pantalla o navegador, siempre se visualiza el mismo tamaño
preestablecido por el diseñador de la página web. El usuario no puede
cambiar la anchura de la página, ya sea cambiando el tamaño de la
ventana del navegador o cambiando el tamaño del texto.
En el Listado 109 se muestra el código fuente de una página web con
diseño fijo. La página se compone de una cabecera, un menú lateral con
tres enlaces, el contenido principal y el pie de página. El código CSS se
ha incluido en la misma página con la etiqueta <style>, pero se podría
haber escrito en un fichero separado y enlazado con <link>. En el código
se han indicado las reglas de CSS que definen un diseño fijo:
• Se define una anchura del contenido principal de la página de
960px, que es adecuado para una resolución de pantalla de
1024px. Además, el contenido principal está centrado con mar-
gin: 0 auto;.
• La barra lateral que contiene la lista de enlaces tiene una anchura
de 80px.
• El contenido principal tiene una anchura de 960px – 80px = 880px.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Ejemplo de diseño fijo</title>
<style>
body {
background-color: #E0CC97;
color: #000000;
margin: 0;
padding: 0;
}
ul {
margin: 0;
padding: 0;
list-style-type: none;
}
h1, h2, p {
margin: 0;
padding: 10px;
}
#contenedor {
background-color: #E1B378;
width: 960px; /* Fijo */
margin: 0 auto; /* Centra horizontalmente este elemento */
padding: 5px;
}
#cabecera {
background-color: #4D8963;
color: #FFFFFF;
text-align: center;
}
#barralateral {
background-color: #ECB8C7;
float: left; /* Este elemento se sitúa a la izquierda, necesita una anchura */
width: 80px; /* Fijo */
}
#contenido {
background-color: #EC799A;
margin-left: 80px; /* Fijo */
}
#pie {
background-color: #69A583;
© Alfaomega - Altaria 459
HTML & CSS
color: #FFFFFF;
clear: both; /* Necesario para que ‘float: left’ no tenga más efecto */
}
</style>
</head>
<body>
<div id=”contenedor”>
<!-- Se podría haber utilizado <header> -->
<div id=”cabecera”>
<h1>Ejemplo de diseño fijo</h1>
</div>
<div id=”barralateral”>
<!-- Se podría haber utilizado <nav> -->
<ul>
<li><a href=””>Enlace a 1</a></li>
<li><a href=””>Enlace a 2</a></li>
<li><a href=””>Enlace a 3</a></li>
</ul>
</div>
<div id=”contenido”>
<!-- Se podría haber utilizado <main> -->
<h2>Contenido de la página</h2>
<p>Los distintos estilos de diseño de una página web son: fijo, líquido o fluido,
elástico e híbrido o mixto.
El diseño fijo establece un anchura fija, normalmente indicada en píxel.</p>
<p>El diseño líquido o fluido establece una anchura relativa de los componen-
tes de la página, mediante porcentajes respecto a la anchura de la ventana del
navegador.</p>
<p>El diseño elástico establece una anchura relativa de los componentes de la
página, mediante unidades relativas respecto al tamaño del texto (em o ex). </p>
</div>
<div id=”pie”>
<!-- Se podría haber utilizado <footer> -->
<h2>Pie de la página</h2>
</div>
</div>
</body>
</html>
Listado 109: Ejemplo de diseño fijo
Por otro lado, cuando esta página web se muestra con una resolución
de pantalla elevada, como por ejemplo 1920x1080 píxeles, en la página
queda mucho espacio vacío, ya que el contenido tiene una anchura fija
y no se extiende hasta ocupar todo el espacio disponible, tal como se
puede ver en la Figura 273.
Más información
https://youtu.be/ReSHLFPsCFA
Consejo
Utilice un diseño líquido para que la página principal se ajuste a diferentes
resoluciones de pantalla.
Fuente: 113 Design Guidelines for Homepage Usability, Jakob Nielsen
http://www.nngroup.com/articles/113-design-guidelines-homepage-usability/
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Ejemplo de diseño líquido</title>
<style>
body {
background-color: #E0CC97;
color: #000000;
margin: 0;
padding: 0;
}
ul {
margin: 0;
padding: 0;
list-style-type: none;
}
h1, h2, p {
margin: 0;
padding: 10px;
}
#contenedor {
background-color: #E1B378;
width: 75%; /* Líquido */
margin: 0 auto; /* Centra horizontalmente este elemento */
padding: 5px;
}
#cabecera {
background-color: #4D8963;
color: #FFFFFF;
text-align: center;
}
#barralateral {
background-color: #ECB8C7;
float: left; /* Este elemento se sitúa a la izquierda, necesita una anchura */
width: 10%; /* Líquido */
}
#contenido {
background-color: #EC799A;
margin-left: 10%; /* Líquido */
}
#pie {
background-color: #69A583;
color: #FFFFFF;
clear: both; /* Necesario para que ‘float: left’ no tenga más efecto */
}
</style>
</head>
<body>
<div id=”contenedor”>
<div id=”cabecera”>
<h1>Ejemplo de diseño líquido</h1>
</div>
<div id=”barralateral”>
<ul>
<li><a href=””>Enlace a 1</a></li>
<li><a href=””>Enlace a 2</a></li>
<li><a href=””>Enlace a 3</a></li>
</ul>
</div>
<div id=”contenido”>
<h2>Contenido de la página</h2>
<p>Los distintos estilos de diseño de una página web son: fijo, líquido o fluido,
elástico e híbrido o mixto.
El diseño fijo establece un anchura fija, normalmente indicada en píxel.</p>
<p>El diseño líquido o fluido establece una anchura relativa de los componen-
tes de la página, mediante porcentajes respecto a la anchura de la ventana del
navegador.</p>
<p>El diseño elástico establece una anchura relativa de los componentes de la
página, mediante unidades relativas respecto al tamaño del texto (em o ex). </p>
</div>
<div id=”pie”>
<h2>Pie de la página</h2>
</div>
</div>
</body>
</html>
Listado 110: Ejemplo de diseño líquido
En la Figura 276 se puede ver cómo se visualiza esta página con una
resolución de pantalla de 1920x1080. Como el contenido ocupa un 75%
del ancho disponible, es decir, 1440 píxeles, el ancho de la barra lateral
y del contenido principal es mayor que en los casos anteriores.
Más información
https://youtu.be/AjHZH-_VoZU
Diseño elástico
En el diseño elástico, la anchura de los componentes de la página se
especifica en unidades relativas respecto al tamaño del texto, por ejemplo
en unidades em o ex. El tamaño de la página aumenta o disminuye con-
forme el usuario cambia el tamaño del texto, pero permanece constante
al cambiar el tamaño de la ventana del navegador.
Por ejemplo, en el Listado 111 se muestra el código fuente de una
página web con diseño elástico. En el código se han indicado las reglas
de CSS que definen este tipo de diseño:
468 © Alfaomega - Altaria
Curso práctico avanzado
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Ejemplo de diseño elástico</title>
<style>
body {
background-color: #E0CC97;
color: #000000;
margin: 0;
padding: 0;
}
ul {
margin: 0;
padding: 0;
list-style-type: none;
}
h1, h2, p {
margin: 0;
padding: 10px;
}
#contenedor {
background-color: #E1B378;
width: 56em; /* Elástico */
margin: 0 auto; /* Centra horizontalmente este elemento */
padding: 5px;
}
#cabecera {
background-color: #4D8963;
color: #FFFFFF;
text-align: center;
}
#barralateral {
background-color: #ECB8C7;
float: left; /* Este elemento se sitúa a la izquierda, necesita una anchura */
width: 6em; /* Elástico */
}
#contenido {
background-color: #EC799A;
margin-left: 6em; /* Elástico */
}
#pie {
background-color: #69A583;
color: #FFFFFF;
clear: both; /* Necesario para que ‘float: left’ no tenga más efecto */
}
</style>
</head>
<body>
<div id=”contenedor”>
<div id=”cabecera”>
<h1>Ejemplo de diseño elástico</h1>
</div>
<div id=”barralateral”>
<ul>
<li><a href=””>Enlace a 1</a></li>
<li><a href=””>Enlace a 2</a></li>
<li><a href=””>Enlace a 3</a></li>
</ul>
</div>
<div id=”contenido”>
<h2>Contenido de la página</h2>
<p>Los distintos estilos de diseño de una página web son: fijo, líquido o
fluido, elástico e híbrido o mixto.
El diseño fijo establece un anchura fija, normalmente indicada en píxel.</p>
<p>El diseño líquido o fluido establece una anchura relativa de los compo-
nentes de la página, mediante porcentajes respecto a la anchura de la ventana
del navegador.</p>
Más información
https://youtu.be/25rtJU1EL7E
Diseño híbrido
El diseño híbrido, también llamado diseño mixto, es una mezcla de
varios de los diseños básicos (diseño fijo, diseño líquido y diseño elásti-
co). En cada uno de los componentes de la página se puede añadir una
técnica de diseño diferente. Por ejemplo, el diseño general de ésta puede
emplear el diseño líquido, pero una columna que contiene un menú de
navegación puede tener un diseño fijo.
<!DOCTYPE html>
<html lang=“es“>
<head>
<meta charset=”utf-8” />
<title>Ejemplo de diseño híbrido</title>
<style>
body {
background-color: #E0CC97;
color: #000000;
margin: 0;
padding: 0;
}
ul {
margin: 0;
padding: 0;
list-style-type: none;
}
h1, h2, p {
margin: 0;
padding: 10px;
}
#contenedor {
background-color: #E1B378;
width: 75%; /* Líquido */
margin: 0 auto; /* Centra horizontalmente este elemento */
padding: 5px;
}
#cabecera {
background-color: #4D8963;
color: #FFFFFF;
text-align: center;
}
#barralateral {
background-color: #ECB8C7;
float: left; /* Este elemento se sitúa a la izquierda, necesita una anchura */
width: 80px; /* Fijo */
}
#contenido {
background-color: #EC799A;
margin-left: 80px; /* Fijo */
}
#pie {
background-color: #69A583;
color: #FFFFFF;
clear: both; /* Necesario para que ‘float: left’ no tenga más efecto */
}
</style>
</head>
<body>
<div id=”contenedor”>
<div id=”cabecera”>
<h1>Ejemplo de diseño híbrido</h1>
</div>
<div id=”barralateral”>
<ul>
<li><a href=””>Enlace a 1</a></li>
<li><a href=””>Enlace a 2</a></li>
<li><a href=””>Enlace a 3</a></li>
</ul>
</div>
<div id=”contenido”>
<h2>Contenido de la página</h2>
<p>Los distintos estilos de diseño de una página web son: fijo, líquido o
fluido, elástico e híbrido o mixto.
El diseño fijo establece un anchura fija, normalmente indicada en píxel.</p>
<p>El diseño líquido o fluido establece una anchura relativa de los com-
ponentes de la página, mediante porcentajes respecto a la anchura de la
ventana del navegador.
</p>
<p>El diseño elástico establece una anchura relativa de los componentes de
la página, mediante unidades relativas respecto al tamaño del texto (em o ex).
</p>
</div>
<div id=”pie”>
<h2>Pie de la página</h2>
</div>
</div>
</body>
</html>
Listado 112: Ejemplo de diseño híbrido
https://dogramcode.com/programacion
Curso práctico avanzado
<!DOCTYPE html>
<html lang=”es”>
<head>
<meta charset=”utf-8” />
<title>Ejemplo de diseño adaptativo</title>
<style>
body {
background-color: #E0CC97;
color: #000000;
margin: 0;
padding: 0;
}
ul {
margin: 0;
padding: 0;
list-style-type: none;
}
h1, h2, p {
margin: 0;
padding: 10px;
}
#contenedor {
background-color: #E1B378;
width: 1024px; /* Fijo */
margin: 0 auto; /* Centra horizontalmente este elemento */
padding: 5px;
}
#cabecera {
background-color: #4D8963;
color: #FFFFFF;
text-align: center;
}
#barralateral {
background-color: #ECB8C7;
float: left; /* Este elemento se sitúa a la izquierda, necesita una anchura */
width: 120px; /* Fijo */
}
#contenido {
background-color: #EC799A;
margin-left: 120px; /* Fijo */
}
#pie {
background-color: #69A583;
color: #FFFFFF;
clear: both; /* Necesario para que ‘float: left’ no tenga más efecto */
}
#contenido {
margin-left: 80px;
}
}
#barralateral {
float: none;
width: auto;
}
#contenido {
margin-left: 0;
}
}
</style>
</head>
https://dogramcode.com/programacion
Curso práctico avanzado
<body>
<div id=”contenedor”>
<div id=”cabecera”>
<h1>Ejemplo de diseño adaptativo</h1>
</div>
<div id=”barralateral”>
<ul>
<li><a href=””>Enlace a 1</a></li>
<li><a href=””>Enlace a 2</a></li>
<li><a href=””>Enlace a 3</a></li>
</ul>
</div>
<div id=”contenido”>
<h2>Contenido de la página</h2>
<p>Los distintos estilos de diseño de una página web son: fijo, líquido o
fluido, elástico e híbrido o mixto.
El diseño fijo establece un anchura fija, normalmente indicada en píxel.</p>
<p>El diseño líquido o fluido establece una anchura relativa de los compo-
nentes de la página,
mediante porcentajes respecto a la anchura de la ventana del navegador.</p>
<p>El diseño elástico establece una anchura relativa de los componentes de
la página, mediante unidades relativas respecto al tamaño del texto (em o ex).
</p>
</div>
<div id=”pie”>
<h2>Pie de la página</h2>
</div>
</div>
</body>
</html>
Listado 113: Ejemplo de diseño adaptativo
https://dogramcode.com/programacion
Curso práctico avanzado
Más información
https://youtu.be/yWW8pzPFT1U
Separación de la presentación y la
maquetación
Aunque se puede tener toda la definición de una hoja de estilo junta
en un único fichero, es una buena práctica separar los detalles de la
presentación (colores, tipo de letra, etc.) de la maquetación (posición,
márgenes). De este modo, la hoja de estilo es más fácil de manejar y de
mantener, ya que las reglas se encuentran más fácilmente.
Por ejemplo, en el Listado 114 se presenta un fragmento de una página
web en la que se enlaza con dos hojas de estilo externas. En la hoja de
estilo presentation.css se definen las características que no varían con
la maquetación, como los colores del texto y del fondo y las característi-
© Alfaomega - Altaria 483
https://dogramcode.com/programacion
HTML & CSS
cas del texto (tipo de letra, tamaño del texto), mientras que en la hoja de
estilo layout.css se definen las características de la maquetación, como
la posición de los elementos y el margen que existe entre los elementos.
https://dogramcode.com/programacion