Logo de Mosaic
El texto central de HTML
Imágenes en HTML

17. Imágenes en HTML

Christian Heilmann. 8 de julio del 2008. Publicado en: longdesc, alt, imágenes, html, título

En este apartado hablaremos de una de las cosas que hacen que el diseño web sea algo bonito: las imágenes. Una vez lo hayáis leído sabréis cómo añadir imágenes a vuestros documentos web de manera accesible (para que la gente con discapacidades visuales también pueda utilizar la información de vuestro sitio) y cómo y cuándo utilizar imágenes en línea para aportar información o imágenes de fondo en el diseño de la página.

Nota

Podéis descargaros los archivos de ejemplo que se utilizan en este apartado desde el archivo "code.zip"; a lo largo de este apartado iremos haciendo referencias a estos archivos.

Los contenidos de este apartado son los siguientes:

17.1. Una imagen dice más que mil palabras, ¿o no?

Resulta muy tentador utilizar un montón de imágenes en los sitios web. Las imágenes son una manera muy buena de dar un aire concreto a la página y las ilustraciones resultan muy útiles para comunicar información compleja de una manera más fácil a la gente que la visita.

El inconveniente de las imágenes en la web es que no todo el que navega las puede ver. Si retrocedemos hasta los días en los que los navegadores empezaron a aceptar las imágenes, veremos que muchos de los visitantes tenían las imágenes desactivadas para así ahorrar tráfico y poder navegar más rápidamente; las conexiones eran normalmente muy lentas y se debía pagar mucho dinero por cada minuto que se pasaba en línea. Aunque actualmente las cosas son muy diferentes, todavía no estamos ni mucho menos totalmente fuera de peligro.

Por lo tanto, es muy importante elegir las imágenes con prudencia y utilizarlas sólo cuando sea adecuado. Y aún es más importante que os aseguréis de que ofrecéis siempre alguna alternativa para aquellas personas que no puedan ver vuestras imágenes. De momento, veamos las tecnologías que tenemos disponibles para añadir imágenes a un documento HTML.

Ved también

En el apartado "Creación de múltiples páginas con menús de navegación" de este mismo tutorial encontraréis más información sobre los problemas que generan los iconos y las imágenes mal utilizadas.

17.2. Diferentes tipos de imágenes en la web: imágenes de contenido y de fondo

Hay dos maneras básicas de añadir imágenes a un documento: imágenes de contenido utilizando el elemento img e imágenes de fondo aplicadas a elementos utilizando CSS. El uso de uno o de otro dependerá de qué queráis hacer:

  1. Si la imagen es crucial para el contenido del documento, como por ejemplo una fotografía del autor o un gráfico que presenta datos, lo deberíais añadir como un elemento img con el texto alternativo adecuado

  2. Si la imagen tiene sólo una finalidad estética, deberíais utilizar las imágenes de fondo de CSS. La razón es que estas imágenes no deben tener ningún texto alternativo (¿de qué serviría "ángulo redondeado de color verde que parpadea" para una persona ciega?) y que hay muchas más opciones en CSS que en HTML para trabajar con estilos de imágenes.

17.3. El elemento img y sus atributos

El elemento img es muy fácil añadir una imagen a un documento HTML.

El documento inlineimageexample.html del archivo zip muestra la fotografía balconyview.jpg en un navegador (siempre que tengáis la imagen en la misma carpeta que el archivo HTML.)

<!DOCTYPE html>
<html>
<head>
   <title>Example of an inline image</title>
</head>
<body>
<img src="balconyview.jpg">
</body>
</html>

Archivo fuente: "inlineimageexample.html"

Si ejecutáis este código en un navegador, veréis lo que sale en la figura 1.

La imatge vista en un navegador

Figura 1. La imagen tal como se ve en un navegador.

17.3.1. Ofrecer una alternativa de texto con el atributo alt

La imagen se ve bien, pero es un código HTML no válido porque el elemento img necesita un atributo alt. Este atributo contiene el texto que aparece si, por alguna razón, la imagen no está disponible. La imagen puede no estar disponible porque no se puede encontrar o no cargar o porque el agente de usuario (normalmente un navegador) no acepta imágenes. Además, las personas con alguna discapacidad visual utilizan tecnologías de asistencia que les leen las páginas web. Estas tecnologías leen en voz alta el contenido del atributo alt de los elementos img a los usuarios. Por lo tanto, es muy importante escribir un buen texto alternativo para describir el contenido de la imagen y ponerlo dentro del atributo alt.

En Internet encontraréis muchos textos que hablan sobre las "etiquetas alt". Esto es objetivamente un error, ya que no hay ninguna etiqueta (o elemento) que tenga este nombre, sino que es un atributo del elemento img que es extremamente importante tanto para la accesibilidad, como para la optimización en motores de búsqueda.

Para que la imagen sea comprensible para todo el mundo, es necesario que añadáis un texto alternativo adecuado; en este caso, por ejemplo, "View from my balcony, showing a row of houses, trees and a castle" (vista desde mi balcón, desde donde se ve una hilera de casas, árboles y un castillo).

