Un paso hacia la accesibilidad en la web
En este cursillo, veremos de una forma didáctica como convertimos una página normal (HTML prehistórico y mal aplicado) a una página toda montada con XHTML, CSS y con un gran soporte de accesibilidad.
Este curso pretende introducir y ayudar a los desarrolladores a que puedan comprender el verdadero valor de programar las páginas web con funcionalidades extras “invisibles” a ciertos ojos, pero de gran ayuda visual para el resto de los usuarios. La falta de accesibilidad se puede paliar con pequeños toques de código HTML y abusando correctamente de CSS, obtieniendo de esta manera sitios de excelente calidad y de alto grado semántico.
Demás está decir que el ejemplo valida tanto para el XHTML como para la parte de CSS.
Importante antes de continuar leyendo
El curso fue realizado tomando un ejemplo de la página accesibible del diario argentino LA NACION LINE - Sin barreras. Todo el contenido (texto e imágenes) son propiedad del mismo. Éste no tiene ninguna relación con el autor de este artículo, así mismo el autor ha tomado este ejemplo como un buen ejemplo para mejorar, la finalidad del artículo no es ofender sino educar. El código final, del curso está a total dispocisión de la gente, es de uso libre y gratuito.
Por un mundo más accesible.
¿Cómo aprovechar el material de este artículo?
Si bien este artículo no es un manual detallando 250 pasos, etiqueta por etiqueta de HTML escrita, se detallan 7 u 8 pasos importantes, entre ellos, los primeros 5 tratan el proceso inicial por el cual se ha comenzado a hacer la página. El verdadero jugo del artículo está en el código escrito, donde se demuestra como están aplicados los conceptos, también tener en cuenta que muchas funcionalidades no están a la vista sino que son funcionalidades semánticas, por ejemplo que sólo se aprecian escribiendo aplicaciones que analícen contenido, o lectores de pantalla.
Debéis mirar el contenido de los ejemplos, permanentemente, en tal caso, mirar el ejemplo 8 que es el ejemplo más completo y se ven los resultados finales. Cualquier duda, sugerencia o corrección pueden utilizar el formulario de contacto.
Preguntas muy concretas sobre el artículo pueden ser formuladas utilizando el formulario de comentarios.
Paso 1: La página a convertir
Estuve buscando en la web, una página ideal para convertir de HTML arcaíco a XHTML/CSS, además agregarles dotes de accesibilidad, para ello, he revisado mi sitio en busca de referencias al tema y recuerdo una vez haber escrito sobre el sitio LA NACIÓN LINE Sin Barreras, el cual es un sitio que pretende ofrecer una entrada alternativa a la gente con discapacidades, tomaré este ejemplo como material educativo, todo el código que verán es público, y el logo, contenido de la página de es de propiedad exclusiva de LA NACIÓN.
Esta página en cierta forma es el ejemplo ideal, por que tiene una estructura definida, me gusta la disposición de los elementos, y antes de escribir una línea de XHTML lo que haremos al principio será preparar un espacio en nuestro servidor de trabajo, para poder montar nuestra página ahi.
¿No tienes un servidor de trabajo? Puedes instalar Apache, PHP y MySQL si lo deseas, de esta forma podrás hacer pruebas en un ordenador local como si estuviera en un servidor remoto, si no tienes idea de cómo instalar todo esto, puedes pedirle ayuda algún colega que se dedique a la programación.
Una vez creado el espacio —mi ejemplo es http://lanacion.laptop— procedemos a la preparación lógica de cada proyecto. Es bueno que pongáis orden desde un principio, definan una estructura de directorios donde los archivos se irán guardando, no es una tarea difícil, cada proyecto web tiene una cantidad “x” de tipos de archivos, deben crear una carperta para las hojas de estilos /css/, otra carpeta para las imágenes /images/, una carpeta para los archivos de descripción larga /longdesc/ y otra carperta para los “includes” /inc/.
Una vez funcionando el proyecto en el servidor, continuaremos con la estructura del XHTML principal.
Paso 2: La estructura del XHTML
Realizaré el ejemplo con PHP, así que el primer archivo que voy a crear se llama index.php, y lo guardaré en el directorio raíz / de la carpeta de proyectos. Para aprovechar que está en blanco, decidiré que tipo de DTD será la correcta, dado que será un sitio careciente de material gráfico, lo que procederé a elegir será la DTD estricta del XHTML 1.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Según la W3C todos los documentos XHTML…
Debe haber una declaración
DOCTYPEen el documento antes del elemento raíz. El identificador público incluido en la declaraciónDOCTYPEdebe hacer referencia a alguna de las tres DTD que se hallan en el Apéndice A usando el Identificador Formal Público correspondiente. El identificador del sistema puede ser modificado apropiadamente para reflejar convenciones de rango local.
Luego el segundo paso importante es definir el idioma madre del sitio, para ello pueden leer más acerca de esto en 25 errores comunes en la web: Error 3: Páginas sin el idioma especificado y luego de buscar en la lista ISO 639-2 de idiomas configurar para el caso el idioma madre de la página, de modo que los sintetizadores se autoconfiguran para pronunciar en el idioma correcto. En este caso he visto que el correcto es lang="es-ar" por que el diario LA NACION escribe en idioma castellano propio de la Argentina.
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es-ar" lang="es-ar">
Notar que como estamos hablando de XHTML tiene que llevar ambas declaraciones de idiomas, tanto en formato XML (xml:lang) y en formato HTML (lang), esto es una buena precausión y una linda transición al futuro de XML. Es obligatorio para que el documento valide contra los estándares.
Escribimos el resto de los tags para que conformen un documento, me refiero a agregar las cabeceras <head>…</head> y dentro de ellas poner el tag del título <title>…</title> luego procedemos con el cuerpo del documento <body>…</body> y finalizamos por cerrar el tag </html>. El documento final tiene que quedar así:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es-ar" lang="es-ar">
<head>
<title>LA NACIÓN ONLINE - Sin Barreras</title>
</head>
<body></body>
</html>
Muy fácil. Ahora el segundo paso, agregar las estructuras lógicas del documento.
Paso 3: Agregar las estructuras lógicas del documento
Esta parte quizás no les sea familiar a muchos, pero los profesionales antes de escribir una línea de código comienzan a realizar una delimitación de zonas (utilizando la imagen modelo impresa en un papel y utilizando el boli) definiendo así las estructuras lógicas de la página.
Antes definir las áreas, les voy a contar como les llamo a estas áreas, primero están las áreas de primer nivel que contendrán en un segundo nivel las sub-áreas de segundo nivel, las de primer nivel únicamente “contienen” y “posicionan” mientras que las de segundo nivel modulan cada parte del contenido y le dan el aspecto gráfico y se posicionan respecto a sus pares. En la siguiente imagen de la página del diario la nación he marcado las zonas más importantes de la estructura a programar.

