Accesibilidad para Desarrolladores
Soy Valeria Rocha
Desarrolladora de Software
Estudiante de Ingeniería Informática en la Universidad de Buenos Aires.
Mentora de introducción a la programación en la Fundación Itgrarte.
Formo parte de DALAT.
2
@avaltenea
Soy Henry Tong
Desarrollador de Software
20+ años en proyectos de software en diferentes roles (Desarrollador, Líder Técnico, Arquitecto)
Actualmente Backend Developer en la empresa Patagonian en Argentina
3
AGENDA
4
OBJETIVO DE HOY
Aprender guías y buenas prácticas para desarrollar webs accesibles
Nada sobre nosotros sin nosotros.”
6
“
Tecnología
Asistiva
7
Desafíos que enfrentan los usuarios
8
Desafios: Visual
9
9
Desafios: Auditiva
10
10
Desafios: Motriz
11
11
Desafios: Cognitiva
12
12
Buenas prácticas en el código
Codificando HTML accesible
13
DOM y árbol de accesibilidad
14
https://blogs.intuit.com/blog/2021/01/12/why-the-accessibility-tree-is-key-to-understanding-accessible-applications/
HTML - Estructura básica
15
<html lang="es">
<head> <!–– estilos, metatags, scrips ––>
<title>Título</title>
<meta charset="UTF-8">
</head>
<body>
<h1>Encabezado principal</h1>
<p>Cuerpo</p>
</body>
</html>
Noten los atributos lang y charset
HTML - Landmarks
16
<header> Encabezado
<nav> Enlaces de navegación
<section> Secciones de un documento
<aside> Contenido adicional (barra lateral)
<footer> Pie de página
HTML - Foco y orden
17
Agregado de alt en imágenes
18
<img src=”mi_imagen.jpg” alt=”Texto alternativo”>
Las imágenes decorativas deben tener alt=”” (vacío)
http://diagramcenter.org/table-of-contents-2.html
HTML - Enlaces
19
<a href=”http://www.itgrarte.org” target=”_blank”>Ver galería”</a>
HTML - Heading
20
HTML - Listas
21
<ul>
<li>Azul</li>
<li>Rojo</li>
<li>Verde</li>
</ul>
Lista desordenada
<ol>
<li>Primero</li>
<li>Segundo</li>
<li>Tercero</li>
</ol>
Lista ordenada
HTML - Formularios
22
<form>
<fieldset>
<legend>Información de contacto</legend>
<label for="correo">Email (requerido):</label>
<input id="correo" name="txt_correo" type=email required>
<label for="nombre">Nombre (requerido):</label>
<input id="nombre" name="txt_nombre" type=text required>
</fieldset>
<p>Ocupación:</p>
<label for="o_estudiante">Estudiante</label>
<input id="o_estudiante" name="rad_ocupacion" type=radio>
<label for="o_profesor">Estudiante</label>
<input id="o_profesor" name="rad_ocupacion" type=radio>
<input type="submit" value="Ingresar">
</form>
Agrupar campos
con fieldset
Asociar label con input emparejando
“for” -> “id”
Ser explícito con campos requeridos
No es lo mismo required que aria-required
Usar el type adecuado:
HTML - Tablas
23
<table class="table">
<caption>Actividades educativas por día</caption>
<tr>
<th scope="col">Horario</th>
<th scope="col">Lunes</th>
<th scope="col">Martes</th>
<th scope="col">Miércoles</th>
</tr>
<tr>
<th scope="row">09:00 - 10:00</th>
<td>Arte</td>
<td>Matemáticas</td>
<td>Geografía</td>
</tr>
<tr>
<th scope="row">11:00 - 12:00</th>
<td>Historia</td>
<td>Química</td>
<td>Física</td>
</tr>
</table>
Esta es una de las formas más usadas. Se pueden ver otras en https://www.w3.org/WAI/tutorials/tables/
Las personas con visión usualmente procesamos las tablas columna por columna pero que el lector de pantalla las leerá línea por línea.
Pregúntate: Realmente necesito una tabla? Puedo reducir el número de filas/columnas? Realmente necesito hacer merge/span (unión) ?
Utiliza un caption o título a la tabla <caption>
HTML - Modales
24
La técnica del contenido invisible
25
Existen diferentes formas de lograrlo, aquí una de ejemplo:
https://webaim.org/techniques/css/invisiblecontent
Y al apretar tab aparece esto:
Aparece así:
Validación
Testing de accesibilidad para programadores (y también performance, SEO...)
Wave, Axe, Lighthouse
Contrast checkers
Lector de pantalla NVDA
26
Siéntate y acompaña a una PCD a usar el software
Consideraciones adicionales
A tener en cuenta
27
Usando Herramientas y Librerías UI para desarrollo web
28
Herramienta | Librerías UI recomendables |
Solamente estilo |
|
React |
|
Vue |
|
Solamente Javascript o Jquery |
|
Angular |
|
Svelte |
|
Renderizado directo (canvas) |
|
Accesibilidad en desarrollo para desktop y mobile
29
Plataforma | Librerías UI recomendables para desarrollo |
Desktop |
|
Mobile | Las de programación nativa, es decir:
|
Ambas | Tener cuidado con el renderizado directo, tiene problemas de accesibilidad, ejemplos: QT, Flutter Desktop |
Accesibilidad en CI (Integración Contínua) y automatización
30
Herramienta | Notas |
WAVE |
|
AXE |
|
PA11Y |
|
Rastreador Web del observatorio de accesibilidad de España |
|
WAI-ARIA
31
https://developers.google.com/web/fundamentals/accessibility
¿Qué es? identificar el rol del elemento. Ejemplo: <div id=”banner” role=”banner”>
¿Cómo se encuentra? identificar estado y propiedades del elemento.
¿Qué hace? identificar el comportamiento del elemento.
WAI-ARIA
32
https://developers.google.com/web/fundamentals/accessibility
Rol: define el papel del elemento dentro del documento web. Ejemplo:
<div id=”slider” role=”slider”>
Estado y propiedades: determinan características y valores de cada elemento.
<div id=”slider” role=”slider” aria-valuemax=”30” aria-valuenow=”20”>
Consejos para promover la accesibilidad en tu equipo o empresa
33
¿Preguntas?
Valeria Rocha
Desarrolladora
Henry Tong
Desarrollador
taksantong@gmail.com
34
@avaltenea