Antxoa.com

Textos alternativos vacíos

Estándares Web

30 Noviembre 2006

Muchas veces, cuando reviso páginas, me encuentro con textos alternativos en imágenes del estilo: “esquina superior derecha”, “barra de decoración”, “imagen decorativa”…

Como todos deberíamos saber ya a estas alturas, las imágenes que no aportan información al usuario deben llevar un texto alternativo vacío.

Problemas

El problema está cuando te encuentras que muchos usuarios entienden lo de texto alternativo vacío como una indicación clara para eliminar el texto alternativo. Y es todo lo contrario.

Una imagen debe llevar siempre el atributo alt. No sólo por accesibilidad, sino porque por definición tanto en HTML como en XHTML es obligatorio (al igual que siempre tenemos que poner el atributo src).

Mala comprensión

No es lo mismo un texto alternativo vacío, que la ausencia del texto alternativo.

Ausencia de texto alternativo significa que no va a existir el atributo alt.

Texto alternativo vacío significa que existirá el atributo alt pero con un valor vacío: alt="".

Podéis decir, ¿pero no es lo mismo?. Pues no (y punto).

El por qué

Si el atributo alt no existe, cuando un usuario que navegue sin carga de imágenes (por ejemplo) llegue a esa imagen, sabrá que hay una imagen, pero al no tener texto alternativo no podrá saber si se trata de una imagen decorativa o bien una imagen relevante, con información (algo que nosotros, como desarrolladores sí que sabemos).

Sin embargo, si utilizamos un texto alternativo vacío, alt="", cuando este usuario llegue a esa imagen, ni siquiera reparará en ella. Es decir, se hace transparente, ya que como no ofrece información, es como si no existiera.

Gazapos