<!DOCTYPE html>
<html>
<head>
   <title>Example of an inline image</title>
</head>
<body>
<img src="balconyview.jpg" alt="View from my balcony, showing a row of houses,
 trees and a castle">
</body>
</html>

Archivo fuente: "inlineimageexamplealt.html"

El atributo alt contiene el texto que aparecerá cuando la imagen no esté disponible. La información del atributo alt no debería aparecer cuando la imagen se cargue correctamente; algunas versiones antiguas de Internet Explorer lo hacen mal y muestran este texto como si fuera un indicador de función al poner el puntero del ratón sobre la imagen durante unos momentos. Esto es un error, ya que hace que mucha gente utilice el atributo alt para añadir información adicional sobre la imagen. Si queréis añadir información adicional, debéis utilizar el atributo title, que explicaremos en el subapartado siguiente.

17.3.2. Añadir información pertinente con el atributo title

La mayoría de los navegadores muestran el valor del atributo title de un elemento img como si fuera un indicador de función al poner el puntero del ratón encima (podéis ver la figura 5.) Esto puede ayudar al visitante a saber más cosas sobre la imagen, pero no os podéis fiar de que todos los visitantes tendrán un ratón.

El atributo title puede ser muy útil, pero no es una manera segura de ofrecer información crucial. En cambio, sí que es una buena manera, por ejemplo, para escribir las sensaciones que provoca la imagen o el significado que tiene dentro del contexto.

<!DOCTYPE html>
<html>
<head>
   <title>Example of an inline image with alternative text and title</title>
</head>
<body>
<img src="balconyview.jpg" alt="View from my balcony, showing a row of houses,
 trees and a castle" title="What I see when I look out of my window; the castle was
 one reason to move there.">
</body>
</html>

Archivo fuente: "inlineimagewithtitle.html"

Si cargáis este código en vuestro navegador, veréis lo que hay en la figura 2.

Continguts de l'atribut del títol mostrats com a indicador de funció

Figura 2. En muchos navegadores, los atributos title aparecen como si fueran indicadores de función.

17.3.3. Visualización más rápida de las imágenes definiendo las dimensiones con width y height

Cuando el agente de usuario encuentra un elemento img en el HTML, empieza a cargar la imagen señalada por el atributo src. Por defecto, éste no sabe cuáles son las dimensiones de la imagen, por lo que se limitará a mostrar todo el texto apilado y desplazará el resto del documento cuando finalmente se carguen y aparezcan las imágenes. Esto puede provocar que la carga de la página sea más lenta y genere confusión entre las personas que la visitan. A fin de que eso no ocurra, podéis indicar al agente de usuario que asigne el espacio adecuado a las imágenes antes de que éstas se carguen especificándole las dimensiones de la imagen con los atributos width y height.

<!DOCTYPE html>
<html>
<head>
   <title>Example of an inline image with dimensions</title>
</head>
<body>
<img src="balconyview.jpg" alt="View from my balcony, showing a row of houses,
 trees and a castle" width="400" height="186">
</body>
</html>

Archivo fuente: "inlineimagewithdimensions.html"

De esta manera, aparecerá un indicador de posición de la imagen hasta que ésta se cargue y ocupe su lugar, con lo que se evitará el desagradable desplazamiento de la página. Con estos atributos también se pueden modificar las dimensiones de la imagen (dividid por dos los valores de los atributos del ejemplo anterior, guardadlo y volved a cargar la página), pero no es una buena idea porque la calidad de esta modificación de las dimensiones no es buena en todos los navegadores. Algo que está especialmente desaconsejado es el hecho de redimensionar las imágenes para convertirlas en miniaturas, ya que la idea de las miniaturas no es sólo tener una imagen con unas dimensiones más pequeñas, sino también un archivo que ocupe menos. No hay nadie que quiera cargar una fotografía de 300 KB para acabar teniendo una imagen pequeña que podría ser de sólo 5 KB.

17.4. Las imágenes en línea

Hay muchos atributos que podéis utilizar para las imágenes, pero la mayoría están desaprobados porque definen la maquetación y la alineación de la imagen. Si el objetivo es éste, no se debe utilizar el HTML, sino el CSS, que se inventó precisamente para ello. Aquí sólo diremos que es importante recordar que las imágenes son, por defecto, elementos en línea. Esto significa que pueden aparecer entre palabras dentro del texto sin crear líneas nuevas. Eso es muy útil para añadir iconos pequeños dentro del texto, pero puede ser muy molesto cuando intentéis crear maquetaciones utilizando imágenes y texto. Con CSS podréis hacer que las imágenes no queden en línea por defecto y hacer que aparezcan como si fueran elementos de bloque (elementos que aparecen en una línea nueva al añadirlos a un documento).

17.5. Imágenes de fondo con CSS