Las tres zonas más importantes ya fueron delimitadas. La zona 1 es la cabecera, la zona 2 es el cuerpo de la página y la zona 3 es el pie de página. Luego en nuestra arquitectura de página tenemos que crear esas zonas con divs, primero pensaremos en los tres divs importantes, recordar que no utilizaremos tablas para armar la página web sino que utilizaremos etiquetas <div>. En el archivo index.php que tenemos entre los tags <body>…</body> escribimos:
<div id="header"></div>
<div id="content"></div>
<div id="footer"></div>
El primer <div> delimitará la zona azul (antes marcada como 1) y tendrá un identificador universal llamado “header”, utilizo nombres en inglés por que así los nombres son más resumidos que en lengua castellana, pero en todo caso podéis hacerlo en castellano. El segundo <div> delimitará la zona roja, lo llamaremos “content” (contenido) y el último <div> que es el pie de página lo llamaremos “footer”.
Una vez que tengamos el código montado, a simple vista no notaremos cambios notables si previsualizamos el contenido de la página. Este es el código resultado que deben tener:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es-ar" lang="es-ar">
<head>
<title>LA NACIÓN ONLINE - Sin Barreras</title>
</head>
<body>
<div id="header"></div>
<div id="content"></div>
<div id="footer"></div>
</body>
</html>
Con esto ya hemos terminado de delimitar las zonas más importantes de la página, luego dentro de las zonas iremos agregando parte por parte cada módulo que vayamos descubriendo, de forma ordenada y semántica.
Muy bien, ahora queda delimitar las otras zonas disponibles, las de segunda jerarquía en la página, para ello en nuestra hoja impresa vemos dentro de las tres zonas principales cuales son aquellas zonas más grandes o las más generales, yo en este modelo identifico 2 zonas, la de los menúes de navegación y la de los cuerpos donde se alojarán las noticias, estás dos zonas que hemos descubierto, se alojan directamente dentro de la zona 2 que anteriormente hemos definido como <div id="content">…</div>.
Estas dos zonas, la 3 y la 4, la dividiremos en dos divs más, dentro de la zona 2 como habíamos dicho antes… para ello dentro del div <div id="content">…</div> ponemos:
<div id="left">…</div>
<div id="right">…</div>
El código final de esta parte debería quedarles igual a esto:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es-ar" lang="es-ar">
<head>
<title>LA NACIÓN ONLINE - Sin Barreras</title>
</head>
<body>
<div id="header"></div>
<div id="content">
<div id="left"></div>
<div id="right"></div>
</div>
<div id="footer"></div>
</body>
</html>
Con esto ya hemos terminado de delimitar las zonas más importantes de la página, luego dentro de las zonas iremos agregando parte por parte cada módulo que vayamos descubriendo, de forma ordenada y semántica.
Paso 4: El primer análisis de accesibilidad
Todo documento que tenga que ser accesible tiene que preveer algunos puntos importantes. Algunos de ellos son convenientes (depende el proyecto) y otros son casi obligatorios, lo primero a tener en cuenta es que un discapacitado –cuando entra a una página– tiene que leer todo el contenido, de hecho lo primero que lee es el título de la misma, éste proviene de la etiqueta <title>, luego pasa al contenido, es bueno que los primeros enlaces sean los más informativos posibles, es hora de poner los 3 enlaces más útiles para esta gente, como por ejemplo la página instructiva de accesibilidad del sitio, también la página de buscar es muy importante y la página de contacto para facilitar la comunicación entre lector y creador.
Para ello, debemos situarnos en la zona 1 la cual nombramos con <div id="header">…</div> y escribimos el siguiente código:
<body>
<div id="header">
<ul>
<li><a href="#" rel="glossary" title="Lea las instrucciones sobre los comandos y las abreviaturas de este sitio" accesskey="i">Instrucciones</a></li>
<li><a href="#" title="Busca en el sitio" accesskey="b">Buscar</a></li>
<li><a href="#" rel="help" title"Para contactar con el editor del diario">Contactar</a></li>
</ul>
</div>
Muy bien, como veréis ya está montado el primer módulo de la página, compuesto por una lista desordenada, con tres enlaces, los más importantes, a los cuales he marcado con atributos rel="…", title="…" y accesskey="…" para darle connotaciones semánticas a los mismos.
Para comprender lo programado, voy a explicar un sólo enlace de los tres programados, luego os dejo la posibilidad en la sección de “bibliografía” para que sigáis leyendo sobre atributos, enlaces, XHTML y CSS.
El primer enlace hace referencia a las instrucciones, de modo que tiene que ser la primera palabra que el discapacitado debe escuchar, acto seguido ese enlace tiene ciertas connotaciones semánticas como la relación a un Glosario rel="glossary" y un título más descriptivo.
El atributo rel="glossary" me permite indicar que en esa página existe un tipo de glosario de términos propios del diario, secciones, y teclas de acceso útiles para navegar.
El atributo accesskey="LETRA o NUMERO" le permite al usuario hacer una convinación de teclas para acceder rápidamente a ese enlace, en este caso he puesto accesskey="i" para las “Intrucciones” por que la palabra empieza con “i”, el resto se organiza de la misma forma, sólo que para las secciónes más importantes del diario utilizaremos números, del 1 al 9.
Como habrán visto, todavía ni siquiera hemos pensado en que colores, tamaños de letras nos manejaremos, sino que hemos pensado todo el tiempo en la estructura semántica del documento, vamos bien, el código final quedaría así:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es-ar" lang="es-ar"> <head> <title>LA NACIÓN ONLINE - Sin Barreras</title> </head> <body> <div id="header"> <ul> <li><a href="#" rel="glossary" title="Lea las instrucciones sobre los comandos y las abreviaturas de este sitio" accesskey="i">Instrucciones</a></li> <li><a href="#" title="Busca en el sitio" accesskey="b">Buscar</a></li> <li><a href="#" rel="help" title"Para contactar con el editor del diario">Contactar</a></li> </ul> </div> <div id="content"> <div id="left"></div> <div id="right"></div> </div> <div id="footer"></div> </body> </html>El siguiente paso es terminar de armar la zona de la cabecera, ubicando el título de la página, con la fechas y temperaturas del día.Paso 5: La Cabecera
El módulo de la cabecera tiene que alojar la información necesaria para que sea leída cada vez que la página se cargue, recomendamos tener poco texto, de ser así conviene también tener 2 o 3 cabeceras para las notas independientes, pero en este caso haremos la que corresponde a la página de inicio. La cabecera está delimitada por la etiqueta<div id="header">…</div>y le agregaremos la primera cabecera importante<h1>que será el título mayor de la página, en este caso el del Diario La Nación Online. Para ello ubicaremos la imagen del diario dentro del<h1>para que dado el caso no existan imágenes quede el atributoalt="…"formateado como si fuera un<h1>. Veremos el efecto.<div id="header"> [… listado de enlaces del paso 4 …] <h1>img src="/images/logo.png" alt="LA NACION LINE — Sin Barreras" title="Para personas con dificultades visuales" /></h1> </div>Entonces, lo bueno de esto es que cuando alguien acceda al sitio sin imagenes, verá el verdadero tamaño impuesto o por la hoja de estilos o por el mismo navegador. Además en los navegadores solo-texto el atributo
alt="…"funciona como texto.Ahora sólo falta agregar la parte de la fecha de edición actual de las noticias, y el tiempo, todo en la misma cabecera como un dato importante. Para ello crearemos otros párrafos más con clases que lo identifiquen, uno para la edición y otro para el tiempo:
<div class="fecha"><p>Sábado, 27 de diciembre de 2003. Actualizado 11:13 horas.</p></div> <div class="tiempo"><p>Temperatura: 22°, Humedad: 82%, Sensación Térmica: 23°, Lluvias.</p></div>He utilizado etiquetas
<div>por que el modelo final muestra fondos de pantalla, y posiciones respecto a otros elementos, es por eso que se recomienda mejor utilizar un div antes que ponerle una clase a un elemento de párrafo. Luego con CSS daremos los toques finales.Una cosa a tener en cuenta, al utilizar simbología como en este caso hemos utilizados un símbolo de grados centígrados, debemos escoger la entidad HTML correspondiente (° fue el caso) a ese símbolo, así nos ahorraremos problemas de compatibilidad entre dispositivos (navegadores, TV, Palms, etc.).
Paso 6: Definir el contenido
Esta parte quizás sea la más compleja, por que hay muchos objetos que debemos ubicarlos en la zona 4 que antes habíamos definido, dentro de las etiquetas
<div id="left">…</div>irán las notas más importantes. Tendremos que definir cada tipo de nota, y fijarnos las coincidencias estructurales para poder luego armar un modelo para cada caso, el resto se encargaría de modelarlo el CSS.Miramos en nuestro ejemplo, y para ir más directo les cuento que he diferenciado 5 tipos de módulos, algunos son únicos como la noticia más importante del día o como los DESTACADOS SIN BARRERAS, el resto tiende más a repetirse.
Pero dentro de todos esos “mini” módulos existe otra jerarquía que no es explícita, se diferencia separando notas de las “más importantes” (las primeras 4) del resto que pertenecen a los editoriales, resto de notas, y especiales.
Las notas vamos a diferenciarlas con tipos de listados, de definiciones, por que éstos son más aptos para casos de categorización, notas, ítems, incluso beneficia a la estructura del elemento haciendo que ahorremos
<div>a la hora de utilizarlos.Para dividir entre grupos de noticias, haremos una lista
<dl>por grupo, dentro de la lista irán las categorización de cada noticia<dt>y el cuerpo de cada nota<dd>donde ubicaremos párrafos<p>y titulares<h2>(si es muy importante)<h3>(si tiene menos prioridad). Los enlaces<a>llevarán relaciones “bookmark”<a rel="bookmark">así tienen más connotación semántica.Un ejemplo sería:
<dl> <dt>Economía.</dt> <dd> <p>Aumenta el precio de la soja.</p> <h2><a href="/iralanota.php=1" rel="bookmark">Beneficia a la Argentina el “mal de la vaca loca”.</a></h2> <p>Se revalorizó en 44 millones de dólares la cosecha 2002 / 2003 La soja dejaría una ganancia extra de <abbr title="United State Dollars" lang="en">US$</abbr> 409 millones; es por la mayor demanda estadounidense de harina para alimentar aves de corral y cerdos.</p> <p><a href="/iralanota.php=1" rel="bookmark" title="Leer la nota: Beneficia a la Argentina el “mal de la vaca loca”.">Ir a la nota</a></p> <dt>…<dt> <dd>…<dt> </dd>Entonces de esta forma estamos listado noticias con una mejor estructura, aprovechamos las etiquetas correctas y hacemos listados más intuitivos para los lectores, y más estructurales para modificar con los CSS.
Lo interesante es entrar a organizar el grupo de las “Otras Noticias” por que gracias a este tipo de listados puedo agrupar inteligentemente las listas con
<dt>usando para las categorías y con<dd>por noticia.Los nombres propios, ciudades, organizaciones, o citas sobre obras, deben llevar el tag
<cite>de modo de marcarlo como una cita, si está en un idioma distinto al castellano es bueno ponerle el atributolang="…"así el lector de voz (un sintetizador de voces) cambia el tono y pronunciación a uno más adecuado.Una vez puesto todo el código de todas las notas, quedará algo así, no incluyo el código en la página por que sinó quedará todo muy largo, pero pueden ver el código fuente del enlace anterior.
Notas adicionales
En el ejemplo programado he incluido dentro de la zona
<div id="left">un div<div class="notas">, allí dentro de ese div incluiré todas las notas que desee, esto lo hago para separar las notas de la sección “Descatados sin barreras”, de esta forma cuando toque código en la plantilla de CSS esto me será de ayuda y una ventaja para realizar las reglas de estilo.Es muy útil y práctico hacer una regla que ayude a graficar y posicionar otros elementos, sin tener que ponerle clases, imaginen que agregando una simple clase a un elemento que encierre a otros, los otros no necesitarán una clase cada uno, por que con la primera se podrán hacer más cambios, ahorrando caracteres.
Ahora queda pasar al paso 7, que es donde verteremos el código para los menús de la parte derecha.
Paso 7: Los menús de la parte derecha
El paso 7 tiene gran parecido con el paso anterior, primero hay que determinar que los menús son en gran parte listas de enlaces, hay otro aspecto interesante de esto y es que podemos utilizar atributos en los enlaces que harán de ellos enlaces especiales, ¿por qué son especiales? Porque poseen atributos de secciones, apéndices y subsecciones, entonces semánticamente se diferencian del resto, un robot inteligente sabría moverse por todo un sitio correctamente si los enlaces están bien clasificados.
Otro aspecto y funcionalidad interesante es que cada módulo de menús tiene que ser independiente, esto es importante por que de esta manera podemos quitar y agregar menús a nuestro antojo o según nuestros usuarios nos indiquen que es lo mejor.
Al mirar el ejemplo real, vemos que los enlaces se agrupan en varias áreas, entonces podemos crear un módulo con una etiqueta
<div>que la llamaremos “menu”, luego dentro de esa<div>ubicaremos el título de la sección con una etiqueta<h3>la cual poseerá un enlace con un atributorel="section"por ser el principal de todos, luego una lista desordenada<ul>contendrá cada enlace en un<li>con una relación del tiporel="subsection".Esto es un módulo de un menú:
<div class="menu"> <h3><a href="/secciones/" rel="section">Secciones</a></h3> <ul> <li><a href="/link.php" rel="subsection" title="contactar">Contactar</a></li> <li><a href="/link.php" rel="subsection" title="contactar">Ingresar</a></li> </ul> </div>Paso 8: La hoja de estilos
Luego de tener estructurado y semantizado todo el contenido y estructura, pasamos a la creación de los estilos, quizás este ejemplo programado de CSS no es el ideal, se puede mejorar, pero está en un muy buen estado, prácticamente no se han utilizado clases, sino que se han trabajado más aprovechando las herencias entre elementos, haciendo posible el ahorro de caracteres, además de trabajar más funcionalmente.
<link href="/css/basic.css" media="screen" rel="stylesheet" type="text/css" /> <link href="/css/print.css" media="print" rel="stylesheet" type="text/css" />Otro paso adelante es que la página trae la posibilidad de hacer una plantilla de estilos que se activa cuando uno quiere imprimir, si observáis el ejemplo que yo he hecho, podrán observar que hay una plantilla que se utiliza únicamente si queremos imprimir, dado que está especificada con un atributo
media="print"ésta solo aparece si realizamos impresiones, por lo tanto no necesitamos tocar más código de XHTML, tampoco necesitamos crear una página más que sea alternativa, sino que sólo modificamos los aspectos gráficos y de posición de todos los elementos si lo deseamos sin tener que tocar también la hoja de estilos principal, también cabe destacar que las hojas de CSS orientadas a presentación son más cortas, dado que no requerimos de posicionar muchos elementos más que en una pantalla, sino que el caso aquí es más porcentual.Las hojas de estilo de impresión son útiles incluso para mostrar tamaños de tipografías aptos para la impresión, como los son los
pt(puntos) ymm(Milímetros).Una vez terminado la plantilla principal, se pueden hacer muchos cambios, todos los que uno quiera, siempre y cuando no toque el XHTML el trabajo será más práctico y menos complicado, se podrán hacer mejores combinaciones de estilos para diferentes usuarios, y también este ejemplo posee en el tag body un identificador único que le permite a un usuario final, poder configurar su propia hoja de estilos.
Dado que he utilizado medidas en
empara varias zonas y sobre todo para el control tipográfico, todos los navegadores IE 3.0 en adelante aceptarán este modo satisfactoriamente, cada usuario puede cambiar desde el navegador el tamaño de la tipografía, de hecho si un usuario está acostumbrado a utilizar tipografías más grandes de lo normal, el sitio se agranda a gusto.¡CSS es más complejo que XHTML!
Y algo de cierto tiene eso, CSS es un mundo nuevo, lleno de conceptos claros para modelar la forma de una página, en nuestro ejemplo no hubo problemas a la hora de hacerlo, ya que hay muchos puntos que me guiaron a un esquema de modelaje menos complejo, las razones que he visto son:
- Estilo de la página minimalista
- Medidas horizontales fijas
- Dos columnas
- Pocos elementos a posicionar
- Pocos colores, tipografías e imágenes
Dado que lo que siempre recomienda la W3C es utilizar cada tecnología para su propósito, por regla no podemos utilizar código XHTML para dar tamaño a las tipografías, ni para modelar la forma de una página, ni para situar una columna a la derecha y a la izquierda, sino que todo esto lo haremos con CSS.
Explicaré sólo el método utilizado para posicionar, uno que he desarrollado yo y realmente me funciona de maravillas, sin tener que utilizar “hacks” en el archivo de CSS, un poco de picardía a todas estas reglas.
Comencemos por lo principal el cuerpo de la página, o sea el
<body>para ello, como muestra en el ejemplo real, todo el sitio está montado hacia la izquierda, el foco no es centralizado, puede que esto traiga dolores de cuello por tener siempre girarlo –no, fue solo una broma– pero dirigir el foco de lectura hacia un lado no es positivo, los focos de visión centrados son más cómodos. De todos modos he decidido respetar esta decisión de focalizar, pero he hecho algunos cambios que notaran cuando observen mi ejemplo y el que está ahora en el diario.Y comenzamos con el
<body>que por recomendación de desarrolladores debe quedar así:body { background-color: #F8F8FA; margin: 0 auto 0 0; padding: 0; font-family: Tahoma, Verdana, Arial, sans-serif; }Voy a deglosar esta parte por que es importante, dado que no pondré una línea de atributos en el tag
<body>entonces doy en color de fondo, que esbackground-color: #F8F8FA;y luego lo más importante de toda página web: los márgenes que en este caso están definido así; margen superior0, margen derechoauto(se autoajusta dependiendo el ancho de la resolución de pantalla), margen inferior0y el margen izquierdo0. De esta forma tendremos los cuerpos principales orientados hacia la izquierda.Luego el
padding: 0esto es una medida de seguridad contra navegadores viejos que optan por poner unpaddingpor defecto en vez de utilizar márgenes. Luego nos focalizamos en las áreas que habíamos definido (delineado):div#header { width: 755px; } div#content { border-right: 1px solid #999; border-bottom: 1px solid #999; border-top: 1px solid #999; width: 754px; background-color: #fff; margin-bottom: 0; } div#footer { width: 754px; background-color: #fff; }Esas reglas que he definido (
div#header,div#content,div#footer) posicionan absolutamente toda la página, las tres áreas, incluídos todos los módulos que se encuentren bajo sus dominios.Ahora queda la parte más crucial, la posición de el cuerpo del contenido, y la columna de los menús, es por eso que he creado dos clases únicas,
div#leftydiv#right, éstas están preparadas para situar el contenido en ambos lados (derecho e izquierdo).div#left { border-right: 1px solid #999; width: 70%; float: left; } div#right { width: 225px; float: right; padding-top: 15px; }Como conocemos los problemas de posicionar mediante el método
floattomamos medidas para ello, para esto, hice un hack muy simple, que lo que hace es que se respeten los límites de las divs contenedoras, aparte de ello, empuja hasta los limites a las otras divs, obteniendo los efectos deseados sin usar trucos raros dentro del código de CSS.Para ello, debemos poner un elemento “dummie” en zonas específicas como lo es en la cabecera y en el cuerpo de contenido, ponemos un
<p class="clear"></p>esto es un elemento en bloque, si no conteniene contenido alguno será un sonido sordo, pero generará espacios en blanco, esto es por que los navegadores lo entienden como algo normal, pero, con una simple regla de CSS haremos magia y colores…p.clear { clear: both; margin: 0; padding: 0; }Con esto tendremos parte de las posiciones de los objetos principales del documento, a esta altura se tiene que comenzar a realizar los cambios gráficos, los mismos elementos traen por defecto posiciones que se pueden alterar con CSS a gusto, es recomendado respetar la naturalidad de los mismos.
Podéis observar el resultado final con todos los retoques que le hice a la hoja de estilos.
Notas finales
Como podrán observar, después de tanto tiempo escribiendo artículos y notas relacionadas con CSS nunca habíamos hecho algo parecido, un ejemplo real careciente de funcionalidad y ventajas que proporcionan los estándares que en solo 1 día de trabajo se ha convertido en un ejemplo lleno de las mismas, además tienen a disposición el código del ejemplo tanto el archivo CSS como el XHTML para echar una mirada a cada línea y decifrar los cientos de conceptos aplicados… esa es la emoción de aprender a hacer una página, descubrir las miles de posibildidades que ofrecen todos los elementos del XHTML.
En este curso, hemos cambiado notablemente la funcionalidad de la página, utilizando solamente código XHTML, que le brinda al contenido un valor semántico alto, pueden comprobarlo escuchando el contenido con un lector de pantalla, también existen funcionalidades con el teclado, permitiéndole al usuario realizar comandos básicos con sólo teclear Alt+I para ir a las instrucciones ó Ctrl+M para empezar por el primer enlace de la sección de los menús.
Debéis mirar el código minusciosamente para descubrir la funcionalidad, por que está explicita y fácil comprención, documentar todo me llevaría unos días de más, pero se podría terminar.
Cambios documentables de la página
Ahora comprobaremos algunos de los cambios hechos, los más notables mirando el código HTML del ejemplo original y mirando el resultado final del XHTML.
Lineas de código
El ejemplo real contiene 988 líneas de código HTML contra las 308 del ejemplo que he programado, de todas formas esto varía, pero el promedio del ejemplo real varía entre las 900 y 1000, mientras que el que he hecho rara vez puede llegar a las 400.
Un dato importante son las lineas que se utilicen, por que cada espacio, cada interlineado, cada caracter es peso, podríamos sacrificar muchos espacios pero son útiles para desarrollar y comprender el código, pero hay veces en donde el método de desarrollo genera muchas lineas, por ejemplo no es lo mismo hacer algo con tablas que con un simple
<h1>.Mejora de símbología
En el ejemplo original se aprecian muchos símbolos como por ejemplo:
US$, DT, PJ, S.A., 22°.
Estos símbolos estaban mal ejemplificados, no gramaticalmente, sino que fueron mal programados, por que los lectores de pantalla y las personas que tienen un perfecto sentido de la vista no reconocen muchos símbolos, algunos son obvios, pero no siempre, no hay que fiarse, y definir estos símbolos con abreviaturas y acrónimos, esto beneficia sobre todo a los robots que buscan y analizan información en Internet. Los hemos mejorado, y hemos comprobado que a oído y vista mejora la calidad, además no malgastamos 1 byte en código XHTML en esta página.
Mejora de elementos gráficos
Esta claro que si hay algo que falta en este mundo es picardía para hacer muchas cosas con poca cosa… y hemos logrado muchos efectos visuales con unas pocas líneas de código, sin descuidar de la importancia semántica del documento. Un ejemplo lo podemos ver ahora en la página actual:
<spacer type="block" width="1" height="1"><br><body background="Index_data/fondo.png" leftmargin="0" topmargin="0" marginheight="0" marginwidth="0" bgcolor="#ffffff"><td width="607">Eso es una pequeña muestra del código que se ha mejorado, eso no existe más, todo tipo de atributo que agregue un aspecto gráfico utilizando HTML fue eliminado, erradicado totalmente, fuera del concepto, gracias a ello, nos hemos valido por CSS, que nos ha beneficiado el 100% de las cosas. Pueden ver que no he utilizado una etiqueta para hacer una línea, tampoco he utilizado
Peso de página
A nivel estadístico la página ha reducido drásticamente la mitad de su peso, incluso sin optimizar este ejemplo dobla el ahorro de bytes que el servidor debe enviar, esto es gracias a la correcta utilización de los estándares. También es funcional en los navegadores 5.x y 6, aunque posee funcionalidades extras si el usuario utiliza alguna versión 6.x de Netscape o Mozilla, Opera, de todas formas, ningún usuario queda desabilitado para utilizar este ejemplo si carece de los mismos.
No se ha utilizado ninguna línea de Javascript, tampoco se han utilizado atributo alguno de HTML para graficar sobre el ejemplo, todo es debido gracias a CSS.
Código XHTML y los sintetizadores de voces
El código de HTML ha mejorado notablemente, podrán notarlo cuando lo escuchen en un lector de pantalla, gracias a los atributos de lenguaje, las palabras extranjeras son pronunciadas correctamente en su idioma, los símbolos de monedas, abreviaturas y acrónimos también. Todos los enlaces tienen atributos y relaciones mejorados para la comprención y análisis de robots web y navegadores, dado el caso de la correcta utilización de las relaciones
rel="atributo". Los atributos visuales como las italicas fueron reemplazados por los énfasis, para darle un sentido y una razón a los lectores de pantalla para pronunciarlos distinto, lo mismo le ha pasado a las negritas que fueron reemplazadas por los<strong>, ahora los nombres propios, lugares, libros, etc. llevan etiquetas<cite>que me permiten darle más sentido a la frase o palabra.Espero que este curso sirva, tanto a la gente que desarrolla, como al diario LA NACION, para que mejore su aspecto y funcionalidad, ofreciendo un mejor servicio a las personas discapacitadas y al resto también. Una de las cosas que más deseo siempre es que una empresa recapacite y se dé cuenta que gente como yo u otros no hacen estas cosas solamente para molestar o desprestigiar, sino para ayudar… un lector hace poco dijo… en vez de decir que es lo que está mal porqué no ayudar a cambiarlo, si bien esa no es mi tarea por que nadie me paga por esto, lo he tomado como un reto y contento hice este artículo, lo hice por que el diario LA NACION se ha preocupado —o tiene la molestia de ser uno de los primeros en pensar en los usuarios— por hacer
algodiferente al resto, que sirva de ejemplo para las administraciones, gobiernos, diarios, revistas, portales, etc. que tanto deben mejorar y servir a las personas.Bibliografía
El artículo no está basado en ningún concepto escrito, pero la documentación que puedo ofrecer como material bibliográfico son las especificaciones web del W3C.
- [CSS2]
- “Cascading Style Sheets, level 2 (CSS2) Specification”, B. Bos, H. W. Lie, C. Lilley, I. Jacobs, 12 Mayo 1998. Disponible en: http://www.w3.org/TR/REC-CSS2
- [HTML]
- “HTML 4.01 Specification”, D. Raggett, A. Le Hors, I. Jacobs, 24 de Agosto 1999. Disponible en: http://www.w3.org/TR/html40/
- “Extensible Markup Language (XML) 1.0 Specification”, T. Bray, J. Paoli, C. M. Sperberg-McQueen, 10 de Febrero, 1998. Disponible en: http://www.w3.org/TR/REC-xml
- [XMLNAMES]
- “Namespaces in XML”, T. Bray, D. Hollander, A. Layman, 14 de Enero, 1999.
- [CHTML]
- “HTML Compacte per a Petites Compilacions d’Informació“, Nota del W3C, T. Kamada, 9 de
Febrer de 1998. Disponible en: http://www.w3.org/TR/1998/NOTE-compactHTML-19980209 - [GUIDELINES]
- “Guia d’HTML 4.0 per a Accés Mòbil, Nota del W3C, T. Kamada, T. Asada, M. Ishikawa, S. Matsui, eds., 15 de Març de 1999. Disponible en: http://www.w3.org/TR/NOTE-html40-mobile/.
- [WCAG10]
- “Guia d’Accessibilitat per a Contingut Web 1.0“, Recomanació del W3C, W. Chisholm, G. Vanderheiden, I. Jacobs, eds., 5 de Maig de 1999. Disponible en: http://www.w3.org/TR/1999/WAI-WEBCONTENT-19990505.
54 Respuestas a la entrada “Un paso hacia la accesibilidad en la web”
Escrito por Gonzalo
Enero 2nd, 2004 at 2:20 pm
Soberbio. Tan sólo un comentario: codifica adecuadamente las letras acentuadas, ya sabes en vez de “á” usar “á”.
Escrito por mini-d
Enero 2nd, 2004 at 3:05 pm
Gonzalo, las letras acentuadas con á é í ó ú, no hace falta aclararlas con entidades HTML.
Si estuviera hablando de caracteres como à , ò, Ã, â, ê el sistema las convierte automáticamente.
Si encuentras algo fuera de lugar, por favor me lo dices que lo corregimos.
Escrito por mini-d
Enero 2nd, 2004 at 3:12 pm
Para los usuarios que utilizan IE, como IE no soporta el modo clipping que tienen el 80% de los navegadores, el contenido se va fuera de la borda por el ancho de los párrafos @pre@, de hecho, la página se acomoda debajo del menú.
Es una pena que los usuarios de IE tengan que sufrir esto, pero no pienso complicar la visualización del código.
Como ventaja, pueden imprimirse el artículo donde no tendrán problemas.
Paz entre los colegas.
Escrito por Anónimo
Enero 2nd, 2004 at 3:39 pm
que buen articulo
me va a ser de mucha utilidadÂ
esta todo muy claro y muy digerible
se adradece y se agradeceran nuevos artículos de este tipo
thks
Escrito por mini-d
Enero 2nd, 2004 at 4:06 pm
Hay notas sin documentar todavía del ejemplo que hice, pasaré a anotarlas:
# Ambas versiones tienen variaciones del contenido, por ejemplo en el ejemplo original se puede ver sólo un enlace que está nombrado como “Instructivo” mientras que mi ejemplo tiene tres enlaces, esto fue hecho gracias a pruebas en trabajos anteriores hemos visto que los usuarios tienen dificultad al encontrarse los primeros enlaces, de hecho el primer enlace que tienen que leer es el instructivo, luego buscar y contactar como los más importantes.
# Hay una pequeña variación de color, sobre todo en los enlaces, gusto personal fue, pero se ha respetado la gama de colores bastante, los enlaces visitados van en violeta y los “hover links” van con un pequeño y suave.
# Hay zonas como “Otras noticias” que tenían título y un enlace de “ir a la nota”, he dejado los enlaces de “ir a la nota” siempre y cuando tengan texto introductorio debajo del título, por que volver al enlace de la nota cuando se ha terminado de leer el contenido es embarazoso, ahora para las notas que son sólo un título queda redundante y son muchos focos por navegar con el teclado.
# Hay otra cosa importante, y son los tamaños de las tipografías, en el ejemplo original, salen tres enlaces para agrandar el título, esto me ha parecido redundante, dado que el navegador tiene controles más cómodos para hacerlos, de hecho si un discapacitado navega, prefiere utilizar una combinación de teclas. Además en mi ejemplo las medidas están especificadas en @em@ para la pantalla y @pt@ para la impresora.
# Otro detalle bonito es que, he reorganizado todas las notas dentro de sus correspondientes categorías, imagino que por algún tipo de traba o impedimento la gente del diario LA NACION no puede reorganizarlas en grupos, pero esto mejora la comprensión del texto, leer todos los titulares de “información genereal” y luego leer todos los de “política” es más comodo que leer uno de “información genereal” y al rato dos de “política” y luego uno de “información genereal” de nuevo.
# Ambas plantillas tanto la de XHTML como la de CSS validan contra los estándares W3C, mientras que el ejemplo original no, no he tenido tiempo de revisar línea por línea los errores, pero básicamente hay cosas como @spacer@ que no existen para el navegador, si se arreglan pequeños errores el validador deja de tirar 1000 lineas de errores.
Escrito por xoan
Enero 2nd, 2004 at 4:53 pm
Realmente instructivo y entretenido, aunque existan alguno fallos en la redacción de algunos párrafos y bloques de codigo, pero el conjunto global es totalmente entendible y asimilable.
Por cierto, la tarea de programar, pero no lo que sería la plantilla, sino le código PHP(Hipertexo PreProcesado) sería otro cantar, no? y la forma de llamar a los archivos mediante URL(Uniform Resource Location)s dinámicas hacen que el documento no valide debido a los signo de *?* y *&*, creo…
A ver si me lo podeis aclarar, gracias. Un saludo.
Escrito por mini-d
Enero 2nd, 2004 at 5:00 pm
En efecto, tendrían que mejorar la forma en que salen los enlaces, para comvertir los @&@ a una entidad HTML, o escapar las URLs en otro formato.
Si has notado algún error en la redacción del artículo, me puedes enviar tus sugerencias utilizando “el formulario de contacto”:/contactar/
Saludos.
Escrito por kelembor
Enero 2nd, 2004 at 5:14 pm
Vamos a ver. Ante todo hay que ser practico.
¿Cuantos ciegos/deficientes visuales ven esta web?.
Tanto trabajo para un porcentaje tan pequeño?.
En el mundo empresarial hay que reducir costes y adaptarse a la realidad del mercado.El “ir de pR0″ normalmente cuesta dinero.
No digo que hay que hacer las paginas de cualquier manera, sino que hay que encontrar el equilibrio.
Por mas que nos duela hay que trabajar para la mayoria. Los talibanismos y demas sobradas estan de mas si no tienen una aplicacion directa y un uso real. Es gastar tiempo (y por tanto dinero) en hacer unas funcionalidad inutiles y para un nº de usuarios inexistente o casi.
Escrito por AlmaOscura
Enero 2nd, 2004 at 5:46 pm
¿Cómo consigo el efecto del target=”_blank” en un enlace si usar ese atributo al no ser válido en XHTML?
Escrito por viktor
Enero 2nd, 2004 at 5:53 pm
mi amigo kelembor creo que te equivocaste de sitio web por que si deseas sitios de esa forma mejor entra a un foro de frontpage… seguro encontrarás todo allí y para el porcentaje y el bolsillo que tu quieres.
la idea es la accesibilidad y desarrolladores que ponen de frente sus intereses financieros antes que el progreso de las tecnologias hacen que sigan apareciendo sitios mediocres y soluciones a medias.
a minid felicidades por tan buen trabajo.
saludos
Escrito por Fabio
Enero 2nd, 2004 at 6:01 pm
adjunto mi pregunta a lo de AlmaOscura, que uso mucho el _blank y por algo debería reemplazarlo, ¿no? y no me digan que no existe o hay que usar Javascript, eso demostraría un huequito enorme! pero bueno, si no queda otra… (detesto el javascript para algo como eso)
Kelembor, el usar o no las boludeces de accesibilidad va en cada uno, si tu cliente te pide que la página la puedan ver hasta los ciegos, y no sabes que esto existe, no podrás responder al pedido del cliente. Si al cliente ni le importan, bueno, es más fácil recortar que no saber y tener que re-informarse por no tenerlo en cuenta, que se yo, es un tómalo o déjalo esto
Escrito por Fabio
Enero 2nd, 2004 at 6:03 pm
ah, diego, te dejo un desafío para un futuro, el XHTML y CSS de: http://www.fabio.com.ar/postrev/
que lo voy a lanzar en poco tiempo y no estaría mal que cumpla con alguna norma, jejeje, podría hacer hasta el concurso entre diseñadores, luego el nombre y mail va al copyleft, es GPL así que cada aporte lo sumo
Escrito por xoan
Enero 2nd, 2004 at 6:06 pm
Creo que te equivocas en eso *kelembor*, no es malgastar nada si sabes que no vas a tener que reestructurar ni reescribir todo el código, mas adelante, cuando surjan varias plataformas para el soporte de archivos de hipertexto, en cuyo caso, de no haberlo hecho bien ahora, si que te va a salir por una pasta…
Aunque lo parezca, no cuesta tanto atribuir valores a las etiquetas, y si lo haces por norma, acabas acostumbrandote y poniéndolos por inercia, siempre y cuando tengas clara la estructura semántica de la web, y sepas qué es y cómo va a actuar cada uno de sus elementos.
En si, el lenguaje de hipertexto es como cualquier lenguaje de programación, lo que pasa es que como un archivo escrito en HTML(Hipertexto de Lenguaje de Marcas) no “da” errores al ejecutarse, sino que se evalua en tiempo real según se va descargando y los errores se muestran como acumulativos, nos hemos acostumbrado a no cerrar ni atribuir de valores correctamente dichas marcas, pensando que bueno, como total se va a ver… y no tendría que ser así. Debería de haber existido siempre algún metodo de evaluación como ocurre con los lengujes de script o de programación orientada a objetos, que si contiene errores, no se compila y/o no se ejecuta.
Y luego le echamos la culpa a los navegadores…
Solo son cosillas sin importancia, pero a ver si tengo un ratin y te envio una fe de erratas ;
Escrito por Alex
Enero 2nd, 2004 at 6:16 pm
Kelembor: No estoy de acuerdo. Según lo que tú dices, por ejemplo en una ciudad, no habría que habilitar accesos para discapacitados en edificios públicos, ni en pasos peatonales porque la relación “gente normal” / discapacitados es desmesurada y desproporcionada …
Obviamente no has comprendido de que va la cosa. Estandarizar y hacer accesible un sitio no significa invertir más dinero y tiempo, todo lo contrario. Quizás el tema pase porque hasta el día de hoy hay demasiada gente ganándose la vida con el diseño web sin siquiera comprender el significado de cada tag (y cosas aún peores), entonces les resulta mucho más sencillo hacer las cosas mal que invertir su tiempo en aprender a hacerlas bien. Practico sí, mediocre no!
Escrito por wismar
Enero 2nd, 2004 at 7:02 pm
Hola que tal Diego, he estado leyendo tu weblog desde hace tiempo y te agradezco mucho por lo que he aprendido en tan poco tiempo. Realmente he estado haciendo las cosas mal.
El motivo de este post, ademas de saludarte, es pedirte que publiques algo - en cristiano, como tu lo haces - sobre los DTD, sus atributos y uso.
Tambien te pido que hables un poco sobre los Box Model, dado que desde que vi CssZenGarden y Design Dojo he quedado maravillado por la calidad de su diseño.
Gracias por la atencipon prestada!!!
Escrito por mini-d
Enero 2nd, 2004 at 7:06 pm
Wismar, prometido.
Kelembor, te comento que esto me ha tomado exactamente 3 horas hacerlo, no es mucho trabajo, el trabajo fue _escribir el artículo_, revisarle toda la ortografía posible, que los ejemplos de código fueran notablemente fáciles de entender.
Hacerla al revés de los estándares me llevaría más tiempo. Más etiquetas por controlar, etc.
Ah, y me olvidaba, Dios no quiera que te quedes ciego o inválido… te acordarás de muchos desarrolladores de por vida.
Saludos y a recapacitar.
Escrito por argie01
Enero 2nd, 2004 at 8:06 pm
Hola Diego, gracias miles por tanta paciencia al escribir estas notas que a uno le abren la cabeza…
Me estoy metiendo de a poco en el diseño web con css, y estoy muy interesado también en XML.
Qué te parece meter alguna parte de tu weblog con comentarios de libros buenos para los temas que tratás ?
Yo por ej. estoy por comprarme un libraco que vi en http://www.sitepoint.com que habla de diseño con css, y la verdad que aunque leí una parte que dejan bajar y me parecióp buenísimo, siempre sería mejor que un experto como vos diera su parecer, o alguna guía de libros a leer para diseño web actual.
Gracias de nuevo che.
Escrito por mort
Enero 2nd, 2004 at 8:47 pm
Almaoscura/Fabio, target solo está eliminado en XHTML estricto (tb en HTML estricto), así que si lo necesitais lo sensato es usar un DOCTYPE en el que target sea válido. Por ejemplo, XHTML transicional os vendría de perlas.
Escrito por mort
Enero 2nd, 2004 at 9:06 pm
Diego, muy buen artículo
Solo por fastidiar, no estoy seguro de que tu utilización de blockquote, por ejemplo, en el apartado “¿No tienes un servidor de trabajo?” sea muy correcta. No es una cita, sino que buscas una separación estructural o visual de un “aparte” en el flujo del texto. Creo que un parrafo estilado adecuadamente es más que suficiente, sin necesidad de crear citas q no son tal
Escrito por kenshy
Enero 2nd, 2004 at 9:32 pm
Antes que nada felicitarte mini-d por el pedazo de artículo que te has currado. Así como el esfuerzo tan grande que dedicas para dar a conocer que es posible una web mejor en todos los sentidos.
Mi único pero al artículo es que has caido en el mismo error que la gente de la nación. Me explicó, has usado para el texto la url que indican en la nación que es accesible en vez de usar su url principal. Que sería lo deseable, por muchos motivos ahora mismo a la cabeza solo me viene el que no es necesario crear 2 páginas distintas para mostrar los contenidos.
kelembor, que más da si entra uno entre mil millones, si practicamente respetando los estandares tienes casí asegurada la accesibilidad. Además el porcentaje es bastante alto si no ercuerdo mal ya mini-d hablo aquí precisamente de ese porcentaje creo que superaba el 20%. Que no te convence eso, bueno tal vez si sacas tu bara de medir y miras lo que pesa una pagina y la otra. entonces te darás cuenta de otra de las grandes ventajas que tienen los estandares en cuanto al uso del ancho de banda se refiere. Explicales eso a tus clientes y seguro que querrán que hagas una web de PRO.
AlmaOscura, tienes que usar como dice Jabio javascript supongo que algo como onclick=”window.open(this.href); return false”. Eso me recuerda, alguien sabe si es posible con javascript abrir la nueva ventana en un tabwindow (no se como se llama) es que quedaría muy bien poder hacer una cosa de esas en navegadores que tengan esa opción Opera, Mozilla,…
Escrito por Zack
Enero 3rd, 2004 at 1:00 am
Si te esfuerzas un poco menos que en escribir este artículo, tal vez puedas hacer este sitio (minid) accesible para las personas que usan IE, ya que se ve terriblemente mal. ¿No es acaso el objetivo hacer que los sitios se vean bien?
Suerte
Escrito por wismar
Enero 3rd, 2004 at 2:56 am
Gracias Diego, aquí desde mi Venezuela natal te lo agradeceré muchísimo.
Por otra parte me gustaría tomarme el atrevimiento de decirle a Kelembor que internet es un medio de comunicación masivo y para las masas. Esto supone una masificación - y me disculpan la reiteración del término - de la información, no solo a nivel de contenido, sino a nivel de accesibilidad.
Estamos a tiempo de reflexionar acerca de nuestra postura con relación a aquellos que poseen limitaciones, es hora de pensar en ellos. Internet no nos pertenece a unos, nos pertenece a todos y todos tenemos derecho a sus beneficios.
P.D: Disculpen si me extendí demasiado, pero creo que era necesario decir esto. Gracias por la paciencia.
Escrito por Fabio
Enero 3rd, 2004 at 3:51 am
jeje zack te la dijo Diego, :p si este sitio no se ve en IE es porque no es accesible, tiene un grave error de accesibilidad :D:D jajaja, y lo peor para vos es que, TIENE RAZON!
eso siempre que pude te lo dije, yo ahora porque uso mozilla pero en el trabajo uso IE y tu site se ve horrendo…
Escrito por manuel razzari
Enero 3rd, 2004 at 9:05 am
Diego, fantástico paso a paso. Espero que la gente de La Nación lo pueda tener en cuenta porque sería un avance muy positivo.
Me pareció especialmente interesante el uso de las definition lists, creo que lo voy a copiar para un site que estamos armando.
Comentarios:
1. Me sorprende que uses left/right como nombres de los divs. ¿Qué tal “texto/menu”?
2. Ya comenté aquí mismo el problema con usar “es-ar” para el idioma. Usar sólo “es”.
3. ¿Servidor de trabajo? ¿Necesito correr localmente Apache, PHP y MySQL para probar estos ejemplos? Ahh complejidad…
Escrito por Gaspar
Enero 3rd, 2004 at 9:58 am
Te felicito sinceramente. Cuando hiciste aquel post sobre el sitio de La Nacion me propuse hacerlo validar y arreglar algunas cosas que me chocaban, pero no quedo muy bien al final
Anyway, te queria preguntar algunas cosas que en su momento yo hice de un manera y veo que has hecho de otra.
Como detalles extremistas, muy de quisquilloso:
- La parte de meteorologia, no se podría usar una “definition list”?
- En la parte de carta de lectores, no es mejor usar una lista?
Por otro lado, las noticias en las que respetaste el link “Ir a la nota”… ¿no atenta contra la accesibilidad tener dos links distintos hacia una misma pagina o peor, varios links iguales a diferentes paginas? ¿No es redudante el “ir la nota”?
Y algo que no entendí su razón de ser: Por que los titutos de la lista de secciones (la de la izquierda) tienen un atributo href? A donde planeas que conduzcan?
A pesar de todo, te felicito nuevamente.
Escrito por argie01
Enero 3rd, 2004 at 12:42 pm
Fabio, ¿ con cuál IE no se ve bien ?
Porque yo tengo el IE6 de XP con todos los services packs y la página se ve exactamente igual que con mi Opera: es decir, perfectamente.
salu2
Escrito por Sergi
Enero 3rd, 2004 at 1:08 pm
Diego, creo que hay una cosa que no has explicado nada bien. El paso 3. El nombre de los bloques nunca debe ser presentacional, sino lo mas estructural o semantico posible. Asi, en lugar de left y right deberias haber usado algo como “noticias” y “menus”. Si algun dia cambias la CSS para darle otro estilo, imagina que los menus van arriba y el texto debajo, no tienes porque ir cambiando la plantilla XHTML.
AlmaOscura: si tu web requiere ser strict (eso es algo que debes deliberar tu mismo) esntonces un poco de javascript no creo que haga daño. Algo como:
med = document.getElementsByTagName('a'); for (i=0;iEscrito por Sergi
Enero 3rd, 2004 at 1:12 pm
¿por que coño se previsualiza bien y luego no se ve el mensaje entero? Termino lo cortado:
med = document.getElementsByTagName('a'); for (i=0;iRequiere una class="ext" a todos los enlaces externos. Otra opcion seria no usar class y revisar si el href apunta a una url que no coincide con tu dominio. Variaciones mil, vamos.Escrito por jose florido
Enero 3rd, 2004 at 5:56 pm
Muy buen trabajo y una lectura muy agradable, gracias Diego
A Kalembor solo decirle que repite exactamente todos los topicos sobre los que habla Zeldman en su libro
Escrito por mini-d
Enero 3rd, 2004 at 7:38 pm
bq. Solo por fastidiar, no estoy seguro de que tu utilización de blockquote, por ejemplo, en el apartado “¿No tienes un servidor de trabajo?” sea muy correcta. No es una cita, sino que buscas una separación estructural o visual de un “aparte” en el flujo del texto. Creo que un parrafo estilado adecuadamente es más que suficiente, sin necesidad de crear citas q no son tal.
En parte tienes razón, es una forma de “citar” tu propio contenido, aunque visualmente puedo armarlo a partir de un párrafo he preferido hacerlo con citas, lo mismo cuando cito bloques de código.
bq. Mi único pero al artículo es que has caido en el mismo error que la gente de la nación. Me explicó, has usado para el texto la url que indican en la nación que es accesible en vez de usar su url principal. Que sería lo deseable, por muchos motivos ahora mismo a la cabeza solo me viene el que no es necesario crear 2 páginas distintas para mostrar los contenidos.
Comprendo realmente tu punto de vista, explico, el artículo no está enfocado a hacer una página accesible que sea de las mismas características, sino, que el artículo ha tomado un ejemplo que se supone que fue armado con esos ideales. En su día he hablado con la encargada del proyecto de esta parte de LA NACION y le he comentado que el primer error (lo he dicho en un post) es hacer una página –la famosa puerta alternativa– para los discapacitados, en parte es discriminar en parte no… antes que nada…
Creo que fui claro en el porque del elegir este sitio, por que era en teoría fácil de armar y comprender “por dentro”, en cambio si tuviera que hacer un sitio más complejo, serían muchas lineas demasiadas por comentar en el artículo, además no ayuda tanto como explicar siempre por lo básico… empieza primero haciendo una casa, luego una mansión y al final puedes comenzar a hacer rascacielos.
El ejemplo de LA NACION me parece ideal para comenzar a ver posicionamiento de cosas, enlaces y temas relacionados a la accesibilidad.
bq. Si te esfuerzas un poco menos que en escribir este artículo, tal vez puedas hacer este sitio (minid) accesible para las personas que usan IE, ya que se ve terriblemente mal. ¿No es acaso el objetivo hacer que los sitios se vean bien?
Suerte
Mi objetivo es ser parcial con todos, te explico, no me interesa que el 100% de los usuarios de Netscape 2 puedan ver los colorcitos que uso, y la posición perfecta de las tipografías en pantalla, en tal caso, esta queja puedes dirigirla a Microsoft en este caso que es el desarrollador del IE, un navegador que utilizo y que desgraciadamente tengo instalado y corriendo ahora 4 versiones de Internet Explorer (de la 3 a la 6.01) y hay diferencias entre ellos, por lo visto este esquema que utilizo no beneficia tanto a los usuarios de Internet Explorer 5.5 para abajo, pero si beneficia más al resto que son bastantes.
Por cierto, si vez mal este sitio, puedes imprimirte cada página escrita, también puedes leerlo perfectamente desde una consola UNIX, una Palm y si realmente quieres verlo en todo su explendor puedes utilizar otro navegador gratuito.
Yo programo bajo los estándares no bajo los valores de mercado o bajo las normas impuestas por un navegador.
bq. 1. Me sorprende que uses left/right como nombres de los divs. ¿Qué tal “texto/menu”?
Esto acostumbrado a utilizar left / right por que tengo confianza en la posición única de las columnas, aunque tienes en parte bastante razón una de las ventajas de CSS es que si un día te cansas de la columna “menu” a la izquierda la pongas a la derecha, de modo que cuando alguien vea el código en CSS no se confunda de lados. Buen punto.
2. Ya comenté aquí mismo el problema con usar “es-ar” para el idioma. Usar sólo “es”.
Esto es algo que estuve mirando, por ejemplo, si utilizas “en” solo, habla en inglés que tienes predeterminado, por ejemplo yo utilizo JAWS y habla el inglés americano pero si configuro el acrónimo para que sea “en-uk” cambia al inglés británico… lo mismo pasa con los castellanos, hay dos castellanos disponibles el americano (nuestro) y el ibérico (España) y realmente cambia la sensación.
Pero aparte de esto, es una buena forma de clasificar la etimología de los documentos, si todos son es, todos son castellanos pero… _¿De qué zona son realmente?_
3. ¿Servidor de trabajo? ¿Necesito correr localmente Apache, PHP y MySQL para probar estos ejemplos? Ahh complejidad…
Es complejo si no trabajas, y quieres practicar, aunque es lo recomendable, es más cómodo aprender a montarse un Apache con PHP (a mí no me ha costado mucho) y empezar a probar no una sino varias páginas, cada una en su carpeta de proyecto etc. Es obviamente un opcional.
bq. Por otro lado, las noticias en las que respetaste el link “Ir a la nota”… ¿no atenta contra la accesibilidad tener dos links distintos hacia una misma pagina o peor, varios links iguales a diferentes paginas? ¿No es redudante el “ir la nota”?
Vale, imagina que tu lees con un lector de pantalla, comienzas escuchando que es un enlace, que va a tal dirección (que rara vez adivinas a donde iras) sigues escuchando el título de la noticia, lees un párrafo introductorio, luego lees que es un enlace que te lleva a la misma dirección pero esté dice “ir a la nota”, es diferente… deberías volver atrás por cada vez que quieras ir a una nota, conviene si hay un texto importante después del título poner un enlace…
Como verás en el resto de las noticias no existen enlaces de “ir a la nota” por que el mismo título de la nota es el enlace pero como no llevan textos o estractos de la noticia es menos complicado volver atrás, incluso muchos lectores cuando terminen de leer el titulo si presionas enter vas a la nota, que es el efecto que quise lograr en este ejemplo.
Sergi, concuerdo totalmente contigo, la semántica no pasa por el nombre de las variables, pero si pasa por la forma de trabajar de todos, más arriba lo pude comprobar, fue un detalle importante.
Otra cosa, los enlaces externos, pueden hacerlos como los hago yo aprovechando los atributos semánticos y un poco de ayuda de DOM, si es rel=”help” sale fuera, si es rev=”help” es interno…
Es fácil… y no hace falta ponerles class=”…”
Saludos.
Escrito por mini-d
Enero 3rd, 2004 at 8:09 pm
Aclaro otra cosa, leo siempre este diario sobre todo utilizando esta versión así no me cargan muchas cosas y las noticias bajan en un segundo…
Escrito por Aleks
Enero 3rd, 2004 at 10:37 pm
Excelente nota Diego! Seguí así!
Con cada articulo que plasmás,voy aprendiendo y teniendo una idea de como enfrentar algunas cosillas para mejorar HTML sucio en un HTML funcional y claro. Es un excelente referente de diseño y usabilidad lo tuyo.
Escrito por eMe
Enero 4th, 2004 at 5:51 am
En la oportunidad de la crítica al Diario La Nación, me he quejado de que la tuya era una crítica sin aportes.
Hoy rectifico mi opinión, puesto que con este tutorial se entiende (un lego como yo, claro) perfectamente cuál es el “nivel de accesibilidad” pretendido, si cabe.
Gracias por el artículo.
Escrito por Fabio
Enero 4th, 2004 at 6:27 am
Otra cosa, los enlaces externos, pueden hacerlos como los hago yo aprovechando los atributos semánticos y un poco de ayuda de DOM, si es rel=Âhelp sale fuera, si es rev=Âhelp es internoÂ
Es fácil y no hace falta ponerles class= Â
eweeh como es eso?? :D:D
Escrito por xoan
Enero 4th, 2004 at 9:43 am
mirando su hoja de estilos te puedes encontrar con esto:
quiere decir que si pones los enlaces con el atributo
rel="help"orev="help", automaticamente te aparecera la imagen correspondiente de fondo, aunque no funciona para IE.Escrito por Sergi
Enero 4th, 2004 at 1:21 pm
que yo sepa (puedo estar equivocado) rev y rel no son para eso.
Escrito por Sergi
Enero 4th, 2004 at 1:50 pm
¿Algo mas elegante que esto? Ahora no hacen falta classes, asi no tienes por que añadir codigo a tus enlaces. Y repito que creo que rel y rev no se deben usar para esto, asi que ahora tampoco hacen falta:
med = document.getElementsByTagName('a'); for (i=0;iEscrito por Sergi
Enero 4th, 2004 at 1:51 pm
joder con el formulario… a ver si ahora se deja (en el preview funcionaba) ;):
med = document.getElementsByTagName('a'); for (i=0;iEscrito por filete
Enero 4th, 2004 at 2:50 pm
Buenas, antes de nada quería decir que el artículo está muy bien porque es eminentemente práctico.
Tengo una duda respecto al código CSS que has utilizado, y es el hecho de que hayas especificado una anchura de 755px.
Supongo que es para que cualquier persona, use la resolución que use, pueda ver la página, pero… ¿a resoluciones más altas no queda un hueco un poco antiestético a la derecha? ¿Hay alguna forma de que se tenga control total sobre los divs y no haya tanto espacio desocupado en la página?
Gracias y un saludo.
Escrito por mini-d
Enero 4th, 2004 at 7:12 pm
Sin dudas había optado por un método que es la anchura libre de la página, pero no quería deformar mucho el concepto.
Así que lo he dejado en un tamaño fijo, despues de todo es CSS, cambiando 2 líneas se puede aplicar @max-width:@ a las 3 divs principales.
Luego tenéis que lidiar con IE que no soporta @max-width:@ pero hay un hack que lo permite con DOM.
Escrito por mini-d
Enero 4th, 2004 at 7:28 pm
Sergi, si la lógica no me falla, los atributos rev y rel están hecho para diferenciar relaciones entre documentos, por ejemplo, si quiero relacionar un documento alternativo a este post (por que está en PDF por ejemplo) la relacion será alternate pero puede que me haga mi propia relación ver XFN en Google saldrán buenos resultados.
En minid.net para los enlaces externos que proveen una “ayuda” adicional a los temas que estoy hablando utilizo @rel=”help”@.
Se puede matar dos pájaros de un tiro si quiero hacer que los enlaces externos se abran en otra ventana con ayuda de DOM.
Escrito por chinaski
Enero 4th, 2004 at 8:15 pm
mientras mas aprendo, mas grande es mi desconocimiento
gracias por la nota. keep rollin´
Escrito por Sergi
Enero 4th, 2004 at 8:47 pm
Pues me he vuelto a leer la especificacion y sigo sin entender para que sirve rel/rev.
“Se puede matar dos pájaros de un tiro si quiero hacer que los enlaces externos se abran en otra ventana con ayuda de DOM”
Justamente el ultimo script que he puesto, sin necesidad de rev/rel ni nada raro.
Escrito por xoan
Enero 4th, 2004 at 9:19 pm
Diego, lo que dices del XFN(XHTML Friends Network) es realmente interesante, me ha aclarado unas cuantas dudas sobre el uso del atributo @rel@, y creo que es bastante acertado usarlo de la forma que lo usas. Tampoco digo con esto que haya que abusar en lo respectivo a dar valores inapropiados, pero si un poco de texto que lo _relacione_ con el vínculo al que nos dirigimos.
Por lo tanto, no creo que esté mal atribuir a un enlace con @rel=”external”@ o @rel=”pdf”@, o incluso @rel=”zip”@, p.ej.(por ejemplo), no? Ya que son descripciones cortas que nos pueden dar una idea del tipo de relación. mas bien con el destino en si que con el propio vínculo, pero tenemos la posibilidad de semantizar dicho vínculo con el atributo @title@ y con el propio elemento.
No se si lo que digo es correcto, pero por lo menos a mi me lo parece
Por cierto, no me quedó claro lo de
bq *mini-d dijo:*
Se puede matar dos pájaros de un tiro si quiero hacer que los enlaces externos se abran en otra ventana con ayuda de DOM.
Escrito por Gonzalo
Enero 5th, 2004 at 11:53 am
Sobre los acentos… (y perdón por mi insistencia), sí que es necesario poner “& a a c u t e ;” en vez de “á”, ya que si nuestro navegador no entiende el idioma castellano (he oído el caso de un Mac con explorer 5), no aparecen esas letras en el navegador, simplemente las ignora. Es por tanto recomendable hacerlo “correctamente”. El problema con los acentos apareció en la lista accesoweb. El problema venía porque un mac. En este mensaje aparece una solución, y en este otro vemos que efectivamente se ha solucionado.
Y sí, como dices, es cierto que no te da errores de validación al probarlo en el validador del W3C, pero recuerdo que en algún validador (aunque no recuerdo cuál), me daba un error diciendo que no utilizaba carácteres ASCII válidos, y era por los acentos y las “ñ”.
Y como tirón de orejas (crítica) a la accesibilidad de este sitio, a ver si te decides a usar valores porcentuales en vez absolutos para posicionar capas. Crítica que debe estar mitigada ante la admiración que tengo por esta bitácora, je je.
Escrito por xoan
Enero 5th, 2004 at 4:15 pm
Ya que tocais el tema de las tildes, querria saber cual seria la forma mas correcta de escribirlas, porque estoy haciendo una pequeña funcion dentro de “Textile(A Humane Web Text Generator)”:http://www.textism.com para reemplazar las vocales tildadas por sus entidades en HTML(Lenguaje para el Formato de Documentos de Hipertexto).
El caso es que viendo “Herramienta ASCII / ISO 8859-1″:http://www.minid.net/utilidades/ascii/ascii.php de mini-d, no se si usar la traduccion a ASCII o la traduccion a ISO 8859-1, es decir, si
áseriaáoá.La funcion es un simple array asociativo con la clave como la vocal tildada y el valor su correspondiente entidad; luego un bucle foreach para reemplazar clave por valor y listo. Supongo que ya estar hecho, pero asi me tiene mas gracia
A ver si me echais un cable, gracias.
Escrito por Gonzalo
Enero 5th, 2004 at 5:21 pm
Siguiendo con las tildes… Xoan, yo preferiría la forma & a a c u t e ; más que nada porque si miras el código fuente para algo, no es cuestión de llevarse un susto leyendo, je je.
Yo trabajo con el HomeSite y tiene una función para reemplazar casi todos los carácteres extraños (bueno, acentos y eñes).
Saludos.
Escrito por xoan
Enero 5th, 2004 at 6:48 pm
yo por ahora tengo las vocales acentuadas, y ya me canse, otro dia sigo con el resto. el rollo es muy sencillito:
y luego simplemente la llamas dentro de la funcion @textile()@ de esta forma: @text = cambiaTildes($text);@. Yo la llamo justo al final del todo, para que no tenga malos rollos con el resto, y listo. Otro dia continuo rellenando el @array()@
Escrito por mort
Enero 5th, 2004 at 9:26 pm
Sergi, rel y rev añaden más significado al enlace. Tu script da la funcionalidad pero no “engancha” con el significado. Es decir, que tu método me parece más comodo y el de los atributos más frikielegante
Yo la verdad es que no conocía “rev”. He entendido que marca la relación del enlazado con el enlazante, pero desde el punto de vista del segundo ¿no?
Es decir, que lo tendríamos que implementar así (corregidme si me equivoco)
* siendo padre.html
{a href=”hijo.html” rel=”hijo” rev=”padre”}hijo{/a}
Escrito por Specka
Febrero 11th, 2004 at 9:14 am
Klembo: Casi mejor que a los disminuidos fisicos, a aquellos que nazcan o crezcan con problemas o taras (segun tu vision de la vida empresarial) les asesinemos. No son rentables comercialmente.
Es posible incluso, que alguien decidiera que tu tampoco eres rentable empresarialmente.
COn mentalidades como la tuya, me doy cuenta de que el sistema educativo a fallado.
Escrito por Trotamundos
Junio 21st, 2004 at 11:42 pm
Tengo un serio problema. Resulta que estoy haciendo una web en xhtml strict. Lo he validado y me sale que es un código correcto. Vale. Pues ahora, si le meto código php y lo paso por el validador de http://www.W3.org me salen multitud de errores, todos ellos referidos al código php. Y me pregunta es la siguiente: ¿Hay alguna manera de que el código php pase el validador? Teniendo en cuenta que el xhtml es correcto y que la programación php funciona sin problemas.
Muchas gracias de antemano. Espero ansioso una respuesta.
Escrito por ignacio
Julio 30th, 2004 at 2:56 am
Trotamundos: Deberías comprobar que PHP no este “tirando” errores, y de no ser así, que todo el codigo que genera el php sea xhtml strict. comproba como usas los includes y demas…
Es decir, PHP no es visible por el validator de la W3C, ese validador solo lee html.
Escrito por Leandro
Septiembre 22nd, 2005 at 8:51 pm
Estoy viendo este artículo en Firefox y ocurre algo inesperado, a partir del subtitulo “Paso 5″ las palabras cambian a un tamaño mas chico.
Escrito por Leandro
Septiembre 22nd, 2005 at 8:56 pm
También agrego que los enlaces no andan, sobre todo me interesaría ver los resultados.
No quiero dejar de agradecerte por este artículo ya que me hes de mucha ayuda (por este motivo es que por ahi uno se pone un poco molesto).
Gracias y saludos, desde Córdoba - Argentina te leemos con mucha atención.