Addaw, ir a inicio Donar

Fallo común WCAG 2.2

F3Información importante puesta solo como imagen de fondo en CSS

Nombre oficial en el W3C: Fallo del criterio de conformidad 1.1.1 debido a transmitir información exclusivamente mediante imágenes de fondo CSS

En pocas palabras

Este error ocurre cuando una imagen con información necesaria se pone como fondo con CSS (background-image). Por ejemplo, un icono que indica el estado de un trámite o un cartel con un precio. Las imágenes de fondo no pueden tener texto alternativo, así que esa información no llega a todo el mundo.

Por qué es importante

El lector de pantalla no anuncia las imágenes de fondo. Para una persona ciega, ese icono o cartel no existe.

Además, algunos modos de alto contraste y configuraciones de colores pueden ocultar los fondos. Quien los usa, por ejemplo por baja visión, también pierde la información. Si en una sede electrónica el estado «Aprobada» solo se ve con un icono de fondo, estas personas no sabrán cómo va su solicitud.

Cómo evitarlo

  1. Pregúntese si la imagen aporta información. Si al quitarla se pierde algo, no debe ser un fondo.
  2. Si aporta información, use <img> con un alt que diga lo mismo, por ejemplo alt="Aprobada".
  3. Otra opción: deje el icono como fondo y escriba la información en texto visible junto a él.
  4. Reserve background-image para lo decorativo: texturas, degradados o fotos de ambiente.
  5. No meta textos en imágenes de fondo, como precios u horarios. Escríbalos en el HTML.

Cómo comprobarlo

  1. Desactive los estilos (en Firefox: Ver, Estilo de página, Sin estilo). Compruebe si se pierde alguna información.
  2. En las herramientas del navegador (F12), busque background-image en los estilos. Decida si cada imagen es decorativa o informativa.
  3. Active un modo de alto contraste del sistema y mire si desaparecen iconos con significado.
  4. Recorra la zona con un lector de pantalla. Debe anunciar la misma información que se ve.

Ejemplo

Estado de una solicitud en una sede electrónica: primero el error y después la corrección.

<!-- Mal: el estado solo está en el icono de fondo -->
<li class="estado-aprobada">Beca de comedor escolar</li>

<!-- Bien: el estado está en el HTML -->
<li>
  Beca de comedor escolar
  <img src="icono-aprobada.svg" alt="Aprobada">
</li>
Ver el texto completo del W3C (traducción al español)

Aplicabilidad

Todas las tecnologías que admiten CSS.

Descripción

La propiedad CSS background-image permite incluir imágenes en el documento mediante CSS sin ninguna referencia en el código HTML. La propiedad CSS background-image se diseñó con fines decorativos y no es posible asociar alternativas textuales a las imágenes que se incluyen mediante CSS. Las alternativas textuales son necesarias para las personas que no pueden ver imágenes que transmiten información necesaria para comprender el contenido de la página. Por tanto, es un fallo utilizar esta propiedad para añadir imágenes que transmitan esa información necesaria. Este fallo se aplicaría igualmente en el caso de que la imagen de fondo se declarase en el atributo style de HTML, así como en el caso de que la declaración de la imagen de fondo se creara dinámicamente en un script de cliente (véase el ejemplo 3 más abajo).

Incrustar información en una imagen de fondo también puede causar problemas a las personas que utilizan fondos alternativos para mejorar la legibilidad y a los usuarios del modo de alto contraste de algunos sistemas operativos. Estos usuarios perderían la información de la imagen de fondo por la falta de cualquier texto alternativo.

Ejemplos

En el siguiente ejemplo, parte del contenido está incluido en una imagen que se presenta únicamente mediante CSS. En este ejemplo, la imagen TopRate.png es una imagen de 180 por 200 píxeles que contiene el texto "19.3% APR Typical Variable" («TAE variable habitual del 19,3 %»).

p#bestinterest {
   padding-left: 200px;
   background: transparent url(/images/TopRate.png) no-repeat top left;
 }

Se utiliza en este fragmento:

<p id="bestinterest">Where else would you find a better interest rate?</p>

Un distribuidor de libros utiliza imágenes de fondo para mostrar iconos junto a una lista de títulos de libros e indicar si son novedades, de edición limitada, si hay existencias o si están agotados.

El CSS contiene:

ul#booklist li {
   padding-left: 20px;
 }
 ul#booklist li.new {
   background: transparent url(new.png) no-repeat top left; 
 }
 ul#booklist li.limited {
   background: transparent url(limited.png) no-repeat top left; 
 }
 ul#booklist li.instock {
   background: transparent url(instock.png) no-repeat top left; 
 }
 ul#booklist li.outstock {
   background: transparent url(outstock.png) no-repeat top left; 
 }

Se utiliza en este fragmento:

<ul id="booklist">
  <li class="new">Some book</li>
  <li class="instock">Some other book</li>
  <li class="limited">A book we desperately want to get rid of</li>
  ...
  <li class="outstock">A book you actually want </li>
</ul>

Usando el código del ejemplo 1, la misma imagen de fondo se declara en el atributo style de HTML:

<p id="bestinterest" style="background: transparent url(/images/TopRate.png) no-repeat top left;">
   Where else would you find a better interest rate?<p>

En el siguiente código, la declaración de la imagen de fondo se crea en un script de cliente:

<script>
   var newP = document.createElement('p');
   var newPText = document.createTextNode('Where else would you find a better interest rate?');
   newP.appendChild(newPText);
   newP.style.background = 'transparent url(/images/TopRate.png) no-repeat top left';
   document.body.appendChild(newP);
</script>

Pruebas

Procedimiento

  1. Examinar todas las imágenes añadidas al contenido como imágenes de fondo mediante CSS, atributos style de HTML o dinámicamente mediante script.
  2. Comprobar si las imágenes transmiten información que no se transmita ya en otro lugar de la página.
  3. Si una imagen sí transmite información que no se transmite ya en otro lugar de la página, comprobar que la información es determinable por software.

Resultados esperados

  • Si la comprobación n.º 2 es verdadera y la n.º 3 es falsa, se da esta condición de fallo y el contenido falla este criterio de conformidad.

Cómo lo comprobamos en ADDAW

Este error es uno de los que buscamos en cada auditoría de ADDAW. Se lo entregamos con capturas y la forma de corregirlo.

Solicitar una auditoría

Basado en la técnica F3 del W3C (WCAG 2.2). Explicación y ejemplos: ADDAW. Traducción no oficial del texto del W3C © W3C, licencia de documentos del W3C. ¿Ha visto un error? Escríbanos.