Lo que está muy claro es que el diseño de webs se volvió mucho más divertido cuando los navegadores empezaron a aceptar CSS. En lugar de manipular el HTML utilizando celdas de tablas para definir la posición de los diferentes componentes de la página, espacios no separables (&nbsp;) para mantener el espaciado y GIF separadores (imágenes GIF transparentes de 1 × 1 píxeles redimensionadas para crear márgenes), ahora podemos utilizar la separación, los márgenes, las dimensiones y el posicionamiento de CSS y dejar que el HTML se dedique exclusivamente a definir la estructura del contenido.

Con CSS también podéis utilizar las imágenes de fondo de una manera muy versátil: podéis ponerlas detrás del texto o en torno a éste de la manera que deseéis, y también podéis repetir las imágenes utilizando patrones regulares para crear fondos. Aquí sólo hablaremos muy brevemente de las del CSS para imágenes porque en otro apartado ya hablaremos con mucho más detalle del CSS para imágenes de fondo.

17.5.1. Aplicación de fondos con CSS

El uso de CSS para aplicar imágenes como fondo es muy sencillo. Antes de mirar el código CSS siguiente, cargad el archivo de ejemplo imagesandcss.html" en vuestro navegador o consultad la figura 4 para haceros una idea de todo lo que se puede hacer con las imágenes de fondo del CSS.

Exemples de fons de CSS

Figura 4. Imágenes de fondo con CSS.

Los diferentes cuadros son en realidad elementos de título h2 con una cierta separación y bordes aplicados con CSS para así tener espacio suficiente para mostrar la imagen de fondo. Si comprobáis el archivo HTML, veréis que cada uno de los elementos h2 tiene un id único, de manera que cada uno puede tener aplicada una norma CSS diferente. El CSS para el primer ejemplo es el siguiente:

background-image:url(ball.gif);
background-color:#eee;

La imagen se añade con el selector background-image y se le da una URL entre paréntesis para especificar la imagen que hay que incluir. Como alternativa en caso de que la imagen no esté disponible, también deberíais definir un color de fondo con el selector background-color y un valor de color (en hexadecimal, por nombre o en RGB). En este caso, hemos elegido un color gris claro.

Por defecto, las imágenes de fondo se repetirán tanto horizontal como verticalmente para llenar todo el espacio del elemento. Pero se puede definir una repetición diferente con el selector background-repeat:

Por defecto, la imagen de fondo (si no se repite) se colocará en el ángulo superior izquierdo del elemento. También podéis utilizar background-position para desplazar la imagen de fondo. Los valores más sencillos que se pueden elegir son top, center y bottom para la alineación vertical y left, center y right para la alineación horizontal. Por ejemplo, para colocar la imagen en la parte inferior derecha deberéis utilizar background-position:bottom right;, mientras que para centrar la imagen verticalmente y alinearla horizontalmente a la derecha utilizaríais background-position:center right;.

Controlando la repetición y la posición de las imágenes de fondo y usando imágenes ingeniosas podréis crear muchos efectos impresionantes que no eran posibles antes del CSS; y si ponéis todas las definiciones del fondo en un archivo CSS independiente, lo tendréis muy fácil para cambiar el aspecto de todo el sitio web cambiando sólo algunas líneas del código. Esto se explicará más adelante en el apartado 30.

Ved también

Podéis ver el apartado 30 del módulo "CSS".

Resumen

Esto es todo lo que debéis saber para empezar a añadir imágenes a vuestro HTML. Hay muchos más trucos que utilizan imágenes y CSS, pero de momento podéis empezar a trabajar con lo que habéis aprendido aquí concentrándoos en las mejores prácticas para la aplicación de imágenes. Hemos hablado de:

  1. El elemento img y sus atributos básicos:

    1. src para la ubicación del archivo de la imagen

    2. alt para el texto que debe estar disponible cuando la imagen no se carga o no se puede ver

    3. title para la información adicional interesante (pero no esencial)

    4. width y height para indicar al navegador las dimensiones de la imagen y, por lo tanto, el espacio que le debe asignar

  2. Los conceptos básicos de las imágenes de fondo del CSS

    1. cuándo utilizar fondos (básicamente, cuando no es necesario que la imagen tenga un texto alternativo porque tiene sólo una finalidad estética para la maquetación).

    2. cómo colocar y repetir las imágenes de fondo en el CSS

Preguntas de repaso

  1. Por qué es importante añadir un buen texto a una imagen en un atributo alt Y es necesario?

  2. Si tenéis una imagen de 1.280 × 786 píxeles y queréis presentar una miniatura de 40 × 30 píxeles, ¿podéis hacerlo con HTML? ¿Y es aconsejable hacerlo?

  3. Buscad información sobre el atributo longdesc, que era válido en HTML 5 y no lo es en HTML5. ¿Qué hace, y cómo lo muestran los navegadores?

  4. ¿Qué hacen los atributos valign y align y por qué no los hemos explicado aquí?

  5. ¿Dónde se colocan por defecto las imágenes de fondo del CSS en un elemento y cuál es el patrón de repetición por defecto?

Logo Creative Commons
Los contenidos recogidos en este artículo están sujetos a una licencia Creative Commons
Reconocimiento, No comercial - Compartir bajo la misma licencia 3.0 No adaptada
.
: Ir al índice :