La cabecera está delimitada por el elemento head (que a su vez está contenido dentro del elemento html), en ella se describe información del documento (titulo, configuración, scripts y estilos)
Se coloca información del documento, que no se verá en la pantalla principal y puede ser:
Título del documento
Metadatos
Enlaces a otros archivos
Scripts
Estilos
Título del documento
El título debe ser breve y descriptivo de su contenido, pues será lo que vean los demás cuando añadan nuestra página a su agenda de direcciones (bookmark)
Esta etiqueta es obligatoria y que debe aparecer sólo una vez en nuestro documento
El navegador la visualizará en la barra de título de su ventana
En el ejemplo se ha introducido la palabra página acentuada y como todavía no se ha introducido el código de caracteres podría mostrar caracteres extraños, asegúrese introducir la etiqueta de caracteres especiales para evitarlo
Metadatos
Los metadatos son elementos introducidos con la etiqueta meta, el tipo de metadato se define mediante sus atributos, algunos de los más habituales son:
charset
indica la codificación en la cual está escrito el documento
Es importante que introduzcamos la codificación correcta para que el navegador visualice el documento correctamente
En este ejemplo se ha usado la codificación UTF-8 que es la estándar para internet
author
indica quien es el autor de la página, se especifica con los atributos name y content
keywords y description
Ambas hacen referencia al contenido de la página y suelen ser usadas por los motores de búsqueda para indexar las páginas web
Gracias a estos campos, que se especifican con los atributos name y content, los buscadores saben que términos de búsqueda describen mejor nuestra página web para mostrarsela al resto de usuarios
Enlaces a otros archivos
En la cabecera podemos indicar enlaces a otros archivos que queremos cargar junto con nuestra página web, para ello utilizamos la etiqueta link
Generalmente serán hojas de estilo CSS, archivos JavaScript, librerias adicionales en otros lenguajes o nuestros propios archivos
En el ejemplo se ha incluido la hoja de estilo CSS del tema twentyfourteen de wordpress, para ello se han usado los atributos:
rel
para indicar que tipo de documento es, en este caso una hoja de estilo
id
para asignarle un identificador único
type
para indicar el tipo de texto que el navegador recibirá, en este caso una hoja de estilo CSS
href
es la ruta relativa del documento o su ruta absoluta
En el ejemplo también se ha incluido una especificación para definir varios idiomas, los cuales utilizará el buscador para indexar usando correctamente el idioma en el que está escrita la página, para ello se han usado los atributos:
rel
para indicar que tipo de documento es, en este caso una referencia para multisitio en varios idiomas
hreflang
para asignarle un idioma, en este caso es para español en para ingles y x-default para el idioma por defecto para la página de inicio
href
es la ruta relativa del documento o su ruta absoluta, en este caso se le añade el parámetro lang, empezando por ? para indicar las siglas del idioma
Scripts
El elemento script permite incluir código ejecutable en nuestra página web
Por defecto, el navegador tomará JavaScript como el lenguaje por defecto a ejecutar, si no especificamos otro
En el ejemplo se ha tenido en cuenta el caso de que el navegador no pueda usar scripts, ya sea por ser antiguo o que el usuario lo haya bloqueado en su configuración
Para ello hemos usado el elemento noscript, que en este caso mostrará el texto en el navegador en vez de ejecutar el script
En el ejemplo se ha utilizado un fichero externo para incluir el código ejecutable, utilizando la ruta absoluta o relativa en el atributo src
En muchas páginas web no se realiza la inclusión de los scripts en el head, sino en el body
La razón para acelerar la carga del HTML, ya que al encontrar un fichero externo tiene que leerlo y ejecutarlo, deteniendo el proceso de carga del resto del HTML
Imaginemos que tenemos el servidor saturado por la carga de los scripts, el usuario no recibiría nada del HTML y por tanto no vería la página, sólo una página en blanco
Por esta razón, algunos desarrolladores incluyen los scripts al final del documento, al final del elemento body
Como normalmente los scripts se encargan de la interacción con el usario, no es demasiado grave que haya una pequeña demora para empezar a ver las animaciones, enviar formularios, etc
Es más fácil para los usuarios si pueden ver el contenido y luego pueden interactuar con él
Estilos
El elemento style permite definir propiedades de estilos que se aplicarán a lo largo del documento
Como se puede ver en el ejemplo, con este elemento generalmente se indica lo que se espera aplicar, aunque también podremos incrustarlos dentro del propio HTML
También es posible utilizar una hoja de estilo externa, en este caso hemos utilizado la CSS del tema twentyfourteen de wordpress, especificando la ruta relativa o absoluta del archivo, en el atributo href
El cuerpo de una página HTML incluye los contenidos de la propia página web y se define con el elemento body
Existen gran cantidad de etiquetas que podemos usar en el body, a modo de consulta podemos usar este listado completo
Vamos a agrupar algunas de su etiquetas por:
Estructura del documento
cabecera, sección, navegación
Estructura del texto
títulos, parrafos, …
Caracterización del texto
texto enfatizado, fragmentos de código, …
Estructura del documento
Normalmente toda página web tiene una cabecera de título, algún tipo de barra lateral de navegación, un contenido principal y quizás un pie de página
Para conseguir esta estructuración se puede utilizar el elemento div mediante divisiones
Una división no puede insertarse dentro de una etiqueta de nivel inferior, como las de estructuración y caracterización de texto, pero sí que puede insertarse dentro de otro elemento div
Gracias a las hojas de estilo y a los atributos genéricos id y class daremos formato a esas agrupaciones
La estructura de la web de ejemplo es bastante estándar y las divisiones que acabamos de ver se repiten constantemente
Por eso a partir de HTML5 se añadieron una serie de divisiones con significado para poder indicar más fácilmente como estructuramos la web
Elementos de estructura semántica
Estos elementos son análogos a las divisiones, pero además llevan asociado un significado relacionado con la estructura
En el ejemplo podemos ver que hemos podido sustituir algunas divisiones por una etiqueta equivalente
Algunas de las etiquetas de estructuración semántica más importantes son:
header
representa la cabecera de un documento o sección
Debe usarse para contener información introductoria
Puede haber más de uno en el documento
footer
representa el cierre de un documento o sección
Suele contener información sobre el autor, copyright, términos de uso, información de contacto, etc
nav
representa la sección que contiene los enlaces de navegación por el sitio web
section
define una sección del documento
article
representa un contenido independiente y autocontenido
Por ejemplo los post de un blog, noticias, comentarios, etc
aside
define contenido que se encuentra fuera de lugar en el que está contenido
Como por ejemplo una barra lateral
Suele estar relacionado con el elemento que contiene
figure
define un elemento independiente como una imagen, un fragmento de código, un diagrama, etc
Suele estar relacionado con el elemento que contiene, pero su posición es independiente del mismo
figcaption
es el título o leyendo de un elemento figure
Se suele poner como primer o último elemento del mismo
details
representa una serie de detalles adicionales que el usuario puede ocultar
Elementos de estructuración del texto
Las etiquetas de estructuración del texto sirven para definir los encabezados de las secciones y los parrafos
Entre las etiquetas de bloque destacamos las siguientes:
p
contiene el texto de un párrafo
El navegador no muestra los espacios en blanco ni los saltos de línea adicionales que escribamos dentro del párrafo
hN
define los encabezados de las secciones (hay 6 niveles, dónde N es de 1 a 6)
Pueden configurarse cómo se visualizan los encabezados a través de CSS
Normalmente se utiliza una fuente mayor cuanto más alto sea el nivel, siendo h1 el de mayor nivel
Cambiando el número se pueden conseguir distintos efectos visuales al cambiar el tamaño de la letra
Estos elementos se usan para estructurar el documento en secciones, subsecciones, etc
pre
contiene un párrafo con texto preformateado, es decir, que aparecerá como si hubiera sido escrito con una máquina de escribir, con una fuente de espaciado fijo (Courier)
Tiene en cuenta los espacios en blanco y los saltos de línea adicionales
Puede ser útil para escribir párrafos con ejemplos de código fuente
En el ejemplo hemos simulado una tabla, aunque para esa tarea es aconsejable usar mejor la etiqueta para tablas
Se pueden simular otros tipos de elementos, ya que el texto se tomará de forma literal, pero es recomendable usar sus etiquetas específicas, siempre que estas existan
Con lo que obtendremos:
Texto
Texto con tabulación
Simulación de tabla
columna1 columna2 columna3 columna4
fila11 fila12 fila13 fila14
fila21 fila22 fila23 fila24
blockquote
se usa para incluir citas, que pueden contener varios párrafos u otros elementos
Genera márgenes a izquierda y derecha, aunque se recomienda definir el formato deseado mediante una hoja de estilo
En el ejemplo se ha utilizado el atributo cite para indicar el origen de la cita, en este caso la novela de Don Quijote de la Mancha, ya que hemos citado un párrafo del principio de la novela
Con lo que obtendremos:
En un lugar de la mancha de cuyo nombre no quiero acordarme…
tt
conseguimos que el texto tenga un tamaño menor y la apariencia de los caracteres de una máquina de escribir (typewriter)
No preformatea el texto, sino que únicamente cambia su apariencia
En el ejemplo se ha escrito un párrafo y le hemos dado el aspecto de los caracteres de una máquina de escribir
Con lo que obtendremos: A veces... veo muertos
Elementos de caracterización del texto
Se utilizan generalmente dentro de los párrafos
Sirven para definir el formato del texto, aunque gracias a las hojas de estilo, cada vez se utilizan menos
Se mantienen por compatibilidad con versiones antiguas de HTML, entre las más importantes destacamos:
br
añade un salto de línea sin cambiar de párrafo
No tiene etiqueta de cierre
En el ejemplo se ha escrito un párrafo y dentro del mismo hemos usado el salto de línea
Con lo que obtendremos:
A veces… veo muertos
nbsp
no es una etiqueta, sino más bien una forma de añadir espacios en blanco adicionales para que el navegador los reconozca
Si queremos forzarle a que lo haga, debemos poner el código nbsp (non-breaking space)
En el ejemplo se ha escrito un párrafo y dentro del mismo hemos añadido un espacio en blanco, pero hemos forzado la aparición de otro adicional
Con lo que obtendremos:
A veces… veo muertos
center
permite centrar un elemento, ya sea un párrafo, un texto, una imagen, etc
Algunos navegadores más antiguos no lo soportaban, aunque actualmente se usa poco ya que muchos elementos incluyen un atributo similar que lo sustituye
Otra causa de su desuso es porque es posible simularlo mediante hojas de estilo
En el ejemplo se ha escrito un párrafo y hemos forzado su centrado
Con lo que obtendremos:
A veces… veo muertos
hr
se obtiene una raya horizontal tan ancha como la pantalla, y con la apariencia de estar embutida sobre el fondo
No tiene etiqueta de cierre
En el ejemplo se ha escrito un párrafo y hemos añadido una raya horizontal para separarlo para simular que hay dos párrafos
Con lo que obtendremos:
A veces… veo muertos
En un lugar de la mancha de cuyo nombre no quiero acordarme…
sup
sirve para obtener una fórmula matemática que incluya un índice
En el ejemplo se ha escrito un texto con una fórmula matemática en la cual le hemos asignado el índice 2
Con lo que obtendremos:
m2
sub
sirve para obtener una fórmula matemática que incluya un subíndice
En el ejemplo se ha escrito un texto con una fórmula matemática en la cual le hemos asignado el subíndice 2
Con lo que obtendremos:
m2
italic
pone el texto en cursiva
Se puede usar su forma corta i, ya que es equivalente
En el ejemplo se ha escrito un texto en cursiva
Con lo que obtendremos: A veces… veo muertos
em
indica que se va a enfacitar el texto, normalmente se pone el texto en cursiva, aunque si usamos una hoja de estilo podemos elegir de qué forma será enfacitado
En el ejemplo se ha escrito un texto enfacitado
Con lo que obtendremos: A veces… veo muertos
bold
pone el texto en negrita
Se puede usar su forma corta b, ya que es equivalente
En el ejemplo se ha escrito un texto en negrita
Con lo que obtendremos: A veces… veo muertos
strong
indica que se va a enfacitar más el texto, normalmente se pone el texto en negrita, aunque si usamos una hoja de estilo podemos elegir de qué forma será enfacitado
En el ejemplo se ha escrito un texto con mayor énfasis
Con lo que obtendremos: A veces… veo muertos
code
incrusta código en medio de un párrafo de manera similar a pre, pero sin crear margenes a izquierda y derecha
En el ejemplo se ha escrito un párrafo con el carácter especial de espacio en blanco, pero al incrustarlo como código, en la página se visualizará de forma literal
A menudo nos interesará presentar las cosas en forma de listas, ya que permiten hacer enumeraciones de elementos, usando una numeración o no, también crear definiciones de términos
Podemos escoger entre tres tipos distintos:
Listas numeradas
sirven para crear una lista con números
Listas con viñetas
sirven para crear una lista con símbolos o viñetas, no están numeradas
Listas de definiciones
sirven para crear definiciones de términos, no están numeradas y pueden usarse para simular diccionarios
Listas numeradas
Las listas numeradas (ordered lists) sirven para presentar cosas en un orden determinado
En la lista resultante aparecerá automáticamente un número correlativo para cada elemento:
En el ejemplo se puede ver que la lista ordenada empieza con el elemento ol incluidos en su interior la lista de elementos li
Se ha usado el atributo type para especificar qué tipo de numeración queremos usar:
1
utiliza valores numéricos
a
utiliza letras en minúscula
A
utiliza letras en mayúscula
i
utiliza números romanos en minúscula
I
utiliza números romanos en mayúscula
Si no se especifica, el valor por defecto es 1
Se ha usado el atributo start para especificar a partir de qué número empieza la numeración, en este caso empieza a partir del número 3
Se ha usado el atributo value para especificar un valor concreto para ese elemento, en este caso el número 8
En el ejemplo también podemos observar que listas con numeradas pueden anidarse
Quedando como resultado:
Mamíferos
Peces
Sardina
Bacalao
Aves
Listas con viñetas
Las listas con viñetas (unordered lists) sirven para presentar cosas que, por no tener un orden determinado, no necesitan ir precedidas por un número
En la lista resultante aparecerá automáticamente el símbolo o viñeta elegidos con el atributo:
En el ejemplo se puede ver que la lista ordenada empieza con el elemento ul incluidos en su interior la lista de elementos li
Se ha usado el atributo type para especificar qué tipo de viñeta queremos usar:
circle
utiliza un círculo
disc
utiliza un círculo con el interior hueco
square
utiliza un cuadrado
Si no se especifica, el valor por defecto es circle
En el ejemplo también podemos observar que listas con viñetas pueden anidarse y además se han usado distintos tipos de viñetas para distinguir entre ellas
Quedando como resultado:
Mamíferos
Peces
Sardina
Bacalao
Aves
Listas de definiciones
Las listas de definición son apropiadas para glosarios (o definiciones de términos)
Gracias a este tipo de lista, pueden construirse sencillos diccionarios
En el ejemplo se puede ver que la lista de definiciones que empieza con el elemento dl incluidos en su interior la lista de elementos dt que representan la cosa a definir y los elementos dd que representan la definición de la cosa a definir
En el ejemplo no se ha incluido, pero también podemos anidar listas de definiciones
Quedando como resultado:
Sardina
Pez osteíctio del orden clupeiformes (Sardina pilchardus) del Mediterráneo y del océano Atlántico
De unos 25 cm. de longitud, verde azulado en el dorso, plateado en los flancos y en el vientre
Se consume fresco o en conserva
Bacalao
Pez marino osteíctio del orden gadiformes (Gadius callarias) que alcanza más de un metro de longitud
Los enlaces, hipervínculos o hiperenlaces permiten al usuario explorar de manera no secuencial, otras páginas web externas repartidas por todo el mundo por medio de enlaces hipertexto o partes de la misma web
Para ello utilizamos el elemento a que es un ancla (anchor)
En ejemplo se ha enlazado con la página inicial de esta web dónde el atributo href es el destino del enlace (es aconsejable usar las comillas (simples o dobles) para que el navegador entienda que es de tipo texto) y el texto dentro del elemento es el texto indicativo que aparecerá en la pantalla del enlace (con un color especial y generalmente subrayado)
Si queremos enlazar con nuestra página u una página que esté fuera de la nuestra (es decir, que esté en un servidor distinto del que la tenemos alojada)
Es necesario conocer su dirección completa, o URL (Uniform Resource Locator)
El URL podría ser, además de la dirección de una página de Internet, una dirección de ftp, gopher u otro servicio de internet
El destino del enlace será en estos casos la página inicial o por defecto de esa página web, que normalmente será por defecto index.html, index.htm, index.php o index.asp, dependerá del lenguaje utilizado al escribir la página web
Por esa razón podremos omitir esa página de inicio y depende cómo esté configurado el servidor obtendremos la respuesta deseada o un error de tipo 404 de dirección incorrecta
En el ejemplo se ha enlazado con la página inicial de Microsoft mediante el URL de web segura HTTPS y se ha usado el atributo target con el valor _blank para indicarle al navegador que nos abra una nueva ventana con la página enlazada, así podremos ver ambas páginas sin perder el contenido que estábamos visualizando previamente
Es muy importante copiar estas direcciones correctamente (respetando las mayúsculas y minúsculas, pues los servidores son capaces de distinguirlas y pueden no reconocer la dirección que hemos escrito, devolviendonos el ya citado error 404 de dirección incorrecta)
También se ha utilizado el atributo rel con los valores noopener y noreferrer para que no sea guardada en la caché del navegador
Puede ser que tengamos una sola página. Pero lo más frecuente es que tengamos varias páginas, una inicial (o principal) y otras conectadas a ella, entre ellas mismas o con otras externas que a su vez están conectadas consigo mismas y con otras externas
Dentro de la misma página
A veces, en el caso de páginas muy extensas, nos puede interesar dar un salto desde una posición a otra determinada
El destino del enlace, en este caso el sitio dentro de la página a donde queremos saltar, se sustituye por una marca (la palabra marca puede ser cualquier palabra que queramos, pero precedida del símbolo #)
Esta palabra (o palabras, ya que podemos utilizar más de una separadas con _) aparecerán en pantalla coloreada (en forma de hipertexto y si usamos una hoja de estilo CSS puede ser modificada según nuestras necesidades)
En el ejemplo se ha creado un enlace al final de esta misma página, al cuál podremos saltar hasta la etiqueta que hemos llamado final si pulsamos en el enlace
Para que funcione correctamente, también debe existir el enlace final, sino el navegador ignorará el enlace porque no sabrá a donde saltar
En el ejemplo tenemos el enlace que deberemos incluir, en la posición que queremos que se salte, para ello se ha utilizado el atributo name, con el valor elegido pero sin usar el símbolo #
También podemos ir a otra página de nuestra web alojada a nuestro servidor
En el ejemplo se ha enlazado con la página dentro de esta web que habla de la listas, hemos incluido en el atributo href la dirección relativa y unos parámetros, que van precedidos del símbolo ? y tienen el formato de variable=’valor’ y si tenemos más de uno, se separan con el símbolo &
En los ejemplos anteriores estábamos suponiendo que la página en la que escribimos la etiqueta y la página a la que queremos saltar estaban en el mismo directorio
Ya que pudiera ocurrir que hemos organizado el sitio Web con un directorio principal y subdirectorios auxiliares que cuelgan del mismo
Si la página a la que quiero saltar está en el subdirectorio subdir, entonces en el atributo href deberíamos haber escrito /subdir/pagina.html, indicando la ruta completa desde el directorio raíz hasta la página pagina.html
Y a la inversa, si queremos saltar desde una página a otra que está en un directorio anterior, en el atributo href deberíamos haber escrito ../pagina.html
En este caso, los dos puntos indican al navegador que se dirija al directorio anterior
Se debe utilizar el símbolo / para indicar los subdirectorios si se está trabajando con un servidor Unix, y el símbolo \, si se está trabajando con un servidor Windows, ya que el sistema de directorios se trata de distinta forma
Si queremos evitarnos las complicaciones derivadas de tener tanto subdirectorio, podemos guardarlo todo en el directorio raíz o en un único directorio
Sin embargo, esta práctica tiene el inconveniente de que todo esté más desordenado y si en un futuro queremos realizar modificaciones sea más complicado de encontrar los contenidos, que si lo hubiéramos ordenado por subdirectorios específicos con un nombre que sea descriptivo sobre su contenido
Fuera de nuestra web
Se aplica lo explicado anteriormente para las direcciones absolutas y dentro de nuestra web, pero esta vez los enlaces no estarán alojados en nuestro servidor, sino en uno externo
Correo electrónico
Si queremos que nuestros usuarios se pongan en contacto con nosotros podemos incluir nuestra dirección de correo electrónico en un enlace
En el ejemplo se ha incluido dentro del atributo href la palabra reservada mailto seguida de dos punto junto con la dirección de correo electrónico del administrador de esta web
También se ha repetido la misma dentro de la etiqueta para que el usuario sepa que el enlace pertenece a un correo electrónico, de este modo reconocerlo fácilmente, aunque podría haberse usado un mensaje descriptivo o la imagen de un buzón (una metáfora que el usuario podría relacionar con el correo), por ejemplo
Al pinchar el enlace veremos que el navegador intentará abrir el programa que tenga asociado para la gestión del correo, con la dirección del destinatario ya rellenada, que es la que aparecía en el enlace
También podemos añadir otros valores que serán usados por el gestor de correo utilizando palabras reservadas que van precedidas del símbolo ? y tienen el formato de variable=’valor’ y si tenemos más de uno, se separan con el símbolo &
Entre las más destacadas tenemos:
subject
es el usuario destinatario del correo, por defecto será Feedback
cc
simula una copia en carboncillo (Carbon Copy) se utiliza en caso de haber más de un destinatario, deberíamos indicarlos aquí separándolos con el símbolo ;
Los destinatarios serán capaces de ver quienes son el resto de destinatarios
bcc es similar a la copia en carboncillo (Carbon Copy)
En este caso la copia está oculta y los destinatarios no serán capaces de ver quienes son el resto de destinatarios
body
es el texto del correo en sí, el gestor de correo podría ignorarlo o añadirle algo, como un mensaje de despedida o una firma, así que no siempre será igual al que nosotros hayamos escrito en el enlace
Esta es la marca de final (no contiene un enlace real ya que es una referencia de enlace, pero como tiene texto, aparecerá subrayado como si lo fuera) para el ejemplo anterior del sistema de marcas explicado anteriormente
Las imágenes de una página web son conocidas como mapas de bits y pueden representar iconos, botones, imágenes con zonas transparentes o fotografías
Dependiendo del nivel de compresión utilizado perderemos calidad, por eso debemos saber elegir el formato más adecuado a nuestras necesidades:
png
es un formato de compresión sin pérdida que además soporta transparencias
Podemos representar iconos o imágenes con zonas transparentes por lo que es una buena alternativa para cualquier tipo de imagen que no sea una fotografía
jpg o jpeg
es un formato de compresión con pérdida que no soporta transparencias
Se usa normalmente para fotografías
gif
es un formato de compresión sin pérdida, pero está limitado a 256 colores
Ocupa muy poco espacio y es idóneo para imágenes con poca calidad, como por ejemplo los iconos o botones
Soporta transparencias y animaciones
Al igual que ocurre con la edición del HTML, necesitamos de un editor de imágenes para su manipulación
Existen editores comerciales y muy potentes como Photoshop, pero tambien podemos utilizar editores con una calidad similiar y de código libre como GIMP
Tambien tenemos la posibilidad de usar alguna herramienta que permita convertir entre los distintos formatos, como ImageMagick
El elemento para incluir imágenes en nuestra página web es img al cuál deberemos incluirle al menos el atributo src al que le indicaremos al navegador, mediante la ruta relativa o absoluta, el nombre de la imagen y mediante su extensión, el formato de la misma
En el ejemplo podemos ver que además del atributo src hemos utilizado width que nos permite especificar el ancho de la imagen
El atributo height que permite especificar la altura de la imagen
Y el atributo alt que introduce una descripción (una palabra o una frase breve) sobre la imagen
En principio se puede omitir, pero es beneficioso para aquellos que accedan a la página con un navegador en forma de sólo texto, ya que no serán capaces de ver la imagen, pero al menos podrán hacerse una idea sobre ella gracias a esa descripción
Quedando como resultado:
Se pueden capturar las imágenes que nos muestra el navegador, con objeto de guardarlas permanentemente en nuestro disco duro
Desde el navegador, pulsamos sobre la imagen con la tecla derecha del ratón, nos aparecerá un menú en el que está la posibilidad de guardar la imagen en el directorio del disco duro que le indiquemos
En caso de que no nos interese que los usuarios puedan guardar las imágenes de nuestra web deberemos utilizar alguna técnica para evitar la pulsación de la tecla derecha del ratón mediante Javascript
Imagen usada como enlace
En algunos casos, también se utiliza una imagen como enlace a otra página
Con respecto a la localización del fichero de la imagen, se usa igual que como un enlace. Si no se indica nada especial, quiere decir que el fichero está en el mismo directorio que el documento HTML que estamos escribiendo
Se puede cargar una imagen que no esté en nuestro sistema siguiendo el mismo método que con los enlaces, se indica en la etiqueta el URL completo de la imagen. Aunque esto no es muy aconsejable, pues alargaría innecesariamente el tiempo de carga de nuestra página
Un aspecto muy importante a tener en cuenta es el tamaño de las imágenes, pues una imagen grande supone un fichero grande, y esto puede ocasionar un tiempo excesivo de carga, con el consiguiente riesgo de que quien esté intentando cargar nuestra página se canse de esperar, y desista de ello
En el ejemplo se ha usado un thumbnail (reproducción en miniatura de la imagen), que hace de enlace a la imagen en su verdadero tamaño
De esta manera no recargamos demasiado una página, y el usuario será quien decida qué imágenes desea cargar
Otra manera de conseguirlo es reducirla con un editor de imágenes a 150×75, guardarla con otro nombre, y luego hacer que la pequeña sea el enlace de la grande
Esta sería una solución si utilizamos una versión muy antigua de Netscape, ya que no reconocía los atributos width y height
Quedando como resultado:
En el ejemplo se ha usado la imagen para redirigirnos a la página de inicio, así podemos enlazar la imagen con la página deseada
También podemos usar iconos, botones o animaciones para realizar esta tarea
En el ejemplo también hemos usado el atributo border con el valor 0 porque sinó la imagen estará rodeada de un rectángulo del color normal de los enlaces, de esta manera, evitamos que aparezca ese rectángulo
Quedando como resultado:
Posicionando el cursor sobre esta imagen, comprobamos que actúa también como enlace aunque carezca del rectángulo de color. Esto puede resultar más estético, aunque se corre el riesgo de que el usuario no se dé cuenta de que la imagen sirve de enlace
Posición del texto con respecto a la imagen
Para elegir la posición de la imagen con respecto al texto hay distintas posibilidades
La más sencilla es colocarla entre dos párrafos, con el texto a un lado
Utilizando hojas de estilo CSS se pueden conseguir efectos más elaborados, como animaciones, movimiento, rotaciones, etc
Para escoger la posición del texto con respecto a la imagen se utilizaba el atributo align y permitía las siguientes posibilidades:
top
el texto aparece alineado arriba
middle
el texto aparece alineado en medio
bottom
el texto aparece alineado abajo
Este atributo ya no es soportado en HTML5 y se ha incluido el ejemplo por compatibilidad con versiones anteriores, es recomendable utilizar una hoja de estilo para obtener este efecto o utilizando el elemento div
En el ejemplo se ha optado por usar el elemento div
Los elementos multimedia que ofrece HTML5 permiten añadir audio y vídeo a una web, e incluso acceder a la cámara del PC o de dispositivos móviles para grabar vídeos o hacer fotografías
Durante muchos años estos elementos fueron demandados por los desarrolladores, ya que únicamente era posible reproducir elementos multimedia mediante plugins o addons que debían estar previamente instalados en el navegador
A partir del estándar HTML5 fueron incluidos los elementos:
video
incrusta un vídeo en la página web
audio
incrusta un clip de audio en la página web
La única restricción es que sólo podemos referenciar un archivo (para lo que usaremos su atributo src)
Pero permite incluir más de un formato de codificación (para lo que usaremos elementos source)
La inclusión de los elementos source es debido a las incompatibilidades entre los formatos de codificación de audio o vídeo admitidos por cada navegador, ya que debido a las distintas licencias, todavía no hay un estándar claro para internet
Actualmente, los formatos de audio más compatibles con los navegadores son:
WAV
también conocido como WAVE es un formato de audio digital sin compresión de datos
Fue desarrollado por Microsoft e IBM
OGG
es el contenedor utilizado por los codecs digitales con pérdida:
Opus
es un formato de código abierto
Está estandarizado por el Internet Engineering Task Force (IETF)
Vorbis
es un formato de código abierto
Fue desarrollado por Xiph.org
MP3
formato de compresión de audio digital
Fue desarrollado por Moving Picture Experts Group (MPEG)
AAC
también conocido como Advanced Audio Coding es un codec digital con perdida
Sigue el estándar internacional ISO/IEC 13818-7 como una extensión del MPEG-2
Es muy utilizado en dispositivos Apple
Mientras que para vídeo:
MP4
archivos con el formato MPEG 4 con el codec de vídeo H264 y el codec de audio AAC
WebM
archivos con el formato WebM con el codec de vídeo VP8 y el codec de audio Vorbis
Ogg
archivos con el formato Ogg con el codec de vídeo Theora y el codec de audio Vorbis
Audio
En el ejemplo se ha referenciado la canción del grupo Amaral, Hacia lo salvaje, para ello se han utilizado cuatro elementos source
Se le ha indicado al navegador mediante el atributo src dónde puede localizar el archivo y su extensión y con el atributo type se le ha indicado qué tipo de archivo debe reproducir
En el ejemplo sólo se ha referenciado los tipos WAV, OGG, MP3 y AAC, pero podrían referenciarse varios archivos del mismo tipo pero con distintas calidades de audio
Dentro del elemento audio se ha incluido también un texto que será usado por defecto en el caso de que nuestro navegador no soporte ninguno de los tipos de audio indicados en los elementos source
En el ejemplo se ha utilizado el atributo controls, que es un atributo genérico que comparte con video
Entre los atributos más destacados para los elementos audio y vídeo tenemos:
autoplay
la reproducción comienza en el mismo momento de la carga de la página
controls
se añaden los controles de reproducción para que el usuario pueda controlarla
loop
el archivo se reproduce de forma continua, es decir, cuando acaba la reproducción, se inicia de nuevo desde el principio
Vídeo
El ejemplo para el elemento video es muy similar al visto anteriormente para el elemento audio con la excepción de que se ha incluido un elemento object
Este elemento permite que navegadores que no soportan HTML5 puedan reproducir un archivo mediante el plugin de flash
Esta opción puede ser útil con navegadores antiguos que aún usen versiones anteriores de HTML
Aunque Google ha decidido eliminar el soporte para flash en su navegador Chrome, para fomentar el uso las nuevas capacidades para vídeo de HTML5
En Chrome sólo se puede usar flash bajo demanda, indicándolo explícitamente en su configuración y para las páginas web que el usuario de permiso
Las tablas permiten representar información tabular, en filas y columnas, con cabeceras. Cada elemento de la tabla puede ser simple, o una agrupación de filas, columnas, cabeceras y pies de tabla, subdivisiones, cabeceras múltiples y otros elementos complejos
Como las tablas permiten un control muy detallado, a veces se usan para organizar la estructura general de una página web
Esta práctica no es recomendable, aunque era muy usada en el diseño hace algunos unos años
Es más recomendable utilizar elementos div para la estructura general de la página web
Una tabla se define mediante el elemento table
Las filas se definen con el elemento tr (table row)
Por cada fila se define una celda de elementos td (table data) para contener otros elementos, incluidas otras tablas (aunque no se recomienda, ya que puede obtenerse un resultado visualmente confuso)
En el ejemplo se han listado los números naturales del 1 al 9, rellenado con la primera fila una descripción y las siguientes con los datos
Quedando como resultado:
Número
Ordinal
1
Primero
2
Segundo
3
Tercero
4
Cuarto
5
Quinto
6
Sexto
7
Séptimo
8
Octavo
9
Noveno
Spanning
En ocasiones necesitaremos combinar celdas, a esta práctica se la denomina spanning
Para agrupar o combinar celdas de una fila concreta (se aplican a elementos td), usaremos el atributo colspan asignandole como valor el número de celdas que serán usadas
En el ejemplo se han listado tres lenguajes y para resaltar la descripción se ha aplicado spanning sobre la primera fila
Quedando como resultado:
Lenguajes
HTML5
CSS
JavaScript
Para agrupar o combinar filas de una columna concreta (se aplican a elementos tr), usaremos el atributo rowspan asignandole como valor el número de filas que serán usadas
En el ejemplo se han listado tres lenguajes y para resaltar la descripción se ha aplicado spanning sobre la primera columna, obteniendo una tabla similar a la del ejemplo anterior pero con los valores colocados en la segunda columna
Quedando como resultado:
Lenguajes
HTML5
CSS
JavaScript
Elementos de una tabla
Para añadir complejidad a la tabla podemos añadir más elementos a la misma:
caption
es el título o leyenda de la tabla
Se muestra fuera de la tabla, por defecto arriba de la misma
Se suele poner normalmente después del elemento table
thead
sirve como cabecera de la tabla
th
son unas celdas especiales que se usan sólo dentro de la cabecera de la tabla
tbody
se suele usar después del elemento thead para distinguir la cabecera del cuerpo de la tabla
tfoot
sirve como pie de la tabla
Curiosamente, debe definirse antes de definir un elemento tbody
En el ejemplo se han aplicado todos los elementos que acabamos de definir, como puede apreciarse no hay mucha diferencia con la primera tabla que hemos puesto de ejemplo
Sin embargo, ahora todas sus partes están mejor localizadas y usando hojas de estilo CSS podemos darle un aspecto más atractivo para el usuario
En el ejemplo sólo se ha un valor más a la tabla que originalmente no existía
Gracias al elemento tfoot ahora tenemos la posibilidad de usando JavaScript, añadirle el resultado de cálculos o totales de los valores del resto de celdas
También podemos observar que las celdas dentro del elemento thead aparecen con un tamaño de fuente mayor y en negrita, porque son parte de la cabecera
Al igual que al inicio, gracias al elemento caption, tenemos una breve descripción de nuestra tabla
Un formulario es necesario en cualquier página web, pues permiten al usuario enviar datos al servidor
El ejemplo más común es el formulario de registro o login
Los formularios utilizan el elemento form
Dentro de este elemento estarán los controles que componen el formulario y será de esos controles de los que se extraerá la información que recibirá el servidor
A la hora de definir un formulario debemos indicar la URL la cuál recibirá los datos y qué tipo de método HTTP queremos utilizar
Disponemos de los siguientes atributos:
id
es un identificador único, es muy útil para reconocer el elemento desde JavaScript o para procesarlo desde el servidor
name
este será el nombre del dato que será enviado con la petición HTTP, podrá ser accedido desde JavaScript o desde la URL que se indicó en el atributo action para recibir los datos en el servidor
action
normalmente contiene la URL de la aplicación que recibirá la respuesta en el servidor
Por ejemplo un script en PHP, aunque también podría ser un archivo de código JavaScript
method
tipo de método HTTP para enviar los datos al servidor
Puede ser:
GET
envía la información al servidor como parámetros dentro de la URL indicada en el atributo action
Estos parámetros serán visibles en la barra de navegación y sólo es posible enviar hasta 500 bytes
Por seguridad, se desaconseja utilizar este método, ya que los datos enviados quedan expuestos en la barra de navegación y alguien ajeno al usuario, podría manipularlos antes de ser procesados por el servidor
POST
envía la información al servidor en la misma petición HTTP
No tiene la limitación de tamaño en los datos enviados
Permite enviar archivos adjuntos y los datos enviados no son visibles en la barra del navegador
Se recomienda utilizar este método por seguridad, ya que dificulta la de los datos manipulación antes de ser procesados por el servidor, aunque sigue siendo posible
Elementos input
El elemento input sirve para crear la gran mayoría de los controles que pueden usarse en un formulario
Dependiendo de sus atributos podremos crear botones, casillas de verificación e incluso adjuntar archivos
La gran mayoría de estos controles son nuevos gracias al estándar HTML5 como el control de fechas, colores, etc; y funcionan a través de cuadros de diálogo específicos para cada navegador
A causa de esta circunstancia, es posible que difieran de un navegador a otro o incluso que no sean soportados si el mismo es muy antiguo o no soporta HTML5
Dispone de atributos generales que todos los elementos input poseen y atributos específicos para cada tipo de elemento
Atributos generales:
id
es un identificador único, es muy útil para reconocer el elemento desde JavaScript o para procesarlo desde el servidor
name
este será el nombre del dato que será enviado con la petición HTTP, podrá ser accedido desde JavaScript o desde la URL que se indicó en el atributo action para recibir los datos en el servidor
type
es el tipo específico de control, este atributo le dice al navegador qué debe pintar en pantalla y qué atributos adicionales podría contener
Así que es importante que si tiene atributos específicos para ese tipo, los elijamos correctamente o el navegador los ignorará al no entenderlos
form
identificador del formulario, enlaza el control con el formulario mediante el valor de su atributo id
Atributos específicos:
checked
indica que el control ha sido seleccionado
Se utiliza sólo con las casillas de selección y las casillas de opción
autocomplete
indica al navegador que complete el campo con los datos introducidos por el usuario anteriormente
No puede utilizarse ni con las casillas de selección, ni con las casillas de opción, ni con los botones
list
sirve para definir una lista de valores por defecto que se mostraran al usuario como posibles entradas al usuario
No puede utilizarse ni con las casillas de selección, ni con las casillas de opción, ni con los botones
Se utiliza asociando el identificador del control a un elemento datalist en el cuál enumeraremos los elementos que componen la lista
Estos valores son de sólo lectura, el usuario no puede modificarlos ni añadir nuevos
El elemento datalist no tiene asociada ninguna visualización, sin embargo puede asociarse mediante su id un elemento label con el que podremos visualizar el valor elegido de la lista
maxlenght
indica la longitud máxima que podemos utilizar en el texto introducido
Se utiliza con los controles de cuadro de texto o aquellos similares a él (text, password, email, url, tel, search, etc)
placeholder
permite añadir un texto por defecto para dar una idea al usuario del tipo de control que es o de qué se espera que introduzca en el mismo
Cuando se utiliza, no suele usarse el elemento label
pattern
indica una expresión regular que será utilizada por el navegador para validar el valor introducido en el campo
En caso de que el valor introducido no se ajuste a la expresión regular, mostrará un mensaje de error al usuario indicandolo
Se utiliza con los controles de cuadro de texto o aquellos similares a él (text, password, email, url, tel, search, etc)
multiple
se utiliza con los tipos email y file
Permite incluir más de una dirección de correo electrónico o adjuntar más de un archivo
readonly
impide que el campo sea modificado por el usuario
El navegador lo mostrará ensombrecido para indicar al usuario que no puede ser modificado
El valor del campo se recogerá obligatoriamente del atributo value, por lo que es necesario que tenga algún valor
required
indica al navegador que el campo es obligatorio que tenga algún valor
Es muy útil para realizar validaciones porque en caso de que el campo no haya sido rellenado, mostrará un mensaje de error al usuario
Cuadros de texto
Para crear un cuadro de texto al atributo type le asignaremos el valor text
Dispone del atributo específico value en el cuál se guardará el valor por defecto que será mostrado al usuario
No tiene etiqueta de cierre
En el ejemplo se ha especificado un esqueleto de formulario sin atributos, ya que no necesitamos que sea funcional para mostrar los distintos controles. Lo vamos a hacer con todos los ejemplos a partir de ahora
También se ha incluido un control de cuadro de texto con el atributo value con el valor por defecto Escribe algo aquí
Es una buena practica rellenar este valor para que el usuario tenga una ayuda visual de qué se espera que rellene en el control
Quedando como resultado:
También podemos utilizar el elemento datalist para mostrar al usuario una lista de valores por defecto como posibles entradas al control de texto
En el ejemplo se ha especificado una lista de colores que mediante el atributo list cuyo valor es el atributo id del datalist
Además podemos usar el atributo label para que se visualice una etiqueta con el contenido del valor seleccionado
Una vez seleccionado un valor, podemos comprobar que no podemos modificarlo ni añadir un valor nuevo, pero si borrarlo para elegir otro valor de la lista
Quedando como resultado:
Etiquetas descriptivas
En el ejemplo anterior veíamos como crear un cuadro de texto, pero para el usuario podría no quedar claro qué se esperaba que rellenase en el control
Para solucionarlo usamos el atributo value para mostrarle un valor por defecto
Pero podemos hacerlo mediante una etiqueta descriptiva, mediante el elemento label
Una etiqueta label estará asociada siempre a un elemento input
Podemos utilizar dos métodos para realizar esta asociación:
insertando el control dentro de la etiqueta label
Quedando como resultado:
utilizando su atributo for que tendrá como valor el atributo id del control que queremos asociarle
Quedando como resultado:
Contraseñas
Es similar al cuadro de texto pero para crear una contraseña al atributo type le asignaremos el valor password
En el ejemplo podemos ver que la principal característica de este control es que el contenido del cuadro de texto se camufla
Sin embargo, si utilizamos el método GET esa contraseña será visible en la barra del navegador
Por eso es aconsejable usar el método POST si vamos a introducir contraseñas
Tambien se ha incluido el atributo pattern que corresponde con una expresión regular que añade más seguridad en la validación si no cumple el formato de la expresión
En la expresión del ejemplo se ha forzado que al menos haya un número, una letra en minúscula, otra en mayúscula y que su longitud sea de ocho caracteres
Quedando como resultado:
Correo electrónico
Es similar al cuadro de texto pero para crear un correo electrónico al atributo type le asignaremos el valor email
En el ejemplo podemos ver que la principal característica de este control es que el contenido del cuadro de texto se valida y si se introduce una dirección de correo no válida, el navegador mostrará un mensaje de error
Tambien se ha incluido el atributo pattern que corresponde con una expresión regular que añade más seguridad en la validación si no cumple el formato de la expresión
En la expresión del ejemplo se ha forzado que al menos haya un número o una letra en minúscula antes de la @, al menos haya un número o una letra en minúscula antes del . y dos o tres letras despues del .
Quedando como resultado:
URL
Es similar al cuadro de texto pero para crear una URL al atributo type le asignaremos el valor url
En el ejemplo podemos ver que la principal característica de este control es que el contenido del cuadro de texto se valida y si se introduce una URL no válida, el navegador mostrará un mensaje de error
Quedando como resultado:
Teléfono
Es similar al cuadro de texto pero para crear un teléfono al atributo type le asignaremos el valor tel
En el ejemplo podemos ver que no hay ninguna diferencia significativa con respecto al cuadro de texto
Sólo podría aparecer algún icono o imagen especial generada por el navegador o mediante una hoja de estilo CSS
Quedando como resultado:
Búsqueda
Es similar al cuadro de texto pero para crear una búsqueda al atributo type le asignaremos el valor search
En el ejemplo podemos ver que no hay ninguna diferencia significativa con respecto al cuadro de texto
Sólo podría aparecer algún icono o imagen especial generada por el navegador o mediante una hoja de estilo CSS
Quedando como resultado:
Casillas de verificación
Para crear un conjunto de casillas de verificación al atributo type le asignaremos el valor checkbox
En este caso, el valor que aparece junto al botón será el mismo del atributo name y hay que usar el mismo para formar el grupo de selección exclusiva
No tiene etiqueta de cierre
En el ejemplo se ha especificado la elección de sexo y se ha marcado el sexo Woman por defecto usando la palabra reservada checked
Quedando como resultado:
Hay que tener en cuenta que si marcamos una casilla permanecerá marcada hasta que volvamos a desmarcarla, si queremos el efecto de que se desmarquen las opciones no elegidas, deberemos usar JavaScript
Casillas de opción
Para crear un conjunto de casillas de opción al atributo type le asignaremos el valor radio
En este caso, el valor que aparece junto al botón será el mismo del atributo name y hay que usar el mismo para formar el grupo de selección exclusiva
No tiene etiqueta de cierre
En el ejemplo se ha especificado un grupo de colores y se ha marcado el color Green por defecto usando la palabra reservada checked
Quedando como resultado:
Botones
Los botones normalmente se utilizan para controlar el envío y reinicio del formulario
Podemos añadir nuevas funcionalidades a nuestro formulario usando los botones para activarlas al pulsarlos
Para ello usaremos o una imagen o un botón genérico al que luego le asignaremos JavaScript o usaremos Jquery para facilitarnos la programación
Para crear un botón al atributo type le asignaremos el valor button
No tiene etiqueta de cierre
En el ejemplo se ha usado el atributo value para mostrar al usuario un texto y pueda reconocerlo
Y el atributo onclick que es un evento que permite al botón ejecutar código JavaScript, en este caso un aviso para el usuario de que el botón ha sido pulsado
Quedando como resultado:
Enviar el formulario
Para crear un botón para enviar el formulario al atributo type le asignaremos el valor submit
No tiene etiqueta de cierre
En el ejemplo se ha usado el atributo value para mostrar al usuario un texto y pueda reconocerlo
Este ejemplo no enviará nada al servidor porque no se han usado los atributos action indicandole la URL de destino ni method indicando el método GET o POST
Quedando como resultado:
También podemos simular el comportamiento de un botón submit a partir de una imagen
En el ejemplo se ha usado el atributo value para mostrar al usuario un texto y pueda reconocerlo
Este ejemplo no enviará nada al servidor porque no se han usado los atributos action indicandole la URL de destino ni method indicando el método GET o POST
Quedando como resultado:
Resetear el formulario
Para crear un botón para resetear el formulario al atributo type le asignaremos el valor reset
No tiene etiqueta de cierre
En el ejemplo se ha usado el atributo value para mostrar al usuario un texto y pueda reconocerlo
Si escribimos algo en el cuadro de texto podremos comprobar que si pulsamos el botón reiniciar el contenido del cuadro de texto vuelve a ser su valor por defecto
Quedando como resultado:
Adjuntar archivos
Para crear un botón que permita adjuntar archivos al atributo type le asignaremos el valor file
Este botón sólo será útil si hemos elegido el método POST y hayamos incluido al elemento form el atributo enctype=’multipart/form-data’
Además del botón aparece una etiqueta con el estado del archivo adjunto, que nos dirá si hay un archivo adjunto y en caso de haberlo su nombre y extensión
Al pulsar el botón se abrirá un explorador de archivos del sistema del usuario con el que podrá seleccionar el archivo que desea adjuntar
No tiene etiqueta de cierre
En el ejemplo se adjunta una imagen al formulario aunque no es funcional porque no se ha añadido el atributo action ni tiene un botón para enviar el formulario
Se ha usado el atributo acept para indicarle al navegador qué tipos MIME puede recibir el navegador cuando pulsemos el botón
En este caso sólo puede recibir imagenes de tipo jpeg y png
Quedando como resultado:
Números
Para crear un cuadro que fuerce al usuario introducir un número al atributo type le asignaremos el valor number
No tiene etiqueta de cierre
En el ejemplo se han usado los atributos:
min
valor numérico mínimo que admite el cuadro
max
valor numérico máximo que admite el cuadro
step
controla el incremento en los números, si se omite, por defecto es 1
value
valor numérico por defecto
Quedando como resultado:
Rangos
Para crear un rango de números que fuerce al usuario introducir un número aproximado al atributo type le asignaremos el valor range
No tiene etiqueta de cierre
En el ejemplo se han usado los atributos:
min
valor numérico mínimo que admite el rango
max
valor numérico máximo que admite el rango
step
controla el incremento en los números, si se omite, por defecto es 1
value
valor numérico por defecto
Quedando como resultado:
Paleta de colores
Para asignar un color a partir de una paleta al atributo type le asignaremos el valor color
No tiene etiqueta de cierre
En el ejemplo se ha utilizado en el atributo value el valor por defecto hexadecimal #FF0000
Quedando como resultado:
Calendario
Para asignar una fecha a partir de un calendario al atributo type le asignaremos el valor date
No tiene etiqueta de cierre
En el ejemplo se han usado los atributos:
min
valor de fecha mínima que admite el rango de fechas
max
valor de fecha máxima que admite el rango de fechas
step
controla el incremento de fechas en el calendario, si se omite, por defecto es 1
value
valor de fecha por defecto
Hay que tener en cuenta que el formato para fechas que admite el control es AAAA-MM-DD, es decir, A para un año con 4 dígitos, M para un mes de 2 dígitos y D para un día de 2 dígitos todos ellos separados con el símbolo –
Quedando como resultado:
Oculto
En ocasiones hay información que el desarrollador no quiere que el usuario sea capaz de ver, para ello se usan los campos ocultos
Son campos que el usuario no puede ver, pero que son enviados junto al formulario al servidor
Para asignar campo oculto al atributo type le asignaremos el valor hidden
No tiene etiqueta de cierre
En el ejemplo se envian tres campos ocultos dando al servidor información sobre el cliente, sin que aparezca esa información en el navegador del usuario
Quedando como resultado:
No deberíamos poder ver ninguno de los campos ocultos en el navegador, pero si usamos la opción de nuestro navegador Ver código, podremos ver que efectivamente, esos campos existen
Cuadro de texto de varias líneas
Es similar al cuadro de texto pero permite escribir más de una línea para ello utilizaremos el elemento textarea
En el ejemplo podemos ver que la diferencia más significativa con respecto al cuadro de texto es que podemos usar más de una línea
Además hemos especificado con el atributo rows el número de filas a 4, con el atributo cols el número de columnas a 50 y con el atributo maxlength el máximo de caracteres a 100
Quedando como resultado:
Listas de selección
El elemento select sirve para crear una lista desplegable de selección
Su esquema es muy similar a los cuadros de texto, aunque su contenido no puede ser modificado, sólo seleccionado
Los elementos option forman la lista y al servidor se enviará en valor de su atributo value
En el ejemplo se ha especificado una lista de selección de colores y se ha marcado el color Green por defecto usando la palabra reservada selected
Quedando como resultado:
Agrupaciones de elementos
El elemento fieldset sirve para agrupar elementos relacionados
En el ejemplo creado un grupo para contener el control de acceso de usuario mediante login
Se ha usado el elemento legend que sirve de título o leyenda del grupo
Se ha usado el atributo required para que los campos user y pass sean obligatorios y si tratamos de enviar el formulario, el navegador nos mostrará un mensaje de error
El resultado es un cuadro que contiene todos los controles y que tiene como título Login de Usuario
Las Hojas de estilo en cascada (Cascading Style Sheets, CSS), son un lenguaje de diseño gráfico para definir y crear la presentación de un documento estructurado escrito en un lenguaje de marcado, normalmente páginas web escritas en HTML o XHTML; el lenguaje puede ser aplicado a cualquier documento XML, incluyendo XHTML, SVG, XUL, RSS, etc. También permite aplicar estilos no visuales, como las hojas de estilo auditivas
Una hoja de estilos no es más que un archivo de texto con extensión .css. Aunque las hojas de estilo se definieron a mediados de los años noventa, han tenido especial repercusión a partir de su última versión (CSS3), en combinación con HTML5
Se pueden aplicar distintas hojas de estilo dependiendo del dispositivo en el que mostremos nuestra página web (una pantalla grande, un móvil, papel impreso, etc)
Integración de estilos en una página
Existen varias formas de integrar estilos en una página. Pero normalmente usaremos una de estas dos:
Incluida como etiqueta que forma parte del HTML
El problema de esta opción es bastante obvio. Si en un futuro quisiéramos modificar el color de los párrafos que contienen el texto, tendríamos que buscar uno por uno todas las apariciones y cambiarlos manualmente
Definida como una regla de estilo en la cabecera
En una página web real usaremos más de una regla de estilo, por lo que tampoco será una buena opción añadirlas una a una en la cabecera
Definida con la etiqueta <link> a un fichero externo
Normalmente usaremos más de una regla de estilo, por lo que será una buena opción añadirlas desde un fichero externo de extensión .css y enlazarlas en la cabecera del HTML con la etiqueta <link>
Estructura de una hoja de estilo
Una hoja de estilo define una o más reglas que se aplicarán a los elementos que cumplan dicha regla
Cada regla se compone de dos partes:
Selector: indica a qué elementos vamos a aplicarle la regla. Pueden escribirse más de un selector para la misma regla separados por comas
Lista de declaraciones: los estilos que se van a aplicar a los elementos que cumplan la regla. Corresponden a un par propiedad:valor, separados por punto y coma
En el ejemplo se ha definido una regla que se aplica a todos los elementos p de párrafo del HTML. Además el texto se ha definido de color rojo, su fuente como Verdana y su alineación de párrafo es centrada
De forma adicional, podemos añadir comentarios, que aparecerán escritos entre /* y */
También podremos añadir directivas at (que empiezan por @), las cuales modifican la forma de aplicar las reglas
El árbol DOM
El document object model (DOM) es la representación estructurada, en forma de árbol, de todos los elementos escritos en un documento HTML
Por ejemplo, cualquier documento HTML empieza por la etiqueta , conteniendo además las etiquetas
y
, con su respectivas etiquetas de cierre
Por su parte, dentro de la cabecera (etiqueta <head>) contendrá a su vez elementos con las etiquetas <meta>, <link>, <title>, etc
Y el cuerpo (etiqueta <body>), contendrá a su vez más elementos y así sucesivamente hasta llegar a sus etiquetas de cierre
A la estructura jerárquica resultante en informática se la denomina árbol
En concreto, el árbol que representa la estructura de un documento HTML es el DOM
Gracias a esta estructura en forma de árbol, podemos identificar de forma única cada elemento del documento HTML, según cómo estén relacionados entre sí esos elementos, podremos aplicarles distintas reglas de estilo
Las relaciones que podemos identificar son:
Descendientes: son todos los elementos contenidos (directa o indirectamente) por un elemento
Por ejemplo, <head>, <meta> o <body> son descendientes de <html>
Hijo directos: son los descendientes de primer nivel
Por ejemplo, <head> es hijo de <html>
Hermanos: descendientes que tienen un padre común
Por ejemplo todos los elementos <meta> son hermanos entre si
Gracias a estas relaciones dentro del DOM, en el ejemplo que usamos anteriormente que afectaba sólo a los elementos <p>, podríamos aplicárselo también a los elementos contenidos en una división <div> que contuviera una clase o un identificador concreto
O podríamos crear reglas para los hermanos con los que compartiera un nodo
Apoyándonos en el lenguaje JavaScript y en el DOM, podremos modificar el contenido de los elementos una vez cargada la página web en el navegador
Cascada de estilo
Gracias al DOM podemos identificar los elementos concretos de un documento HTML y por eso podemos aplicarle las hojas de estilo
Una hoja de estilos puede contener diferentes reglas que configuren el mismo elemento, incluso podemos tener varias hojas de estilo con reglas contradictorias
En este ejemplo, nuestras reglas dicen que para todo elemento del <body>, incluidos sus descendientes, se le van a aplicar el color de fondo negro y el color de texto rojo
En la siguiente regla, le indicamos que en el elemento <p> de párrafo, el texto ha de ser de color azul
El documento final tendrá todos los elementos de color de fondo negro y el texto de color rojo, pero además los párrafos tendrá color azul
Las reglas se han ido aplicando unas sobre otras, en forma de cascada. Por eso tienen el nombre de cascadas de hojas de estilos (cascade style sheets, CSS)
En general, los estilos se heredan. Primero se establecen la propiedad del elemento padre y sus descendientes los heredan, para finalmente aplicar los suyos, que a su vez son heredados por sus descendientes, hasta que llegar al último nodo de descendientes de la hoja de estilos
En el caso de que tengamos dos elementos que son hermanos y haya conflicto por ver quien hereda qué propiedad, se aplica el más específico y en el caso de que tengan las mismas propiedades, se aplicará el último estilo definido
Es decir, si una regla está definida en dos hojas de estilo externas, se aplicará la regla de la hoja que se incluyó más tarde en el documento HTML. Por eso, el orden en el que las incluyamos es muy importante
Primero incluiremos las hojas más generales y después aquellas que sean más específicas
En el caso de haber incrustado en el HTML alguna regla, el estilo que se ha definido, será el que tendrá mayor prioridad que la regla que esté incluida en la cabecera del HTML
Resumiendo, se aplicarán las siguientes prioridades a la hora de aplicar una regla a un elemento concreto:
Se buscan todas las declaraciones aplicables al elemento
Si no existen reglas, se usará el valor heredado
Si no hubiera valor heredado, el navegador aplicará el valor por defecto
Si existen reglas, se aplicará la de mayor prioridad de acuerdo a los siguientes criterios:
Se asigna un peso según su origen: hoja de estilos del autor, del usuario o del navegador
Atributos con la palabra clave !important: tendrán mayor prioridad
Selectores específicos: tendrán mayor prioridad
Dos reglas con la misma prioridad: se aplica la indicada en último lugar
CSS Reset
Cada navegador posee su propia hoja de estilos por defecto
Esto implica que el estilo por defecto de algunos elementos puede ser diferente para cada navegador
Por esta razón es recomendable realizar un reinicio de los estilos aplicados a los elementos añadiendo una CSS especial (la CSS Reset) al principio de nuestras páginas web
Existen múltiples CSS que realizan esta tarea (como las utilizadas en los frameworks de Yahoo YUI, HTML5 BoilerPlate o Normalize), pero uno de los más populares es la de Eric Meyer considerado como uno de los gurús de las CSS
Para añadirla sólo has de guardar el archivo en la carpeta css contenida en la raíz de tu sitio web y definirla con la etiqueta <link> en la cabecera de tu HTML:
Los selectores sirven para identificar los elementos a los que se aplicará el formato definido en la lista de declaraciones
Hay distintos tipos de selectores que pueden ser utilizados para definir las reglas CSS
Vamos a describirlos de los más generales a los más específicos (desde el punto de vista de menor a mayor prioridad)
Selector Universal
Se define con * y se aplica a todos los elementos de la página:
En el ejemplo se han configurado los márgenes y la fuente del texto, que suelen ser algunas de las reglas más usadas
Selector de etiqueta HTML
Indica el estilo que se va a aplicar a un elemento o una etiqueta concreta
Su hay más de uno, serán separados por comas
En el ejemplo se han configurado las etiquetas 1 a 5 de título, aplicándoles la fuente del texto de tamaño grande
Como puede apreciarse, podemos prescindir de < y de > de la etiqueta
Selector de clase
Algunos elementos HTML tienen el atributo class que indica que las clases a las cuales pertenece el elemento
Este atributo nos permite tratar a esa «clase» de elemento de una manera concreta, tanto en la aplicación de estilos CSS como en su comportamiento mediante programación con JavaScript
Para aplicar el selector de clase, usaremos etiqueta.class
En el ejemplo se han configurado el texto en color azul para todos los elementos de la clase cabecera, ya que si no especificamos una etiqueta, se usará por defecto el selector universal *
En el ejemplo se han configurado la alineación del texto centrada solo para los elementos de la clase cabecera que pertenecen a la etiqueta de título <h1>
Debemos tener especial cuidado en no dejar espacios entre la etiqueta, el punto y el nombre de la clase, ya que ese espacio es significativo, como veremos más adelante
Selector de identificador
Algunos elementos HTML tienen el atributo id que indica que ese identificador único pertenece a ese elemento concreto
Para aplicar el selector de identificador, usaremos etiqueta#id
Al igual que con las clases, es muy importante el uso de los espacios
En el ejemplo se han configurado el color de fondo del texto como amarillo, en aquel párrafo que tenga el identificador destacado
Selectores descendientes y adyacentes
Estos selectores permiten seleccionar elementos contenidos dentro de otros de acuerdo a la estructura del árbol DOM
Aquí es donde toman importancia los espacios, ya que si separamos dos selectores con un espacio, entonces estaremos aplicando la regla a todos los descendientes del primer selector
En el ejemplo se han configurado la fuente del texto como Verdana para todos los elementos <p> que son descendientes del elemento <section > (recordemos que pueden ser los descendientes de cualquier nivel, ya que esa regla será heredada)
Se pueden mezclar indistintamente selectores descendientes de clase o de identificador
En el ejemplo se han configurado el color del texto como rojo para cualquier elemento de la clase error que sea descendiente del elemento
Si en vez de aplicarlo a todos los descendientes queremos que sólo se aplique a los descendientes directos (los hijos), entonces usaremos el simbolo >
En el ejemplo se han configurado la fuente del texto como Verdana sólo para los elementos <p> que son hijos del elemento <section >
También podemos seleccionar los elementos hermanos, es decir, aquellos que aparecen justo después de otros elementos, entonces usaremos el simbolo +
En el ejemplo se han configurado la indentación del primer párrafo que aparece justo después de la etiqueta de título <h1>
Selectores de atributos
Estos selectores se utilizan para seleccionar elementos en función de sus atributos
Hay de cuatro tipos:
[atributo]: elementos que tienen un atributo llamado atributo independientemente de su valor
[atributo=valor]: elementos que tienen un atributo llamado atributo con el valor especificado
[atributo^=valor]: elementos que tiene un atributo llamado atributo y cuyo valor empieza por el valor especificado
[atributo$=valor]: elementos que tienen un atributo llamado atributo y cuyo valor termina con el valor especificado
En el ejemplo se han configurado un enlace que queremos en un color distinto si lleva a una url con HTTP seguro
Pseudoclases
Existen selectores especiales para especificar elementos que tienen unas determinadas propiedades
Son clases virtuales, ya que no se especifican en el HTML, pero representan las posiciones o estados en los que se puede encontrar un elemento mientras se visualiza en el navegador
En el ejemplo se han configurado para que se aplique solo si un elemento es el primer hijo de su padre, para ello hemos usado la pseudoclase first-child, solo el primer elemento <li> de una lista de viñetas (<ul>) aparecerá en color verde
Existen otras pseudoclases que nos ayudarán a seleccionar a un hermano concreto de entre los hijos de un elemento:
:nth-child(n) : representa el n-ésimo hermano
Permite incluir una forma más compleja como:
:nth-child(even) : que representa los hijos que ocupan posiciones pares
:nth-child(odd) : que representa los hijos que ocupan posiciones impares
(por ejemplo para hacer que las filas impares de una tabla tengan distinto color de fondo y tener un efecto cebreado en una tabla)
:nth-last-child(n) : similar al anterior, pero empezando a contar desde el final
Hay también pseudoclases dinámicas, que indican el estado de los elementos cuando el usuario interactúa con ellos:
:hover : se utiliza para establecer el estilo cuando el usuario coloca el ratón sobre el elemento
:active : se utiliza para establecer el estilo cuando el usuario pincha sobre el elemento o mantiene el botón del ratón pulsado sobre él
:focus : se utiliza para establecer el estilo cuando el elemento tiene el foco
También son muy típicas las pseudoclases relacionadas con los los enlaces:
a:link : establece el estilo del enlace cuando aún no se ha visitado o cuando el usuario aún no lo ha pulsado
a:hover : establece el estilo cuando el usuario coloca el ratón sobre el elemento de enlace
a:active : establece el estilo cuando el usuario pincha sobre el enlace
a:visited : establece el estilo cuando el usuario ya lo ha visitado
En el ejemplo se han configurado el estado de los enlaces sin visitar, visitados o cuando pasemos el ratón sobre ellos
Al usar este CSS, los enlaces del documento aparecerán sin subrayar y en verde
Al situar el ratón sobre ellos pararán a azul y, una vez visitados, pasarán a rojo
Ejemplo de Selectores en acción
En el siguiente ejemplo se ha incluido una página HTML y varios de los selectores explicados anteriormente
Puedes comprobar el resultado visualizándolo por ti mismo en tu navegador y si no utilizas un CSS reset, podrías tener resultados distintos en otros navegadores
Ahora mostramos el contenido del fichero ejemploSelectores.css
Página web de Sergio Cárcamo García dedicada a la informática y temas relacionados como los lenguajes de programación, la estadística, las matemáticas, etc
Política de Cookies
Este sitio web utiliza cookies para mejorar su experiencia. Asumiremos que está de acuerdo con ello, pero puede optar por abandonarnos si lo desea. AceptarLeer más
Política de Privacidad y Cookies
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Cookies que son necesarias para el buen funcionamiento de la página web, ya que en caso de no aceptarlas, cancelarlas o borrarlas, podría notar problemas de rendimiento o fallos en el contenido mostrado
Cookies que no son necesarias para el buen funcionamiento de la página web, ya que en caso de no aceptarlas, cancelarlas o borrarlas, no notaría problemas de rendimiento o fallos en el contenido mostrado
Las cookies funcionales ayudan a realizar ciertas funciones, como compartir el contenido del sitio web en plataformas de redes sociales, recopilar comentarios y otras funciones de terceros.
Cookie
Duración
Descripción
CookieLawInfoConsent
Hasta finalizar la sesión del navegador
Controla la visualización del consentimiento de Cookies, su gestión y visualización en la página web por parte del usuario
qtrans_admin_language
Hasta finalizar la sesión del navegador
Permite al administrador gestionar la traducción de la página web a varios idiomas
qtrans_edit_language
Hasta finalizar la sesión del navegador
Permite al administrador editar la traducción de la página web a varios idiomas
viewed_cookie_policy
Hasta finalizar la sesión del navegador
Controla si la visualización del consentimiento de Cookies es visible actualmente en la página web para el usuario o por el contrario está oculta
Las cookies de rendimiento se utilizan para comprender y analizar los índices de claves para mejorar el rendimiento del sitio web, lo que ayuda a brindar una mejor experiencia de usuario a los visitantes.
Cookie
Duración
Descripción
PHPSESSID
Hasta finalizar la sesión del navegador
Preferencias del usuario, información sobre la interacción con el sitio web (servicio solicitado, fecha y hora), tipo de navegador y lenguaje, localización geográfica, etc
Las cookies de análisis se utilizan para comprender cómo interactúan los visitantes con el sitio web. Estas cookies ayudan a proporcionar información sobre métricas, el número de visitantes, la tasa de visitas, el origen del tráfico, etc.
Las cookies publicitarias se utilizan para proporcionar a los visitantes anuncios y campañas de marketing relevantes. Estas cookies rastrean a los visitantes en los sitios web y recopilan información para proporcionar anuncios personalizados.