A día de hoy me he encontrado los siguientes métodos para implementar un texto alternativo vacío:

  • alt="vacío"
  • alt=""""
  • alt="&quote &quote"
  • alt="comillas comillas"

Parece increible pero en 3 años y medio que llevo dedicándome exclusivamente a la Accesibilid Web he visto de todo y aunque os pueda parecer sorprendente (sobre todo el último caso), creedme que es cierto.

Recomendación final

Bien, ahora que no se os ocurra poner a todas vuestras imágenes un texto alternativo vacío, para así pasar los validadores automáticos, o toda la furia de los WAI’s caerá sobre vosotros.

Recordad que los profesionales serios revisamos a mano la accesibilidad, con lo cual no vais a poder engañarnos, así que sed niños buenos y trabajad correcta y honradamente.

3 comentarios »

El método definitivo para proteger las imágenes de tu web

Deportes, Estándares Web

23 Octubre 2006

Si estás harta y harto de que te roben las imágenes de tu web (sí, esas que te curras durante horas con el photoshop, the gimp o similares…), estás de enhorabuena, porque acabamos de descubrir el método definitivo para que nadie te las robe.

Ayer me enteré (sí un poco tarde) que salía desde Bilbao la regata Velux 5 Oceans, una de las vueltas al mundo más importantes. Tan sólo hay 8 participantes y uno de ellos es Unai Basurko, portugalujo. Este es el primer gran viaje en solitario que emprende.

Así que ante esta gran aventura, visité la página oficial, en castellano y os invito que también la visitéis:

Página oficial de la Velux 5 Oceans.

Sygmar me avisó que la página tenía una sorpresita muy agradable y, efectivamente, cual sería mi sorpresa cuando me percato de que no se me carga ninguna imagen y, en su lugar, me aparece el texto alternativo Image ©.

Ya estaba echando pestes contra el webmaster con frases del estilo: claro, seguro que con IExplorer las imágenes salen perfectas y como utilizo Firefox, nada de nada… Así que me vi obligada (en contra de mi voluntad, eso sí) a abrir la página con IE y voilá, tampoco rulaban.

Así que a la única conclusión lógica y posible que he llegado es que han querido proteger las imágenes tan bien, que ni dios las pueda ver.

Os dejo unas capturas por si deciden desproteger las imágenes en algún momento.

  • Captura de pantalla de la web Velux 5 Oceans con Firefox.
  • Captura de pantalla de la web Velux 5 Oceans con IE.

Comentarios desactivados

Iframes accesibles

Estándares Web

10 Julio 2006

O lo que es lo mismo, marcos en línea implementados de forma accesible.

Primero hazte una pregunta y reflexiona: ¿realmente necesitas utilizar marcos? ¿no puedes utilizar los include de tu lenguaje de programación? ¿estás completamente seguro?

Bueno, si no he podido disuadirte, al menos hazlo accesible.

IFRAME no accesible

Vamos con lo más sencillo. Tenemos una página comercial y queremos insertar el catálogo de productos, por ejemplo, en un iframe:

<iframe src=”URL” [resto de parámetros]></iframe>

IFRAME Accesible

Para dar una alternativa accesible a un iframe (marco en línea), simplemente tenemos que ofrecer el contenido alternativo entre la apertura y cierre del elemento iframe:

<iframe src=”URL” [resto de parámetros]>
<a href=”URL”>Catálogo de productos</a>
</iframe>

Conclusiones

Lo más práctico es insertar un enlace, obviamente que tenga sentido independientemente del contexto. Otra solución es insertar todo el código del catálogo dentro del iframe, pero entonces estaríamos escribiendo 2 veces el código…

¿A que ha sido fácil?, bueno, aún así, ¡¡¡si puedes aniquilar de tu cabeza los iframe, mucho mejor!!!

Comentarios desactivados

XHTML y target=”_blank” posible

Estándares Web

30 Mayo 2006

Como todos sabemos, no es válido utilizar el atributo target si nuestra página está validando contra un dtd de (X)HTML estricto.

Pero podemos simular este comportamiento mediante un javascript no intrusivo:

En la web de Sitepoint existe un artículo que explica cómo hacerlo:

function externalLinks(){
if (!document.getElementsByTagName) return;
   var anchors = document.getElementsByTagName("a");
   for (var i=0; i<anchors.length; i++){
       var anchor = anchors [i];
       if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external"){
            anchor.target = "_blank";
       }
   }
}

window.onload = externalLinks;

<a href="http://www.antxoa.com" rel="external">Blog de Antxoa</a>

Pero este script tiene un fallo de accesibilidad. Si queremos satisfacer el nivel WCAG-AA, necesitaremos avisar al usuario de que se va a abrir una nueva ventana.

Podemos pensar en aplicar un atributo title del estilo:

<a href="http://www.antxoa.com" rel="external" title="este enlace se abrirá en una nueva ventana">Blog de Antxoa</a>

Pero si lo hacemos, todos los usuarios sin soporte javascript tendrán que aguantar el aviso, con unas instrucciones totalmente erróneas.

Lo ideal es que sólo aparezca el aviso si se tiene soporte javascript y es muy fácil: basta con incluir el atributo title en la propia función javascript:

function externalLinks(){
if (!document.getElementsByTagName) return;
   var anchors = document.getElementsByTagName("a");
   for (var i=0; i<anchors.length; i++){
       var anchor = anchors [i];
       if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external"){
           anchor.target = "_blank";
           anchor.title = "este enlace se abrirá en una nueva ventana";
           }
      }
}

window.onload = externalLinks;

<a href="http://www.antxoa.com" rel="external">Blog de Antxoa</a>

Y asunto arreglado. Pero para dejarlo aún más perfecto, lo que vamos a hacer es modificar ligeramente la forma de incluir el title para que, en el caso de que ese enlace tenga ya este atributo con un valor, no lo reemplacemos, sino que lo mantengamos, añadiéndole la coletilla de la nueva ventana:

function externalLinks(){
if (!document.getElementsByTagName) return;
   var anchors = document.getElementsByTagName("a");
   for (var i=0; i<anchors.length; i++){
       var anchor = anchors [i];
       if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external"){
           anchor.target = "_blank";
		if (anchor.getAttribute("title")){
			anchor.title = anchor.getAttribute("title") + " (se abre en nueva ventana)";
		}
		else{
			anchor.title = "(se abre en nueva ventana)";
		}
          }
      }
}

window.onload = externalLinks;

<a href="http://www.antxoa.com" rel="external">Blog de Antxoa</a>

Ahora sólo queda por decidir si realmente queremos abrir ventanas nuevas o no…

Comentarios desactivados

Jornada Javascript no Intrusivo

Estándares Web

10 Mayo 2006

Ya podéis acceder en la web de Enpresa Digitala a la información de la jornada sobre Javascript no Intrusivo, que se impartirá el jueves, 1 de junio en el Parque Tecnológico de Zamudio.

La verdad es que tengo muchas ganas de que llegue el día, porque llevaba mucho tiempo con la idea de preparar esta jornada y me hace ilusión de hablar de otra cosa distinta a la Accesibilidad Web, XHTML y CSS, aunque lo vaya a tocar de refilón.

Así que, ya sabéis, si os apetece aprender algo nuevo, os espero en la jornada, y de paso, nos tomamos un café. Saluditos!

1 comentario »

Experimentando con CSS

Estándares Web

3 Mayo 2006

Encuentro en Que Web! un curioso y divertido experimento que han hecho en The Man in Blue: Ponle la cara de una web al cuerpo de otra web.

De esta forma queda demostrado que existen similitudes (o no) en los nombres que utilizamos los desarrolladores para nuestras clases e identificaciones.

Prueba a mezclar estilos o comprueba qué bien queda Google con mi CSS. Igual así empiezo a usarlo…. ¡ni de coña!, sigo fiel a All the web

1 comentario »

Advertencias Validador CSS: Familia de fuentes genérica

Estándares Web

19 Marzo 2006

Una de las advertencias más cantosas del Validador CSS del W3C es la siguiente:

Recomendamos encarecidamente ofrecer una familia genérica como última opción.

Bien, ¿qué significa? Vamos a explicarlo con un ejemplo que siempre repito en los cursos. Realmente no se trata de un error, sino de una advertencia (warning).

Imagí­nate que estás en el supermercado y tu madre te pide que compres detergente de marca Ariel. Vas a la seccion de limpieza, lo buscas, y resulta que no queda Ariel.

Como no quieres comprar algo equivocado, llamas a tu madre y le cuentas el problema. Entonces ella te dice que compres el detergente de marca Elena.

Lo buscas, y tampoco queda Elena. Vuelves a llamar a tu madre, que te dice que, entonces, compres Skip.

Miras, y qué mala suerte, tampoco queda. Vuelves a llamar a tu madre y te dice:

Ok, cómprame cualquier detergente, de la marca que quieras, pero compra uno.

Y éso es precisamente lo que nos pide el Validador: que como última opción indiquemos una familia genérica. Vale, bien, eso ya lo hemos dicho al principio. ¿Pero qué significa.?

Bien, cuando indicamos la tipografí­a de un elemento en la hoja de estilos, algo así­ como:

h1{ font-family: Arial, Verdana;}

En este caso estoy indicando que quiero que todos los encabezados de primer nivel (h1) utilicen la letra Arial, y en el caso de que el usuario no disponga de esta fuente en su sistema, que utilice Verdana.

¿Pero qué ocurre cuando el usuario no tiene ni Arial ni Verdana? Entonces es el navegador el que las sustituye por la funte predeterminada en el navegador.

Y ahí­ es precisamente donde entra en juego la advertencia del validador. En este ejemplo estoy poniendo 2 tipos de letras de tipo “sans-serif”. ¿mande?, ¿y esto qué es?

Los tipos de letras se agrupan en cuatro grandes familias: serif, sans-serif, fantasy y monospace. Las más conocidas para nosotros pueden ser:

serif:
Letras con mucho detalle (como la Times New Roman). En pantalla se leen peor debido a la cantidad de detallas que tienen, sin embargo, impresas en papel se leen mejor.
sans-serif
Letras sin detalla (como la Arial o la Verdana). En pantalla se leen mejor porque no tienen detalles, sin embargo, impresas en papel se leen peor.

¿Ya sabéis por dónde voy? Vale, lo explico aún más.

En mi ejemplo, quiero que los encabezados de primer nivel tengan una tipografí­a de tipo sans-serif (verdana o arial). Pero igual un usuario no dispone de esa tipografí­a, así­ que el navegador la sustituye por la que tenga establecida por defecto, y se puede dar la casualidad que el navegador tenga estabecida, por defecto, una letra de tipo serif.

Lo que el validador nos está “cantando” es que, si el usuario no dispone de nuestra tipografía, al menos se sustituya por una de su familia. Si queremos una letra sans-serif, para favorecer la legibilidad en pantalla de la página, que el navegador ponga otra letra sans-serif.

Entonces, nuestro ejemplo quedará así­:

h1{ font-family: Arial, Verdana, sans-serif;}

Y el validador ya no nos mostrará la advertencia.

Comentarios desactivados

También me puedes encontrar en:

Diseño basado en el tema Revoltz