1.1.1 Contenido no textual
Toda imagen, ícono u otro elemento no textual debe incluir una descripción en texto que transmita la misma información o función.
Resolución de roles de presentación y estados ocultos en contenido decorativo
Los gráficos decorativos y el contenido no textual que no transmiten información significativa deben ocultarse de las tecnologías de asistencia, como los lectores de pantalla. Esto permite que los usuarios de tecnologías de asistencia se concentren en el contenido significativo.
En el código HTML, identifique el contenido decorativo que no proporciona información ni funcionalidad significativas.
Para los elementos
<svg>decorativos, agregue el atributoaria-hidden="true"al elemento<svg>.Para otro contenido decorativo no textual, como un elemento
<img>usado solo como borde, un elemento<object>usado únicamente para dar estilo o un elemento<area>usado para efectos visuales, agregue el atributorole="presentation".Si el elemento decorativo no textual ya tiene un atributo
role, reemplácelo porrole="presentation".
Ejemplo
!-- Incorrect -->
<svg width="100" height="100">
<circle
cx="50"
cy="50"
r="40"
stroke="black"
stroke-width="3"
fill="red"
/>
</svg>
<!-- Correct -->
<svg width="100" height="100" aria-hidden="true">
<circle
cx="50"
cy="50"
r="40"
stroke="black"
stroke-width="3"
fill="red"
/>
</svg>
Resolución de atributos alt faltantes en contenido no textual
Todo el contenido no textual, como imágenes, videos y botones, debe incluir texto alternativo que proporcione una identificación descriptiva del contenido.
En su código HTML, localice los elementos de contenido no textual (por ejemplo,
<img>,<object>,<area>) a los que les falta un atributoalt.Agregue un atributo
altal elemento.Ingrese una descripción alternativa descriptiva en el atributo
altque transmita su significado.
Nota: Para las imágenes decorativas, usealt=""(texto alternativo vacío) para indicar que la imagen no transmite contenido significativo.
Ejemplo
<!-- Incorrect -->
<img src="logo.png">
<!-- Correct -->
<img src="logo.png" alt="Logo of Company A with a stylized tree design">Resolución de texto alternativo faltante en botones de imagen
Los botones de imagen necesitan texto alternativo descriptivo para garantizar que los usuarios con discapacidad visual comprendan la finalidad del botón al navegar por la página.
En su código HTML, localice el elemento
<img>dentro de un elemento<button>o<input>.Dentro del elemento
<img>, localice el atributoalt.Agregue una descripción clara y concisa de la función del botón dentro del atributo
alt.
Ejemplo
<-- Incorrect -->
<button><img src="submit-button.png" alt=""></button>
<-- Correct -->
<button><img src="submit-button.png" alt="Submit form"></button>Resolución de problemas por atributo aria-labelledby faltante
El uso del atributo aria-labelledby garantiza que las tecnologías de asistencia, como los lectores de pantalla, puedan leer correctamente las etiquetas del contenido, lo que ayuda a los usuarios a comprender mejor el contexto del elemento.
En su código HTML, localice el elemento que necesita una etiqueta (por ejemplo,
<img>,<object>,<area>).Dentro del elemento, agregue el atributo
aria-labelledby.Dentro del atributo
aria-labelledby, ingrese un nombre de etiqueta que proporcione una descripción del elemento.
Nota: El nombre de la etiqueta debe transmitir el mismo significado que la etiqueta del elemento correspondiente que describe el contenido de la imagen.
Ejemplo
<!-- Incorrect -->
<img src="chart.png" aria-labelledby="nonexistentLabel">
<!-- Correct -->
<img src="chart.png" aria-labelledby="chartTitle">
<h2 id="chartTitle">Sales Data Chart</h2>Resolución de problemas por título faltante
El uso del atributo title garantiza que las tecnologías de asistencia, como los lectores de pantalla, puedan leer el contenido con un título adecuado.
En su código HTML, localice el elemento que necesita una etiqueta (por ejemplo,
<img>,<object>).Dentro del elemento, agregue el atributo
title.Dentro del atributo
title, ingrese un título descriptivo para su elemento.
Ejemplo
<!-- Incorrect -->
<object data="document.pdf" type="application/pdf"></object>
<!-- Correct -->
<object data="document.pdf" type="application/pdf" title="Annual Financial Report 2023"></object>Resolución de nombres accesibles faltantes en gráficos significativos
Agregue nombres accesibles a los elementos SVG para proporcionar alternativas en texto, de modo que los usuarios que dependen de lectores de pantalla o tecnologías de asistencia puedan comprender los gráficos.
En el HTML, localice el elemento
<svg>conrole="img".
Asegúrese de que los elementos <svg> significativos incluyan un rol ARIA (por ejemplo, role="img") antes de agregar un aria-label.
Dentro de ese elemento
<svg>, agregue un atributoaria-label.Establezca
aria-labelcon una etiqueta concisa y descriptiva para el gráfico.
Ejemplo
<!-- Incorrect -->
<svg role="img" width="100" height="100">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>
<!-- Correct -->
<svg role="img" width="100" height="100" aria-label="Red circle representing a stop sign">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>Resolución de nombres accesibles faltantes en gráficos decorativos
Agregar el rol de presentación a sus gráficos decorativos garantiza que las tecnologías de asistencia, como los lectores de pantalla, puedan omitir el contenido innecesario y concentrarse en leer lo que es significativo.
En el código HTML, localice el elemento
<svg>.Dentro del elemento
<svg>, agregue el atributorole="presentation".
Ejemplo
<!-- Incorrect -->
<svg width="100" height="100">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>
<!-- Correct -->
<svg width="100" height="100" role="presentation">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>Resolución de texto alternativo faltante en elementos con rol img
El texto alternativo en los elementos con rol img permite que los lectores de pantalla describan la imagen, lo que ayuda a los usuarios a comprender su finalidad y contenido. Agregar un atributo aria-label o aria-labelledby proporciona a los usuarios la información necesaria para comprender la finalidad o el contenido de la imagen.
- En su código HTML, localice el elemento HTML con
role="img".
Dentro del elemento, agregue un atributoaria-labeloaria-labelledby. Dentro del atributo, ingrese una descripción de la imagen.
Ejemplo
<!-- Incorrect -->
<svg role="img">
<!-- SVG content -->
</svg>
<!-- Correct -->
<svg role="img" aria-label="Company logo">
<!-- SVG content -->
</svg>Resolución de títulos redundantes en imágenes con texto alternativo vacío
Cuando una imagen se marca con texto alternativo vacío (alt=""), se pretende que las tecnologías de asistencia la ignoren. Agregar un atributo title en este caso genera información contradictoria, ya que los lectores de pantalla aún pueden anunciar el título, lo que anula el propósito de marcar la imagen como decorativa.
En el código HTML, localice el elemento
<img>.Si la imagen es puramente decorativa, asegúrese de que incluya un atributo
altvacío y elimine cualquier atributotitle.
Ejemplo
<!-- Incorrect -->
<img src="decorative-divider.png" alt="" title="Section divider">
<!-- Correct -->
<img src="decorative-divider.png" alt="">Resolución de texto alternativo no descriptivo en imágenes
Todo el contenido no textual, como imágenes, videos y botones, debe incluir texto alternativo que proporcione una identificación descriptiva del contenido.
En el código HTML, localice el elemento
<img>.Dentro del elemento
<img>, localice el atributoalt.Reemplace la descripción existente por una frase más descriptiva que transmita la finalidad o el contenido de la imagen.
Nota: Si la imagen es decorativa y no transmite información significativa, reemplace la descripción actual del atributo poralt=""orole="presentation"para ocultarla de los lectores de pantalla.
Ejemplo
<!-- Incorrect -->
<img src="company-logo.png" alt="Logo">
<!-- Correct -->
<img src="company-logo.png" alt="White House logo, representing the official symbol">
1.2.1 Solo audio y solo video (grabado previamente)
Todo audio o video grabado previamente que no tenga imágenes ni sonido debe incluir una transcripción en texto que proporcione la misma información.
Resolución de transcripciones de audio faltantes
Proporcionar una transcripción en texto del contenido de audio garantiza que todos los usuarios, incluidos quienes son sordos o tienen dificultades auditivas, puedan acceder a la misma información.
En el código HTML, localice el elemento
<audio>.Después del elemento
<audio>, agregue un elemento<p>.Dentro del elemento
<p>, ingrese la transcripción completa del contenido de audio en forma de texto.
Ejemplo
<!-- Incorrect -->
<audio controls><source src="interview.mp3" type="audio/mpeg">Your browser does not support the audio element.</audio>
<!-- Correct -->
<audio src="interview.mp3" type="audio/mpeg" your="Your" browser="browser" does="does" not="not" support="support" the="the" audio="audio">
<p>Transcript: In this interview, Dr. Smith explains the importance of regular exercise. She discusses how physical activity can improve both mental and physical health, reduce the risk of chronic diseases, and enhance overall quality of life. She also shares tips for staying motivated and setting realistic fitness goals.</p>1.2.2 Subtítulos (grabado previamente)
Todos los videos grabados previamente que tengan sonido deben incluir subtítulos que muestren en pantalla las palabras habladas y los sonidos importantes.
Resolución de subtítulos faltantes en contenido de video
Proporcionar subtítulos en los videos grabados previamente garantiza que los usuarios sordos o con dificultades auditivas puedan comprender el contenido.
En el código HTML, localice el elemento
<video>.Dentro del elemento
<video>, agregue un elemento<track>.-
En el elemento
<track>, agregue los siguientes atributos:El atributo
kindcon el valor"captions"(por ejemplo,kind="captions").El atributo
srccon la ruta del archivo de subtítulos (por ejemplo,captions.vtt).El atributo
srclangcon el código de idioma correspondiente (por ejemplo,en).El atributo
labelpara describir el idioma del contenido del video (por ejemplo,"English").
Ejemplo
<!-- Incorrect -->
<video src="training-overview.mp4" controls>
</video>
<!-- Correct -->
<video src="training-overview.mp4" controls>
<track src="training-overview-en.vtt" kind="captions" srclang="en" label="English">
</video>
Resolución de subtítulos faltantes en videos incrustados de Vimeo
Los videos de Vimeo deben tener subtítulos disponibles para garantizar la accesibilidad de los usuarios sordos o con dificultades auditivas. Vimeo permite agregar subtítulos mediante la configuración del video.
Abra el video en vimeo.com.
Inicie sesión con la cuenta propietaria del video.
Vaya a Configuración.
Seleccione la pestaña Distribución y luego abra Subtítulos (o Avanzado > Subtítulos en los diseños anteriores).
Busque la sección Subtítulos/CC.
Cargue un archivo de subtítulos .vtt o .srt.
Guarde los cambios y luego confirme que los subtítulos estén habilitados mediante la vista previa del video.
Nota: Los subtítulos se mostrarán automáticamente en el elemento <iframe> incrustado si están habilitados en Vimeo.
Resolución de subtítulos faltantes en videos incrustados de YouTube
Los videos de YouTube deben incluir subtítulos para que los usuarios sordos o con dificultades auditivas puedan acceder al contenido hablado. YouTube ofrece opciones para cargar subtítulos manualmente o usar subtitulado automático.
Abra el video en youtube.com con la cuenta propietaria del video.
Vaya a YouTube Studio y seleccione el video que desea editar.
Haga clic en Subtítulos en el menú de la izquierda.
Elija el idioma de sus subtítulos.
-
Haga clic en Agregar y seleccione una de las siguientes opciones:
Subir archivo (para archivos .vtt o .srt)
Sincronización automática (pegue la transcripción completa y deje que YouTube la sincronice)
Escribir manualmente
Revise y publique sus subtítulos.
1.3.1 Información y relaciones
Toda información que se muestre mediante el diseño, el formato o la estructura visual también debe estar disponible en texto o codificada de manera que las tecnologías de asistencia puedan comprenderla.
Resolución de roles de puntos de referencia ARIA faltantes en la estructura de la página
Los roles de puntos de referencia (landmarks) ayudan a los usuarios de lectores de pantalla a comprender el diseño de la página y a navegar rápidamente a las secciones clave.
En su código HTML, localice los elementos estructurales (por ejemplo,
<div>,<section>,<form>).Agregue el rol de punto de referencia ARIA adecuado mediante el atributo
role(por ejemplo,role="main",role="navigation",role="form"). Obtenga más información sobre el rol de punto de referencia adecuado.
Nota: Agregue roles ARIA solo si el elemento aún no tiene un rol de punto de referencia integrado (por ejemplo,<nav>ya funciona comonavigation).
Ejemplo
<!-- Incorrect -->
<div id="main-content">
<p>Welcome to our website.</p>
</div>
<!-- Correct -->
<div id="main-content" role="main">
<p>Welcome to our website.</p>
</div>
Resolución de fieldset o grupo faltante en entradas con el mismo nombre
Los botones de opción o las casillas de verificación que comparten el mismo nombre deben agruparse para que su relación sea clara. Esto ayuda a los usuarios de lectores de pantalla a comprender que las entradas pertenecen al mismo grupo.
En el código HTML, localice las entradas de tipo radio o checkbox que comparten el mismo atributo
name.Envuelva las entradas relacionadas dentro de un elemento
<fieldset>.Agregue un elemento
<legend>como primer elemento dentro del<fieldset>para describir el grupo.
Como alternativa, envuelva las entradas en un contenedor con role="group" o role="radiogroup" y proporcione una etiqueta mediante aria-labelledby o aria-label.
Ejemplo
<!-- Incorrect -->
<label>
<input type="checkbox" name="city"> Toronto
</label>
<label>
<input type="checkbox" name="city"> London
</label>
<!-- Correct -->
<fieldset>
<legend>Select your location</legend>
<label>
<input type="checkbox" name="city"> Toronto
</label>
<label>
<input type="checkbox" name="city"> London
</label>
</fieldset>
<!-- Correct -->
<div role="group" aria-label="Select your location">
<label>
<input type="checkbox" name="city"> Toronto
</label>
<label>
<input type="checkbox" name="city"> London
</label>
</div>
Resolución de elementos <li> sin elemento principal
Asegurarse de que los elementos de lista se coloquen dentro de un elemento de lista ayuda a los lectores de pantalla a identificar correctamente el contenido agrupado.
En el código HTML, localice los elementos
<li>que no están envueltos en un elemento<ul>o<ol>.Envuelva los elementos
<li>en un elemento<ul>(para viñetas) o<ol>(para una lista numerada).
Ejemplo
<!-- Incorrect --> <li>First item</li> <li>Second item</li> <!-- Correct --> <ul> <li>First item</li> <li>Second item</li> </ul>
Resolución de problemas de estructura de las listas de descripción (DL)
Las listas de descripción se utilizan para mostrar pares de información relacionada, como un término y su explicación. Cuando la lista no está estructurada correctamente, los lectores de pantalla pueden leer el contenido en desorden o confundir a los usuarios.
En su código HTML, localice los elementos
<dl>señalados.Dentro del elemento
<dl>, coloque el término dentro de un elemento<dt>.Dentro de un elemento
<dt>, coloque la descripción dentro de un elemento<dd>.
Nota: Un elemento <dt> debe contener al menos un elemento <dd>.
Elimine cualquier otro elemento que esté colocado directamente dentro del elemento
<dl>, a menos que esté envuelto dentro de un elemento<dt>o<dd>.
Ejemplo
<!-- Incorrect --> <dl> <p>HTML</p> <p>A markup language for web pages.</p> </dl> <!-- Correct --> <dl> <dt>HTML</dt> <dd>A markup language for web pages.</dd> </dl>
Resolución de términos de definición (DT) y descripciones de definición (DD) que no están contenidos en una lista de descripción (DL)
Los términos de definición (<dt>) y las descripciones de definición (<dd>) siempre deben estar contenidos dentro de una lista de descripción (<dl>). Cuando los elementos <dt> o <dd> se usan fuera de un elemento <dl>, los lectores de pantalla pueden leer el contenido en desorden o confundir a los usuarios.
En su código HTML, localice los elementos
<dt>o<dd>señalados.Asegúrese de que cada elemento
<dt>y<dd>esté colocado dentro de un elemento<dl>. Si el contenido no forma parte de una lista de descripción, reemplace<dt>y<dd>por un elemento adecuado (por ejemplo,<h2>,<h3>,<p>).
Ejemplo
<!-- Incorrect --> <dt>CSS</dt> <dd>A language used to style web pages.</dd> <!-- Correct --> <dl> <dt>CSS</dt> <dd>A language used to style web pages.</dd> </dl>
Resolución del uso incorrecto del atributo scope en tablas
Cuando una tabla usa el atributo scope, este debe aplicarse únicamente a las celdas de encabezado (<th>) para definir claramente con qué celdas de datos se relacionan. Los valores de scope incorrectos o ausentes pueden impedir que las tecnologías de asistencia asocien correctamente los encabezados con los datos de la tabla.
-
En su código HTML, ubique el atributo
scopemarcado o los elementos de tabla marcados. -
Actualice el atributo
scopepara asegurarse de que:- El atributo
scopese aplique únicamente a los elementos<th>. - Cada
<th>tenga un valor de scope adecuado, comocol,row,colgrouporowgroup. -
El valor de su atributo
scoperefleje con precisión la estructura y las relaciones de la tabla.
- El atributo
Ejemplo
<!-- Incorrect -->
<table>
<tr>
<th>Name</th>
<th>Score</th>
</tr>
<tr>
<th>Alice</th>
<td>95</td>
</tr>
</table>
<!-- Correct -->
<table>
<tr>
<th scope="col">Name</th>
<th scope="col">Score</th>
</tr>
<tr>
<th scope="row">Alice</th>
<td>95</td>
</tr>
</table>
<!-- Incorrect -->
<table>
<tr>
<th scope="column1">Name</th>
<th scope="column2">Score</th>
</tr>
<tr>
<th scope="row1">Alice</th>
<td>95</td>
</tr>
</table>
<!-- Correct -->
<table>
<tr>
<th scope="col">Name</th>
<th scope="col">Score</th>
</tr>
<tr>
<th scope="row">Alice</th>
<td>95</td>
</tr>
</table>
Resolución del uso incorrecto del atributo headers mediante scope en tablas
Las tablas deben contener celdas de datos (<td>) descritas por encabezados de tabla (<th>). Las tablas que incluyen encabezados pero no celdas de datos no ofrecen relaciones significativas para las tecnologías de asistencia y pueden causar confusión a los usuarios de lectores de pantalla.
En su código HTML, ubique los elementos de tabla marcados que contienen elementos <th> pero ningún elemento <td> correspondiente.
Actualice la estructura de la tabla para asegurarse de que:
Cada tabla incluya uno o más elementos
<td>que contengan datos.Los elementos
<th>se usen únicamente cuando describan datos reales de la tabla.Las tablas usadas solo para diseño o presentación no incluyan elementos
<th>.Si la tabla no contiene datos, elimine la tabla o reemplácela con un marcado que no sea de tabla.
Ejemplo
<!-- Incorrect -->
<table>
<tr>
<th scope="col">Name</th>
</tr>
</table>
<!-- Correct -->
<table>
<tr>
<th scope="col">Name</th>
</tr>
<tr>
<td>John</td>
</tr>
</table>
Resolución de la agrupación ARIA incorrecta para el rol “group”
El uso adecuado de los roles ARIA ayuda a los lectores de pantalla a comprender la estructura de la página, lo que facilita que los usuarios con discapacidades naveguen e interactúen con el contenido.
En el código HTML, ubique el elemento con
role="group".Dentro del elemento, incluya al menos un elemento de control interactivo (p. ej.,
<input>,<textarea>o<select>).
Nota: Obtenga más información sobre qué control interactivo debe incluir. Si no hay controles interactivos adecuados, considere reemplazarrole="group"por un rol ARIA o una estructura más apropiados.
Ejemplo
<!-- Incorrect -->
<div role="group">
<p>This is a group with no interactive elements.</p>
</div>
<!-- Correct -->
<div role="group">
<label for="username">Username:</label>
<input id="username" type="text">
</div>
Resolución de la agrupación ARIA incorrecta para el rol “radiogroup”
El uso adecuado de los roles ARIA ayuda a los lectores de pantalla a comprender la estructura de la página, lo que facilita que los usuarios con discapacidades naveguen e interactúen con el contenido.
En el código HTML, ubique el elemento con
role="radiogroup".Dentro del elemento, incluya al menos un elemento de botón de opción (p. ej.,
<input type="radio">orole="radio").
Ejemplo
<!-- Incorrect -->
<div role="radiogroup">
<p>Select a delivery method:</p>
</div>
<!-- Correct -->
<div role="radiogroup" aria-label="Select a delivery method">
<label><input type="radio" name="delivery" value="standard"> Standard </label><br>
<label><input type="radio" name="delivery" value="express"> Express </label><br>
<label><input type="radio" name="delivery" value="overnight"> Overnight</label>
</div>
Resolución de la agrupación ARIA incorrecta para el rol “checkbox”
El uso adecuado de los roles ARIA ayuda a los lectores de pantalla a comprender la estructura de la página, lo que facilita que los usuarios con discapacidades naveguen e interactúen con el contenido.
En el código HTML, ubique
<input type="checkbox">o un elemento conrole="checkbox".Coloque las casillas de verificación dentro de un contenedor y asígnele el
role="group".Agregue un atributo
aria-labelledbyoaria-labelal elemento conrole="checkbox"para describir el propósito del grupo de casillas de verificación.
Ejemplo
<!-- Incorrect -->
<div><label><input type="checkbox" id="news"> Newsletter</label><br>
<label><input type="checkbox" id="updates"> Product Updates</label><br>
<label><input type="checkbox" id="offers"> Special Offers</label>
</div>
<!-- Correct -->
<div role="group" aria-labelledby="emailPref">
<p id="emailPrefsLabel">Which types of emails would you like to receive?</p>
<label><input type="checkbox" id="news"> Newsletter</label><br>
<label><input type="checkbox" id="updates"> Product Updates</label><br>
<label><input type="checkbox" id="offers"> Special Offers</label>
</div>
Resolución de la agrupación ARIA incorrecta para el rol “radio”
El uso adecuado de los roles ARIA ayuda a los lectores de pantalla a comprender la estructura de la página, lo que facilita que los usuarios con discapacidades naveguen e interactúen con el contenido.
En el código HTML, ubique
<input type="radio">o un elemento conrole="radio".Agrupe los botones de opción dentro del elemento con el
role="radiogroup".Agregue un atributo
aria-labelledbyoaria-labelal elemento para describir el propósito del grupo de botones de opción.
Ejemplo
<!-- Incorrect -->
<label><input type="radio" name="contact"> Email</label><br>
<label><input type="radio" name="contact"> Phone</label><br>
<label><input type="radio" name="contact"> Text Message</label>
</div>
<!-- Correct -->
<div role="radiogroup" aria-labelledby="contactMethod">
<p id="contactMethodLabel">How would you like us to contact you?</p>
<label><input type="radio" name="contact"> Email</label><br>
<label><input type="radio" name="contact"> Phone</label><br>
<label><input type="radio" name="contact"> Text Message</label>
</div>
Resolución de la falta de aria-level en los roles de encabezado
Los roles de encabezado ARIA deben incluir un nivel de encabezado definido para mayor claridad.
En el código HTML, ubique el elemento con el atributo
role="heading".Después del atributo
role, agregue el atributoaria-levelcon un valor del 1 al 6 (p. ej.,aria-level="2").
Ejemplo
<!-- Incorrect -->
<div role="heading">Subsection Title</div>
<!-- Correct -->
<div role="heading" aria-level="2">Subsection Title</div>
Resolución de la falta de encabezados de tabla
Los encabezados de tabla ayudan a los lectores de pantalla a comprender qué significa cada columna o fila. Si una tabla no tiene encabezados, las tecnologías de asistencia no pueden brindar a los usuarios el contexto adecuado.
En su código HTML, ubique el elemento
<table>e identifique la primera fila. Esta fila debe definir los encabezados de la tabla (p. ej., “Nombre”, “Edad”, etc.).Si la primera fila usa elementos
<td>(datos de tabla), cambie cada<td>por un<th>(encabezado de tabla) para indicar que estas celdas son encabezados.Agregue
scope="col"a cada elemento<th>si es un encabezado de columna, oscope="row"si es un encabezado de fila.
Ejemplo
<!-- Incorrect -->
<table>
<tr>
<td>Name</td>
<td>Age</td>
</tr>
<tr>
<td>Ava</td>
<td>25</td>
</tr>
</table>
<!-- Correct -->
<table>
<tr>
<th scope="col">Name</th>
<th scope="col">Age</th>
</tr>
<tr>
<td>Ava</td>
<td>25</td>
</tr>
</table>
Resolución de la falta de asociaciones de celdas de datos en listas
Las listas usadas para presentar datos estructurados deberían usar una tabla, para que los lectores de pantalla puedan asociar claramente los datos con los encabezados.
En el código HTML, ubique los elementos
<ul>y<ol>que presentan datos con etiquetas y valores.Reemplace la estructura
<ul>o<ol>con el elemento<table>.Agregue los elementos
<th>para los encabezados y<td>para los valores.Dentro de
<th>, agregue el atributoscope="col"para indicar los encabezados de columna.
Ejemplo
<!-- Incorrect -->
<ul>
<li><strong>Name:</strong> Ava</li>
<li><strong>Age:</strong> 25</li>
</ul>
<!-- Correct -->
<table>
<tr>
<th scope="col">Name</th>
<th scope="col">Age</th>
</tr>
<tr>
<td>Ava</td>
<td>25</td>
</tr>
</table>
Resolución de la estructura de lista incorrecta
Asegurarse de que los elementos de lista se coloquen dentro de un elemento de lista ayuda a los lectores de pantalla a identificar correctamente el contenido agrupado.
En el código HTML, ubique los elementos
<li>que no estén dentro de un<ul>o un<ol>.Coloque los elementos
<li>dentro de un<ul>(para viñetas) o un<ol>(para una lista numerada).
Ejemplo
<!-- Incorrect -->
<li>First item</li>
<li>Second item</li>
<!-- Correct -->
<ul>
<li>First item</li>
<li>Second item</li>
</ul>Resolución de atributos scope no válidos en encabezados de tabla
El atributo scope conecta los encabezados de tabla con las celdas de datos. Usar valores incorrectos u omitirlos puede dificultar la interpretación de las tablas para los usuarios de lectores de pantalla.
En su código HTML, ubique el elemento
<th>con un valor de atributoscopeno válido o ausente.-
Reemplace o agregue el valor de
scopesegún el tipo de encabezado:Use
scope="col"para los encabezados de columna.Use
scope="row"para los encabezados de fila.
Nota: Para encabezados de varios niveles, use rowgroup o colgroup si corresponde agrupar.
Ejemplo
<!-- Incorrect -->
<th scope="column">Course</th>
<!-- Correct -->
<th scope="col">Course</th>Resolución de la falta de elemento principal para los elementos de definición
Los términos de definición y sus descripciones deben colocarse dentro de una lista de definiciones para ayudar a los lectores de pantalla a identificar correctamente el contenido de las definiciones.
En el código HTML, ubique el elemento
<dt>o<dd>.Coloque el elemento
<dt>o<dd>dentro de un contenedor<dl>.
Ejemplo
<!-- Incorrect -->
<dt>HTML</dt>
<dd>A markup language</dd>
<!-- Correct -->
<dl>
<dt>HTML</dt>
<dd>A markup language</dd>
</dl>Resolución de la falta de legend en fieldset
Todo elemento <fieldset> debe comenzar con un elemento <legend> que describa para qué sirven los campos de formulario agrupados. Esto ayuda a los usuarios de lectores de pantalla a comprender el propósito del grupo.
En el código HTML, ubique el elemento
<fieldset>en su formulario.Agregue un elemento
<legend>como primer elemento dentro del elemento<fieldset>.Escriba una etiqueta breve y descriptiva dentro del elemento
<legend>para describir para qué sirven los campos de formulario del grupo.
Ejemplo
<!-- Incorrect --> <fieldset><label for="name">Name:</label><input id="name" type="text"></fieldset>
<!-- Correct --> <fieldset><legend>Personal Information</legend><label for="name">Name:</label><input id="name" type="text"></fieldset>
1.3.4 Orientación
Resolución de problemas de orientación en aplicaciones web móviles de Apple
Bloquear una aplicación web en orientación vertical u horizontal puede dificultar que algunos usuarios accedan al contenido, especialmente quienes dependen de una orientación específica del dispositivo. La metaetiqueta apple-mobile-web-app-orientation debe configurarse para permitir cualquier orientación.
- En su código HTML, ubique la etiqueta
<meta>con el atributoname="apple-mobile-web-app-orientation". - Reemplace el valor del atributo
content=”portrait”ocontent=”landscape”porcontent=”any”. - Guarde los cambios y vuelva a cargar la página.
Ejemplo
<meta name="apple-mobile-web-app-orientation" content="any">
Resolución de problemas de orientación en la metaetiqueta viewport
Las configuraciones de viewport que bloquean la orientación de la pantalla o desactivan el zoom pueden dificultar que los usuarios lean el contenido e interactúen con él. Permitir tanto la orientación vertical como la horizontal, así como el zoom, brinda a los usuarios flexibilidad según su dispositivo y sus necesidades personales.
- En su código HTML, ubique la etiqueta
meta name="viewport". - Elimine cualquier atributo relacionado con restricciones de orientación, como
orientation=portraituorientation=landscape. - Elimine cualquier atributo que impida el zoom, como
maximum-scale=1ouser-scalable=no. - Guarde los cambios y vuelva a cargar la página.
Ejemplo
<!-- Incorrect -->
<meta name="viewport" content="width=device-width, maximum-scale=1, orientation=portrait">
<!-- Correct-->
<meta name="viewport" content="width=device-width">
Resolución de problemas de orientación en CSS
Las consultas de medios CSS que bloquean el contenido en orientación vertical u horizontal pueden limitar la forma en que los usuarios interactúan con una página. Eliminar estas restricciones permite que el contenido se adapte a ambas orientaciones.
- En su código CSS, ubique las consultas de medios que restringen la orientación, como:
@media screen and (orientation: portrait){ … }@media screen and (orientation: landscape) { … }
- Elimine estas consultas de medios específicas de orientación para que el contenido se adapte libremente a ambas orientaciones.
- Guarde los cambios y vuelva a cargar la página.
Ejemplo:
<!-- Incorrect -->
@media screen and (orientation: portrait) {
.container {
width: 400px;
}
}
<!-- Correct-->
.container {
width: 400px;
1.3.5 Identificar el propósito de la entrada
Resolución de valores de autocomplete no válidos en campos de formulario
Los campos de formulario deben identificar claramente el tipo de información que esperan. Esto ayuda a los navegadores a completar datos automáticamente y apoya a los usuarios con discapacidades cognitivas o motoras.
En su código HTML, ubique cada campo de formulario (p. ej.,
<input>,<textarea>o<select>) con un valorautocompleteno válido.Actualice el atributo
autocompletecon el valor correcto que coincida con los datos esperados (p. ej.,"email","name","postal-code").
Nota: Obtenga más información sobre una lista de valores de autocomplete correctos.
Ejemplo
<!-- Incorrect -->
<input type="text" name="full_name" autocomplete="fullname">
<!-- Correct-->
<input type="text" name="full_name" autocomplete="name">Resolución de la falta del atributo autocomplete en campos de formulario
Los campos de formulario deben incluir un atributo autocomplete para ayudar a los navegadores a completar datos automáticamente y mejorar la accesibilidad para los usuarios con discapacidades cognitivas o motoras.
En su código HTML, ubique cada campo de formulario (p. ej.,
<input>,<textarea>o<select>) que recopile datos del usuario.Dentro de cada elemento, agregue el atributo
autocompletecon el valor correcto que coincida con los datos esperados (p. ej.,"email","name","postal-code").
<!-- Incorrect --> <input type="text" name="full_name"> <!-- Correct--> <input type="text" name="full_name" autocomplete="name">
1.4.1 Uso del color
Resolución de la falta de estilo en los enlaces
Cuando el color es la única forma de dar estilo a un enlace, es posible que algunos usuarios, como las personas con daltonismo, no puedan distinguirlo como un enlace. Agregar estilos adicionales, como subrayado o texto en negrita, ayuda a que los enlaces se destaquen claramente.
En su código HTML, ubique el elemento
<a>.-
Agregue atributos en el elemento
<a>para incluir señales visuales distintas del color, como:text-decoration: underlinefont-weight: bold
border-bottom
Nota: Puede usar clases CSS u hojas de estilo externas para aplicar un estilo uniforme a todos los enlaces de su sitio.
Ejemplo
<!-- Incorrect -->
<a href="features.html" style="color: blue;">View Features</a>
<!-- Correct -->
<a href="features.html" style="color: blue; text-decoration: underline;">View Features</a>1.4.2 Control del audio
Resolución de controles de audio faltantes en reproductores de audio
Cuando el audio se reproduce automáticamente, los usuarios necesitan una forma de controlar la reproducción. Agregar controles de audio permite a los usuarios pausar, detener o ajustar el volumen, lo cual es importante para la accesibilidad y la experiencia de usuario.
En su código HTML, localice el elemento
<audio>.Agregue el atributo
controlsdirectamente al elemento<audio>para habilitar los controles integrados del navegador.
Nota: Asegúrese de que el atributo no esté vacío y no tenga un valor.
Ejemplo
<!-- Incorrect -->
<audio src="welcome-message.mp3" autoplay></audio>
<!-- Correct -->
<audio src="welcome-message.mp3" autoplay controls></audio>
1.4.3 Contraste (mínimo)
Resolución de problemas de bajo contraste en el texto
El bajo contraste de color entre el texto y el fondo puede dificultar la lectura del contenido, especialmente para los usuarios con discapacidades visuales. Mejorar el contraste ayuda a que todos accedan al contenido con mayor facilidad.
En su código HTML, localice el elemento que contiene texto (por ejemplo,
p,h1,span,button).Verifique el color actual del texto y el color del fondo mediante una herramienta de contraste de color, como WebAIM Contrast Checker.
-
Asegúrese de que la relación de contraste cumpla lo siguiente:
Al menos 4.5:1 para texto normal.
Al menos 3.0:1 para texto de gran tamaño (18 pt o 14 pt en negrita).
Si la relación de contraste es demasiado baja, ajuste el color del texto o el color del fondo hasta alcanzar la relación de contraste mínima.
Ejemplo
<!-- Incorrect -->
<p style="color: #888; background-color: #fff;">Schedule a demo</p>
<!-- Correct -->
<p style="color: #000; background-color: #fff;">Schedule a demo</p>1.4.6 Contraste (mejorado)
El texto debe tener un contraste más alto con su fondo para facilitar su lectura a las personas con baja visión.
Resolución de problemas de contraste mejorado en el texto
Algunos usuarios necesitan un contraste más fuerte para leer el texto con comodidad. El contraste mejorado garantiza que el texto siga siendo legible incluso en condiciones visuales difíciles.
En su código HTML, localice el elemento que contiene texto (por ejemplo,
h2,div,label,input, etc.).Verifique la relación de contraste entre el color del texto y el fondo mediante una herramienta de verificación de contraste, como WebAIM Contrast Checker.
-
Confirme que la relación cumpla los estándares mejorados:
Al menos 7:1 para texto normal
Al menos 4.5:1 para texto de gran tamaño (18 pt o 14 pt en negrita)
Ajuste los colores según sea necesario para alcanzar estos niveles de contraste mejorado.
Ejemplo
<!-- Incorrect -->
<h2 style="color: #aaa; background-color: #fff;">Explore Our Features</h2>
<!-- Correct -->
<h2 style="color: #000; background-color: #fff;">Explore Our Features</h2> demo</p>1.4.8 Presentación visual
Resolución de espaciado de línea insuficiente en los párrafos
Un espaciado adecuado entre líneas y entre párrafos mejora la legibilidad, especialmente para los usuarios con dislexia o baja visión.
Localice el elemento
<p>en su código HTML.En el CSS del elemento
<p>, localice la propiedad CSSline-heighty establézcala en al menos 1.5 veces el tamaño de la fuente.
Nota: Puede hacerlo mediante estilos en línea o una clase CSS.En el CSS del elemento
<p>, localice la propiedad CSSmargin-bottomy establézcala en al menos 1.5 veces la altura de línea (por ejemplo,1.5em).
Ejemplo
<!-- Incorrect -->
<p style="line-height: 1.2; margin-bottom: 0.8em;">This is a sample paragraph.</p>
<!-- Correct -->
<p style="line-height: 1.5; margin-bottom: 1.5em;">This is a sample paragraph.</p>
Resolución de la alineación justificada del texto en los párrafos
El texto totalmente justificado puede crear un espaciado irregular entre las palabras, lo que dificulta la lectura para algunos usuarios, especialmente para quienes tienen discapacidades cognitivas o visuales.
En su código HTML, localice el elemento
<p>.En el CSS del elemento
<p>, verifique si se aplicatext-align: justify;.Elimine el valor
justifyy establezca la alineación enleften su lugar.
Nota: También puede hacerlo mediante estilos en línea o una clase CSS.
Ejemplo
<!-- Incorrect -->
<p style="text-align: justify;">This is a sample paragraph.</p>
<!-- Correct -->
<p style="text-align: left;">This is a sample paragraph.</p>Resolución de tamaños de fuente absolutos en los párrafos
Usar unidades absolutas (por ejemplo, px, pt o cm) para los tamaños de fuente puede dificultar el cambio de tamaño del texto y causar problemas a los usuarios con baja visión o que utilizan ampliadores de pantalla para leer. Para garantizar una mejor accesibilidad en distintos dispositivos y tamaños de pantalla, los tamaños de fuente deben definirse en unidades relativas (por ejemplo, em, rem, % o vw).
En su código HTML, localice el elemento
<p>.En los estilos CSS del elemento
<p>, localice el atributofont sizeque utiliza unidades absolutas (por ejemplo,px,pt,cm).Reemplace sus unidades absolutas por unidades relativas (por ejemplo,
em,rem,%) actualizando los estilos en línea o la clase CSS correspondiente.
Ejemplo
<!-- Incorrect --> <p style="font-size: 16px;">Welcome to our website! Enjoy exploring our features.</p> <!-- Correct --> <p style="font-size: 1rem;">Welcome to our website! Enjoy exploring our features.</p>
Resolución de alturas de línea absolutas en los párrafos
Definir las alturas de línea con unidades absolutas (como px, pt o cm) puede causar problemas cuando los usuarios intentan ajustar el texto para mejorar la legibilidad, en particular quienes tienen discapacidades visuales. Para garantizar una mejor accesibilidad para distintos usuarios, las alturas de línea deben definirse con unidades relativas (como em, rem o %).
En su código HTML, localice el elemento
<p>.En el CSS del elemento
<p>, localice la altura de línea que utiliza unidades absolutas (por ejemplo,px,pt,cm).Reemplace los valores de sus unidades absolutas por unidades relativas (por ejemplo,
em,remo%) actualizando los estilos en línea o la clase CSS correspondiente.
Ejemplo
<!-- Incorrect --> <p style="line-height: 24px;">The counseling center offers free sessions for all students.</p> <!-- Correct --> <p style="line-height: 1.5em;">The counseling center offers free sessions for all students.</p>
1.4.10 Reflujo
El contenido debe ajustarse y reorganizarse automáticamente para seguir siendo totalmente utilizable y legible en pantallas estrechas de hasta 320 píxeles de ancho.
Resolución de problemas de restricción del viewport
Establecer las propiedades correctas del viewport ayuda a que el contenido se muestre correctamente en todos los tamaños de pantalla sin que los usuarios tengan que desplazarse horizontalmente.
En su HTML, vaya a la sección
<head>de la página.Dentro de la sección
<head>, agregue la etiqueta<meta name="viewport">.Si ya hay una etiqueta
<meta name="viewport">pero contiene configuraciones restrictivas, actualice su atributocontentacontent="width=device-width, initial-scale=1".
Ejemplo
<!-- Incorrect -->
<meta name="viewport" content="width=500">
<!-- Correct -->
<meta name="viewport" content="width=device-width, initial-scale=1">1.4.11 Contraste de elementos no textuales
Resolución de controles con problemas de bajo contraste
El bajo contraste en los componentes de la interfaz de usuario y en los gráficos puede dificultar que los usuarios con baja visión los identifiquen e interactúen con ellos. Componentes como botones, campos de entrada y menús de selección deben tener una relación de contraste de al menos 3:1 con los colores adyacentes.
- En su código HTML, localice el componente de la interfaz de usuario que se marcó, como un
select,textareaoinput. - Actualice los estilos CSS del componente para asegurarse de que los colores de su borde, fondo y texto tengan una relación de contraste de al menos 3:1 con los colores adyacentes.
Ejemplo:
<input type="text" style="border: 1px solid #333;">
1.4.12 Espaciado del texto
El contenido debe seguir siendo fácil de leer y funcionar correctamente cuando los usuarios aumentan el espaciado entre letras, palabras y líneas a los tamaños mínimos estándar.
Resolución del espaciado de letras inaccesible
Un espaciado de letras accesible ayuda a los usuarios con discapacidades visuales o cognitivas a leer el texto con mayor comodidad.
En su código HTML, busque el elemento con CSS que controla el espaciado de letras (por ejemplo,
<span style="letter-spacing: 0.08em !important;">).Elimine
!importantdel valor deletter-spacingsi se utiliza.Establezca el valor de
letter-spacingen al menos0.12em.
Ejemplo:
<!-- Incorrect -->
<span style="letter-spacing: 0.08em !important;">Inaccessible letter spacing example.</span>
<!-- Correct -->
<span style="letter-spacing: 0.12em;">Accessible letter spacing example.</span>Resolución del espaciado de palabras inaccesible
Un espaciado de palabras adecuado mejora la legibilidad para los usuarios que dependen de un espaciado ajustado para mayor claridad.
En su HTML, busque el elemento con CSS que controla el espaciado de palabras (por ejemplo,
<p style="word-spacing: 0.1em !important;">).Elimine
!importantdel valor deword-spacingsi se utiliza.Establezca el valor de
word-spacingen al menos0.16em.
Ejemplo
<!-- Incorrect -->
<p style="word-spacing: 0.1em !important;">Inaccessible word spacing example.</p>
<!-- Correct -->
<p style="word-spacing: 0.16em;">This is an example paragraph with accessible word spacing.</p>Resolución de la altura de línea inaccesible
Una altura de línea accesible mejora la legibilidad y ayuda a los usuarios a navegar por los bloques de texto con mayor facilidad.
En su código HTML, busque el elemento con CSS que controla la altura de línea (por ejemplo,
<div style="line-height: 1.2 !important;">).Elimine
!importantdel valor deline-heightsi se utiliza.Establezca el valor de
line-heighten al menos1.5.
Ejemplo
<!-- Incorrect -->
<div style="line-height: 1.2 !important;">Inaccessible line height example.</div>
<!-- Correct -->
<div style="line-height: 1.5;">This block of text has accessible line height.</div>2.1.1 Teclado
Todas las funciones y controles deben poder utilizarse solo con un teclado, sin necesidad de presionar teclas rápidamente ni dentro de un plazo específico.
Resolución de regiones desplazables inaccesibles
Todas las partes de una página desplazable deben poder operarse con un teclado. Esto permite que los usuarios que dependen de la navegación con teclado se desplacen y accedan al contenido.
En su código HTML, localice el contenedor desplazable (por ejemplo,
<div>o<section>conoverflow: autoooverflow: scrollen CSS).Dentro del elemento desplazable, localice o agregue el atributo
tabindex.Establezca
tabindex="0"para que la región desplazable pueda recibir el foco con un teclado.
Ejemplo
<!-- Incorrect -->
<div style="overflow: auto; height: 200px;">
<p>This content cannot be scrolled using the keyboard.</p>
</div>
<!-- Correct -->
<div style="overflow: auto; height: 200px;" tabindex="0">
<p>This content can now be scrolled using the keyboard.</p>
</div>Resolución de marcos en línea inaccesibles
Los marcos en línea no deben usar valores negativos de tabindex, ya que esto impide que los usuarios de teclado accedan a ellos.
En su código HTML, localice el elemento de marco en línea (
<iframe>).Dentro del elemento
<iframe>, localice el atributotabindex.Elimine cualquier valor negativo de tabindex (por ejemplo,
tabindex="-1") y reemplácelo portabindex="0"para que sea accesible con el teclado.
Ejemplo
<!-- Incorrect -->
<iframe src="video.html" tabindex="-1"></iframe>
<!-- Correct -->
<iframe src="video.html" tabindex="0"></iframe>2.2.1 Tiempo ajustable
Resolución de cambios de contenido temporizado controlados por el usuario
Para garantizar la accesibilidad de los usuarios, el contenido que se actualiza automáticamente debe poder ser controlado por el usuario o estar señalizado de forma adecuada, de modo que puedan ajustar la frecuencia de actualización.
En su código HTML, localice el elemento
<meta>dentro del elemento<body>.
Nota: Si el elemento<meta>no existe, agregue una nueva etiqueta<meta>.Agregue un atributo
http-equiv="refresh"al elemento<meta>.Si el elemento
<meta>existe pero el tiempo de actualización es demasiado corto, ajuste el atributocontentpara establecer un intervalo de actualización más largo (por ejemplo,content="72000").
Ejemplo
<!-- Incorrect -->
<meta http-equiv="refresh" content="5">
<!-- Correct -->
<meta http-equiv="refresh" content="72000">2.2.2 Pausar, detener, ocultar
Resolución de etiquetas obsoletas en el contenido
Para promover prácticas web modernas y accesibles, evite usar elementos HTML obsoletos, como <blink> y <marquee>, ya que muchas tecnologías de asistencia no los admiten y pueden causar problemas de accesibilidad.
En su código HTML, localice las etiquetas obsoletas, como
<blink>o<marquee>.Reemplace la etiqueta
<blink>o<marquee>por una alternativa más accesible, como una etiqueta<span>, y aplique el CSS apropiado para la animación o el estilo.
Ejemplo
<!-- Incorrect -->
<blink>Registration ends soon!</blink>
<marquee>Scrolling announcement</marquee>
<!-- Correct -->
<span style="animation: blink-animation 1s infinite;">Registration ends soon!</span>
<div style="animation: scroll-left 10s linear infinite;">Scrolling announcement</div>2.4.1 Omitir bloques
Resolución del mecanismo de omisión faltante
Un enlace “Saltar al contenido principal” ayuda a los usuarios a omitir los elementos de navegación repetitivos y a ir directamente al contenido central de la página.
En su código HTML, localice el elemento
<body>.Justo después de la etiqueta de apertura
<body>, agregue una etiqueta<a>y utilice el atributohrefpara apuntar a la sección de contenido principal (el elemento<main>). Este enlace permite a los usuarios omitir la navegación e ir directamente al contenido principal.
Nota: Puede usar una referencia de ID a la sección de contenido principal (por ejemplo, id="main-content") para facilitar la navegación.
Ejemplo
<!-- Incorrect -->
<body>
<nav>...</nav>
<main id="main-content">...</main>
</body>
<!-- Correct -->
<body>
<a href="#main-content">Skip to main content</a>
<nav>...</nav>
<main id="main-content">...</main>
</body>2.4.2 Página con título
Resolución de títulos de página faltantes
Un título descriptivo ayuda a los usuarios a comprender el propósito de la página y facilita la navegación, especialmente para los usuarios de lectores de pantalla.
En su código HTML, localice la sección
<head>de la página.Agregue un elemento
<title>dentro del elemento<head>.Ingrese un título claro y descriptivo para la página dentro de la etiqueta
<title>.
Ejemplo
<!-- Incorrect -->
<head>
</head>
<!-- Correct -->
<head>
<title>Contact Us - YuJa Inc.</title>
</head>2.4.3 Orden del foco
Los usuarios de teclado deben poder desplazarse por el contenido en un orden claro y lógico que tenga sentido.
Resolver un orden de foco incorrecto
El orden de foco garantiza que los elementos interactivos se puedan recorrer en una secuencia lógica e intuitiva para los usuarios de teclado.
En su código HTML, localice el elemento interactivo señalado (p. ej.,
<a>,<button>,<input>, etc.).Revise su posición en el código HTML y asegúrese de que siga una secuencia lógica desde la parte superior de la página o sección hasta la inferior, sin omitir ningún elemento importante. Obtenga más información sobre el orden de foco.
Nota:
Si algún elemento no está en el orden de foco deseado, cambie sus valores de
tabindexpara garantizar una secuencia de foco correcta.Si va a hacer que un elemento personalizado reciba el foco (como un
<div>o un<span>), usetabindex="0"para incluirlo en el orden natural de tabulación.
Ejemplo
<!-- Incorrect-->
<button>Start</button>
<input type="text" placeholder="First Name" tabindex="3">
<input type="text" placeholder="Last Name" tabindex="1">
<button>Submit</button>
<!-- Correct-->
<button>Start</button>
<input type="text" placeholder="First Name" tabindex="1">
<input type="text" placeholder="Last Name" tabindex="2">
<button>Submit</button>2.4.4 Propósito de los enlaces (en contexto)
El propósito de cada enlace debe ser evidente a partir del propio texto del enlace o de la información que lo rodea.
Resolver descripciones de enlace faltantes
Cada enlace debe describir claramente su propósito para ayudar a los usuarios a entender qué ocurrirá cuando lo activen.
En su código HTML, localice el elemento que se usa como enlace (p. ej.,
<a>,<input>o<button>con una acción de enlace).Reemplace el texto vago del enlace (p. ej., “Haga clic aquí” o “Más”) por un texto breve y descriptivo que explique el destino o la acción.
Nota: Si el enlace usa íconos o imágenes, agregue un nombre accesible mediante el atributoaria-labelotitle.
Ejemplo
<!-- Incorrect -->
<a href="/reports">Report</a>
<!-- Correct -->
<a href="/reports">View quarterly reports</a>
2.4.5 Múltiples vías
Resolver la falta de varios métodos de navegación
Las páginas deben ofrecer más de una forma para que los usuarios localicen el contenido. Las opciones habituales incluyen puntos de referencia de navegación, una función de búsqueda o un enlace para “omitir la navegación”. Agregar al menos dos métodos ayuda a que los usuarios con distintas necesidades naveguen la página con más facilidad.
- En su código HTML, agregue otra forma para que los usuarios localicen el contenido, ya sea:
-
-
Agregando un punto de referencia de navegación para identificar la región de navegación principal.
<nav> <ul> <li><a href="/home">Home</a></li> <li><a href="/courses">Courses</a></li> <li><a href="/contact">Contact</a></li> </ul> </nav> -
Agregando un punto de referencia de búsqueda a una función de búsqueda, si existe.
<form role="search"> <label for="search">Search</label> <input id="search" type="text" name="q"> <button type="submit">Go</button> </form> -
Agregando un enlace para “omitir la navegación” en la parte superior de su página, de modo que los usuarios puedan saltar el contenido repetido.
<a href="#maincontent" class="skip-link">Skip to main content</a>
-
-
- Guarde los cambios y vuelva a cargar la página.
2.4.6 Encabezados y etiquetas
Resolver etiquetas faltantes en los campos de formulario
Los campos de formulario necesitan etiquetas descriptivas para que los usuarios entiendan qué información deben ingresar.
En su código HTML, localice el elemento
<form>y sus campos (p. ej.,<input>,<textarea>).Para cada campo, agregue un elemento
<label>antes de él.Dentro del elemento
<label>, incluya un atributofor=""con un valor que coincida con eliddel campo de formulario correspondiente.
Ejemplo
<!-- Incorrect -->
<input type="email" id="email" name="email" />
<!-- Correct -->
<label for="email">Email address</label> <input type="email" id="email" name="email" />rly reports</a>Resolver botones sin etiqueta
Los botones deben tener etiquetas claras que indiquen la acción que realizan. Las etiquetas accesibles garantizan que los usuarios de lectores de pantalla entiendan el propósito del botón.
En su código HTML, localice el elemento
<button>.Dentro del elemento
<button>, agregue un atributoaria-label.Dentro del atributo
aria-label, ingrese una descripción breve que comunique el propósito del botón.
Ejemplo
<!-- Incorrect -->
<button>Close</button>
<!-- Correct -->
<button aria-label="Close window">Close</button>2.4.8 Ubicación
Resolver la falta de indicadores de ubicación de la página
Las páginas deben ofrecer a los usuarios una forma de entender dónde se encuentran dentro del sitio o la aplicación. Esto se puede lograr agregando rutas de navegación (breadcrumbs), enlaces al mapa del sitio, indicadores de la página actual o enlaces relacionales.
- En su código HTML, localice la sección donde se encuentran los elementos de navegación o donde se identifica la estructura de la página (p. ej., los elementos dentro de
nav,headero cerca de la parte superior delbodyde la página). - Agregue un indicador de ubicación de la página a sus elementos de navegación, ya sea:
-
Agregando una ruta de navegación (breadcrumb): Inserte un elemento
navcon una lista ordenada que muestre la ruta hasta la página actual. Es una ayuda de navegación que muestra a los usuarios la ruta que siguieron para llegar a su ubicación actual.<nav aria-label="Breadcrumb"> <ol> <li><a href="/home">Home</a></li> <li><a href="/courses">Courses</a></li> <li aria-current="page">Course Details</li> </ol> </nav> -
Agregando un enlace al mapa del sitio: Coloque el enlace al mapa del sitio dentro del
footerde su código HTML.<footer> <a href="/sitemap">Sitemap</a> </footer> -
Agregando un indicador de la página actual: Localice la etiqueta
ade la página activa e incluya el atributoaria-current="page".<nav> <ul> <li><a href="/home">Home</a></li> <li><a href="/about" aria-current="page">About</a></li> </ul> -
Agregando enlaces relacionales: Localice la sección
headde su código HTML e inserte elementoslinkpara las páginas anterior, siguiente o superior.<link rel="prev" href="/chapter-1"> <link rel="next" href="/chapter-3"> <link rel="up" href="/table-of-contents">
-
- Confirme que haya al menos un indicador de ubicación.
- Guarde los cambios y vuelva a cargar la página.
2.4.9 Propósito del enlace (solo el enlace)
Resolver problemas con el propósito de los enlaces
Los enlaces que tienen el mismo nombre accesible (el texto del enlace o su etiqueta aria-label) deben conducir al mismo destino. Si dos enlaces se ven iguales pero llevan a lugares distintos, los usuarios pueden confundirse.
- En su código HTML, localice los enlaces señalados por tener el mismo texto de enlace o aria-label.
- Resuelva el problema siguiendo una de las opciones a continuación:
-
Si los enlaces deben apuntar al mismo destino, localice la etiqueta
ade los enlaces y luego actualice los valores dehrefque contienen para que sean iguales.<a href="/about">Read more</a> <a href="/about">Read more</a> -
Si los enlaces deben apuntar a destinos diferentes, cambie el texto del enlace o el
aria-labelpara que describan claramente cada propósito.<a href="/about">Read more about us</a> <a href="/contact">Read more about contacting us</a>
-
- Guarde los cambios y vuelva a cargar la página.
2.4.10 Encabezados de sección
Resolver la falta de encabezados de página
Los encabezados ayudan a los usuarios a entender la estructura de una página. Sin encabezados con una estructura adecuada, a las personas que usan tecnologías de asistencia les puede resultar difícil navegar y comprender el contenido.
- En su código HTML, localice el área de contenido principal de la página (p. ej., el
body). -
Agregue elementos de encabezado que describan el tema principal de la página.
Nota: Cada página debe comenzar con al menos un elementoh1. Si la página tiene varias secciones, agregue subencabezados (p. ej.,h2,h3,h4)<h1>Course Overview</h1> <h2>Course Objectives</h2> <h2>Course Materials</h2> <h3>Required Readings</h3> <h3>Optional Resources</h3> - Asegúrese de que haya al menos un encabezado y de que los encabezados formen un esquema claro del contenido de la página.
- Guarde los cambios y vuelva a cargar la página.
Resolver la falta de encabezados de sección
Cada elemento section debe incluir un encabezado que describa su propósito. Sin un encabezado, es posible que los usuarios no entiendan el contenido o la función de esa sección.
- En su código HTML, localice el elemento
sectionque fue señalado. - Agregue un elemento
h2como primer elemento secundario dentro desection.
Nota: El nivel del encabezado puede depender de la estructura de encabezados de su página. -
Dentro del elemento
h2, incluya un encabezado para su sección.<section> <h2>Advanced Accessibility</h2> <p>This course covers advanced topics in accessibility.</p> </section> - Guarde los cambios y vuelva a cargar la página.
2.5.3 Etiqueta en el nombre
Resolver la discrepancia entre el nombre accesible y la etiqueta visible
Asegúrese de que el nombre accesible de los elementos interactivos coincida con su etiqueta visible, para evitar confusiones y garantizar la claridad para los usuarios que dependen de tecnologías de asistencia.
En su código HTML, localice el elemento interactivo (p. ej.,
button,div) que tiene un atributoaria-label.Reemplace el contenido del elemento por el mismo texto que se usa en el atributo
aria-label.
Ejemplo
<!-- Incorrect -->
<button aria-label="Submit Form">Send</button>
<!-- Correct -->
<button aria-label="Submit Form">Submit Form</button>2.5.5 Tamaño del objetivo
Resolver un tamaño insuficiente de los elementos interactivos
Los elementos interactivos, como los botones, los enlaces y los controles de formulario, deben ser lo bastante grandes para que los usuarios puedan interactuar con ellos fácilmente con un mouse o un teclado.
En su código HTML, localice el elemento interactivo (p. ej.,
button,input,textarea).Localice los atributos
widthyheightdentro de su elemento.Ajuste los atributos
widthyheightpara asegurar que el tamaño del elemento sea de al menos 44 px por 44 px (p. ej.,width: 44px; height: 44px).
Ejemplo
<!-- Incorrect -->
<button style="width: 16px; height: 16px;">More Infomation</button>
<!-- Correct -->
<button style="width: 44px; height: 44px;">More Information</button>2.5.8 Tamaño del objetivo (mínimo)
Resolver un tamaño pequeño de los objetivos táctiles
Los objetivos táctiles, como los botones, los enlaces u otros elementos interactivos, deben ser lo bastante grandes para que los usuarios de dispositivos con pantalla táctil puedan tocarlos fácilmente.
En su código HTML, localice el elemento interactivo (p. ej.,
button,input,textarea).Localice los atributos
widthyheightdentro de su elemento.Ajuste los atributos
widthyheightpara asegurar que el tamaño del elemento sea de al menos 24 px por 24 px (p. ej.,width: 24px; height: 24px).
Ejemplo
<!-- Incorrect -->
<button style="width: 16px; height: 16px;">Infomation</button>
<!-- Correct -->
<button style="width: 24px; height: 24px;">Infomation</button>3.1.1 Idioma de la página
Resolver la falta de declaración de idioma
Cada página web debe especificar el idioma en el que está escrita, para que las tecnologías de asistencia, como los lectores de pantalla, puedan leer el contenido correctamente.
En su código HTML, localice el elemento
<html>.Dentro del elemento
<html>, agregue un atributolange ingrese un valor que refleje el idioma correcto de la página (p. ej.,lang="en"para inglés,lang="es"para español).
Ejemplo
<!-- Incorrect --> <html> <!-- Correct --> <html lang="en">
Resolver un idioma declarado que no coincide
El idioma declarado de la página debe coincidir con el idioma real que se usa en el contenido, para que las tecnologías de asistencia puedan interpretar y presentar el contenido correctamente.
En su código HTML, localice el elemento
<html>.Dentro del elemento
<html>, localice los atributoslangyxml:lang.Establezca el valor de los atributos
langyxml:langen el mismo código de idioma válido que coincida con el idioma usado en su contenido.
Ejemplo
<!-- Incorrect --> <html lang="fr" xml:lang="en"> <!-- Correct --> <html lang="en" xml:lang="en">
3.1.2 Idioma de las partes
Resolver un valor no válido en el atributo lang
Si partes de su página web están en un idioma diferente, debe informar del cambio a las tecnologías de asistencia, como los lectores de pantalla. Esto ayuda a los usuarios que dependen de estas herramientas a comprender el contenido en el idioma correcto.
En su código HTML, localice el elemento de contenido (p. ej.,
<p>,<span>,<div>) donde se señala el atributolangno válido.Actualice el atributo
langcon un valor válido que refleje el idioma correcto (p. ej.,lang="en"para inglés,lang="es"para español).
Ejemplo
<!-- Incorrect -->
<p lang="espanol-spain">Este es un párrafo en español.</p> <!-- Correct --> <p lang="es">Este es un párrafo en español.</p>
3.2.2 Al ingresar datos
Resolver la falta de botones de envío
Los formularios deben tener un activador explícito para garantizar que los usuarios, especialmente quienes usan teclados o lectores de pantalla, puedan enviar los datos correctamente. Las acciones solo deben ocurrir cuando el usuario activa intencionalmente un elemento de envío.
Localice el elemento
<form>en su HTML.Dentro del elemento
form, agregue un<button type="submit">o un<input type="submit">antes de la etiqueta de cierre</form>si falta.Use un botón de envío con una etiqueta clara que envíe el formulario solo cuando se haga clic en él o se presione Enter (p. ej.,
<button type="submit">Submit</button>).
Ejemplo
<!-- Incorrect --> <form action="/submit" method="post">
<input type="text" name="name" required>
</form> <!-- Correct -->
<form action="/submit" method="post">
<input type="text" name="name" required>
<button type="submit">Submit</button>
</form>
3.2.4 Identificación consistente
Resolver textos de enlace no descriptivos
Los enlaces deben tener un texto que describa claramente su propósito o destino.
En su HTML, localice el elemento
<a>con un texto vago o genérico, como “haga clic aquí”.Reemplace el texto entre las etiquetas
<a>por un texto de enlace descriptivo que explique el destino o el propósito.
Ejemplo
<!-- Incorrect --> <a href="/report">Click here</a> <!-- Correct --> <a href="/report">View Annual Report</a>
3.2.5 Cambio bajo solicitud
Informar a los usuarios sobre las pestañas nuevas
Si un enlace se abre en una pestaña o ventana nueva, se debe informar claramente a los usuarios. Esto ayuda a evitar confusiones, especialmente en las personas que usan lectores de pantalla o navegación con teclado, al establecer la expectativa correcta.
En su código HTML, localice el elemento
<a>con el atributotarget="_blank".Agregue un
aria-labelo actualice el texto visible para incluir “(se abre en una pestaña nueva)”.
Ejemplo
<!-- Incorrect --> <a href="https://example.com" target="_blank">Visit Example</a> <!-- Correct --> <a href="https://example.com" target="_blank" aria-label="Visit Example (opens in a new tab)">Visit Example</a>
3.3.1 Identificación de errores
Marcar como atómicas las descripciones de errores de los campos de entrada
Cuando los errores de formulario se anuncian mediante una región activa con aria-live="assertive", esta también debe incluir aria-atomic="true". Esto garantiza que el mensaje de error completo se lea en voz alta a los usuarios de lectores de pantalla.
En su código HTML, localice el elemento con
aria-live="assertive"que se usa para anunciar mensajes de error.Agregue el atributo
aria-atomic="true"al mismo elemento.
Ejemplo
<!-- Incorrect --> <label for="email">Email</label> <input type="email" id="email" name="email" required> <div id="email-error" aria-live="assertive"> Please enter a valid email address. </div> <!-- Correct --> <label for="email">Email</label> <input type="email" id="email" name="email" required> <div id="email-error" aria-live="assertive" aria-atomic="true"> Please enter a valid email address. </div>
3.3.2 Etiqueta de entrada
Resolución de etiquetas de entrada poco claras
Los campos de entrada de los formularios deben tener nombres accesibles para que los usuarios, incluidos quienes usan lectores de pantalla, sepan qué información se solicita. Sin una etiqueta o un aria-label, el propósito del campo de entrada no queda claro.
- En su código HTML, localice el elemento
inputque se marcó. -
Dentro del elemento, agregue un atributo
aria-labelpara proporcionar un nombre accesible al campo de entrada.<input type="text" aria-label="First Name"> - Guarde los cambios y vuelva a cargar la página.
4.1.2 Nombre, rol, valor
Los elementos de la interfaz de usuario deben proporcionar su nombre, su propósito y su valor actual para que las tecnologías de asistencia puedan comprenderlos e interactuar con ellos.
Resolución de nombres accesibles faltantes en elementos de la interfaz de usuario
Todos los botones, campos de entrada y demás elementos interactivos deben tener nombres accesibles para que los lectores de pantalla puedan anunciar lo que hace cada elemento.
En su código HTML, localice los componentes de la interfaz de usuario, como
<input>,<button>,<select>u otros elementos en los que se pueda hacer clic.Dentro del componente, agregue un nombre accesible mediante uno de los siguientes métodos:
Agregue un elemento
<label>con un atributoforvinculado aliddel elemento (p. ej.<label for="username">Username</label>).Use el atributo
aria-labelpara describir el elemento directamente (p. ej.aria-label="Search this site").Use el atributo
aria-labelledbypara hacer referencia a otro elemento que contenga el nombre (p. ej.aria-labelledby="search-label").
Ejemplo
<!-- Incorrect --> <input type="text" id="username" name="username"> <!-- Correct --> <input type="text" id="username" name="username" aria-label="Username">
Resolución de nombres accesibles faltantes en enlaces
Los enlaces deben tener nombres accesibles que describan su destino o su función.
En su código HTML, localice el elemento
<a>.Dentro del elemento
<a>, agregue un atributotitleoaria-labelque describa claramente adónde lleva el enlace o qué hace.
Ejemplo
<!-- Incorrect --> <a href="/downloads/report.pdf">Download Report</a> <!-- Correct --> <a href="/downloads/report.pdf" title="Download the 2024 Annual Report">Download Report</a>
Resolución de nombres accesibles faltantes en botones
Los botones deben tener etiquetas claras que indiquen qué acción realizan. Las etiquetas accesibles garantizan que los usuarios de lectores de pantalla comprendan el propósito del botón.
-
En su código HTML, localice el elemento
<button>. - Dentro del elemento
<button>, agregue un atributoaria-label. - Dentro del atributo
aria-label, ingrese una descripción breve que explique claramente el propósito del botón.
Ejemplo
<!-- Incorrect --> <button>×</button> <!-- Correct --> <button aria-label="Close window">×</button>
Resolución de controles interactivos anidados
Los controles interactivos no deben estar anidados dentro de otros elementos interactivos. Anidar controles (p. ej., un <button> dentro de un enlace, un <a> dentro de un <button>) puede confundir a los usuarios de tecnologías de asistencia y provocar un comportamiento inesperado o defectuoso del teclado y del lector de pantalla.
- En su código HTML, localice el control interactivo que se encuentra dentro de otro control interactivo (p. ej.,
<button>,<a>,<input>). - Actualice el código HTML para que cada elemento interactivo sea independiente y realice una sola acción.
Ejemplo
<!-- Incorrect --> <a href="/profile"> <button>View Profile</button> </a> <!-- Correct --> <a href="/profile">View Profile</a>
Resolución de nombres accesibles faltantes en <iframe>
Los elementos <iframe> deben tener un nombre accesible claro y descriptivo para que los usuarios de lectores de pantalla comprendan qué contenido tiene el marco incrustado. Sin una etiqueta, las tecnologías de asistencia solo pueden anunciar “frame” o “iframe”, lo que no proporciona ningún contexto útil.
- En su código HTML, localice el elemento
<iframe>. -
Agregue un nombre accesible mediante uno de los siguientes métodos:
- Un atributo
title(el más común y recomendado). - Un atributo
aria-labeloaria-labelledbyque haga referencia a texto visible en la página.
- Un atributo
- Asegúrese de que la etiqueta describa claramente el propósito o el contenido del marco incrustado.
- Mantenga la descripción breve pero significativa para que los usuarios sepan qué esperar.
Ejemplo
<!-- Incorrect --> <iframe src="https://yuja.com/map"></iframe> <!-- Correct --> <iframe src="https://yuja.com/map" title="Map showing our office location"></iframe>
Problemas de accesibilidad de ARIA
Resolución de nombres accesibles faltantes en enlaces
Los enlaces deben tener nombres accesibles que describan su destino o su función.
En su código HTML, localice el elemento
<a>.Dentro del elemento
<a>, agregue un atributotitleoaria-labelque describa claramente adónde lleva el enlace o qué hace.
Ejemplo
<!-- Incorrect --> <a href="/downloads/report.pdf">Download Report</a> <!-- Correct --> <a href="/downloads/report.pdf" title="Download the 2024 Annual Report">Download Report</a>
Eliminación de atributos ARIA no válidos
Los atributos ARIA solo deben usarse en roles o elementos HTML específicos. Si se usa un atributo ARIA donde no está permitido, no funcionará correctamente y puede confundir a los usuarios.
En su código HTML, localice el elemento con atributos ARIA no válidos (p. ej.,
aria-liveen<button>,aria-expandeden<div>).Elimine los atributos ARIA no válidos o agregue el atributo de rol correcto que corresponda al atributo ARIA.
Ejemplo
<!-- Incorrect --> <div aria-checked="true">Option 1</div> <!-- Correct --> <div role="checkbox" aria-checked="true">Option 1</div>
Resolución de roles ARIA no válidos
Solo deben usarse roles ARIA válidos para definir el rol de los elementos.
En su código HTML, localice el atributo
roleen cualquier elemento.Reemplace cualquier valor de rol no válido por un rol ARIA válido definido en la especificación de ARIA.
Ejemplo
<!-- Incorrect --> <div role="navigationbar">Main Menu</div> <!-- Correct --> <div role="navigation">Main Menu</div>
Resolución de nombre accesible faltante en propiedades braille
Cuando se usan propiedades braille, deben tener un nombre accesible correspondiente que las tecnologías de asistencia puedan comprender.
En su código HTML, localice cualquier elemento con el atributo
aria-braillelabeloaria-brailleroledescription.Dentro del elemento, agregue un
aria-labelque coincida con el significado de la etiqueta braille.
Ejemplo
<!-- Incorrect --> <div aria-braillelabel="Submit Button"></div> <!-- Correct --> <div aria-braillelabel="Submit Button" aria-label="Submit"></div>
Resolución de atributos ARIA condicionalmente incorrectos
Los atributos ARIA solo deben usarse cuando lo requiera el contexto del rol del elemento. Cuando se necesita un atributo, debe usarse de forma adecuada para garantizar una accesibilidad precisa.
En su código HTML, localice el elemento con el atributo ARIA marcado (p. ej.,
aria-expanded,aria-checked).Localice el
roledentro del elemento (p. ej.,role="button",role="checkbox").Consulte la especificación de roles ARIA para comprobar si el atributo es obligatorio para ese rol.
Elimine el atributo no válido para el rol del elemento.
Nota: Si el atributo es obligatorio, asegúrese de que su valor sea correcto.
Ejemplo
<!-- Incorrect --> <p aria-expanded="true">Click here for more details on the product.</p> <!-- Correct --> <p>Click here for more details on the product.</p>
Resolución del uso de roles ARIA obsoletos
Los roles ARIA obsoletos deben reemplazarse por los roles actualizados para mantener los estándares de accesibilidad.
En su código HTML, localice el elemento con el rol ARIA obsoleto (p. ej.,
role="presentation",role="toolbar").Reemplace el rol obsoleto por un rol ARIA válido que se ajuste mejor al propósito del elemento (p. ej.,
role="none",role="navigation").
Ejemplo
<!-- Incorrect --> <div role="toolbar"> <button>Save</button> <button>Cancel</button> </div> <!-- Correct --> <div role="navigation"> <button>Save</button> <button>Cancel</button> </div>
Resolución de diálogos ARIA no válidos
Los elementos de diálogo deben tener un nombre accesible válido para garantizar que se describan correctamente para las tecnologías de asistencia.
En su código HTML, localice el elemento con
role="dialog"orole="alertdialog"(p. ej.,<div role="dialog">).Dentro del elemento, agregue un atributo
aria-labeloaria-labelledbye incluya un nombre accesible para el diálogo.
Ejemplo
<!-- Incorrect --> <div role="dialog"> <h2>Unsaved Changes</h2> <p>You have unsaved changes. Are you sure you want to leave?</p> </div> <!-- Correct --> <div role="dialog" aria-label="Unsaved Changes"> <h2>Unsaved Chages</h2> <p>You have unsaved changes. Are you sure you want to leave?</p> </div>
Resolución de elemento body oculto
Asegúrese de que el elemento body no esté oculto de forma indebida para las tecnologías de asistencia.
En su código HTML, localice el elemento
<body>.Elimine cualquier atributo
aria-hidden="true"del elemento<body>para garantizar que el contenido siga siendo accesible.
Ejemplo
<!-- Incorrect --> <body aria-hidden="true"> <h1>Welcome to Our Website</h1> <p>Explore our features and services.</p> </body> <!-- Correct --> <body> <h1>Welcome to Our Website</h1> <p>Explore our features and services.</p> </body>
Resolución de nombres accesibles faltantes en campos de entrada
Los campos de entrada deben tener un nombre accesible que describa su propósito a los usuarios.
En su código HTML, localice el elemento del campo de entrada (p. ej.,
<input>,<select>,<textarea>).Dentro del elemento, agregue un atributo
aria-labeloaria-labelledbypara incluir un nombre accesible para el campo de entrada.
Ejemplo
<!-- Incorrect --> <input type="text" name="email"> <!-- Correct --> <input type="text" name="email" aria-label="Email address">
Resolución del uso de atributos ARIA prohibidos
Algunos atributos ARIA no están permitidos en ciertos elementos porque pueden confundir a los lectores de pantalla o generar problemas de accesibilidad.
En su código HTML, localice el elemento con un atributo ARIA prohibido (p. ej.,
aria-presseden un elemento no interactivo).Elimine el atributo ARIA prohibido del elemento.
Ejemplo
<!-- Incorrect --> <div aria-pressed="true"> <span>Save changes</span> </div> <!-- Correct --> <div> <span>Save changes</span> </div>
Resolución de atributos ARIA obligatorios faltantes
Algunos roles ARIA necesitan atributos específicos para comunicar su propósito a las tecnologías de asistencia. Si faltan esos atributos, es posible que los usuarios que dependen de lectores de pantalla no comprendan cómo se comporta el elemento. Obtenga más información sobre qué atributos ARIA son obligatorios para cada rol.
En su código HTML, localice el elemento con el rol ARIA marcado (p. ej.,
role="checkbox",role="slider",role="progressbar").Identifique el atributo ARIA obligatorio que falta para ese rol (p. ej.,
aria-checked,aria-valuenow,aria-valuemin).Agregue el atributo ARIA que falta con un valor adecuado que refleje el estado o el comportamiento del elemento.
Ejemplo
<!-- Incorrect --> <div role="slider" tabindex="0"></div> <!-- Correct --> <div role="slider" aria-valuemin="0" aria-valuemax="100" aria-valuenow="50" tabindex="0"></div>
Resolución de elementos secundarios ARIA obligatorios faltantes
Algunos roles principales requieren roles secundarios específicos para una accesibilidad adecuada. Si faltan, es posible que los lectores de pantalla no puedan interpretar correctamente la estructura. Obtenga más información sobre la lista de roles ARIA.
En su código HTML, localice el elemento principal con un rol que requiera elementos secundarios específicos (p. ej.,
role="list"debe contener elementos secundarios conrole="listitem").Agregue el elemento secundario obligatorio con los atributos
roleadecuados.
Ejemplo
<!-- Incorrect --> <div role="list"> <div>First Name</div> <div>Last Name</div> </div> <!-- Correct --> <div role="list"> <div role="listitem">First Name</div> <div role="listitem">Last Name</div> </div>
Resolución de elemento principal ARIA obligatorio faltante
Algunos roles ARIA deben estar dentro de un rol principal específico para conservar el significado semántico. Sin el elemento principal correcto, es posible que las tecnologías de asistencia no interpreten el elemento correctamente. Obtenga más información sobre la lista de roles ARIA.
En su código HTML, localice el elemento con un rol que requiera un elemento principal específico (p. ej.,
role="row"debe estar dentro derole="table"orole="rowgroup").Agregue el elemento principal obligatorio con los atributos
roleadecuados.
Ejemplo
<!-- Incorrect --> <div role="row"> <div role="cell">User Name</div> </div> <!-- Correct --> <div role="table"> <div role="row"> <div role="cell">User Name</div> </div> </div>
Resolución del uso de roles ARIA no válidos
Los roles ARIA no válidos no existen en la especificación de ARIA y las tecnologías de asistencia los ignoran, lo que puede dificultar la comprensión o la navegación de su contenido. Obtenga más información sobre la lista de roles ARIA.
En su código HTML, localice el elemento con un valor de rol no válido (p. ej.,
role="unsupportedrole",role="presentation").Reemplace el atributo
rolepor un rol válido según la función del elemento.
Ejemplo
<!-- Incorrect --> <div role="structure"> Content about accessibility. </div> <!-- Correct --> <div role="region" aria-label="Accessibility Info"> Content about accessibility. </div>
Resolución del uso de roles ARIA abstractos
Los roles ARIA abstractos no están pensados para usarse directamente en el código. Existen solo para definir características compartidas de otros roles y usarlos no afecta a la tecnología de asistencia. Obtenga más información sobre la lista de roles ARIA.
En su código HTML, localice el elemento que usa un rol ARIA abstracto (p. ej.,
role="input",role="command",role="widget").Reemplace el atributo
rolepor un rol concreto que refleje el propósito real del elemento.
Ejemplo
<!-- Incorrect --> <div role="command">Run</div> <!-- Correct --> <div role="button">Run</div>
Resolución del uso de roles ARIA no admitidos
La especificación de ARIA no reconoce los roles ARIA no admitidos, y es posible que no funcionen correctamente en todos los navegadores o lectores de pantalla. Esto puede generar confusión o que se ignore el contenido. Obtenga más información sobre la lista de roles ARIA.
En su código HTML, localice el elemento con un rol ARIA no admitido (p. ej.,
role="footnote",role="banneritem",role="error").Reemplace el atributo
rolepor un rol ARIA admitido que refleje el propósito del elemento.
Ejemplo
<!-- Incorrect -->
<span role="error">Invalid input</span>
<!-- Correct -->
<span role="alert">Invalid input</span>
Resolución del uso de descripciones de rol ARIA no válidas
Una descripción de rol personalizada incorrecta puede confundir a las tecnologías de asistencia y a los usuarios. Solo debe usarse cuando necesite reemplazar la descripción de rol predeterminada por algo más significativo.
En su código HTML, localice el elemento con un
aria-roledescriptionno válido.Elimine el
aria-roledescriptiono reemplácelo por unaria-labelpreciso.
Ejemplo:
<!-- Incorrect -->
<div role="button" aria-roledescription="Clicky thing">Submit</div>
<!-- Correct -->
<div role="button" aria-label="Submit Form">Submit</div>
Resolución de nombre accesible faltante en elementos de alternancia
Los elementos de alternancia, como las casillas de verificación, los botones de opción y los interruptores, necesitan nombres claros para que los lectores de pantalla puedan describir su estado y su función.
En su código HTML, localice el elemento de alternancia sin nombre accesible (p. ej.,
role="checkbox",role="radio",role="switch").Agregue un nombre accesible mediante el atributo
aria-labeloaria-labelledby.
Ejemplo
<!-- Incorrect -->
<div role="switch"></div>
<!-- Correct -->
<div role="switch" aria-label="Dark mode toggle"></div>Resolución de valores de atributos ARIA no válidos
Los atributos ARIA deben usar valores específicos. Usar un valor incorrecto puede confundir a las tecnologías de asistencia y generar problemas de accesibilidad. Obtenga más información sobre los valores de ARIA.
En su código HTML, localice el elemento con un valor ARIA no válido (p. ej.,
aria-expanded="perhaps",aria-checked="maybe").Reemplace el valor no válido por uno que permita la especificación de ARIA.
Ejemplo
<!-- Incorrect -->
<input type="checkbox" aria-checked="sometimes">
<!-- Correct -->
<input type="checkbox" aria-checked="true">Resolución de valores de aria-level no válidos
El atributo aria-level debe ser un número entero positivo que comience en 1. Se utiliza en elementos con un rol de encabezado para indicar su nivel en la estructura del documento.
En su código HTML, localice cualquier uso del atributo
aria-levelcon un valor de 0, un número negativo o un valor que no sea un número entero (p. ej.,aria-level="zero",aria-level="0",aria-level="-1")Reemplace el valor por un número entero positivo (1 o mayor).
Nota: solo debe utilizar el atributo aria-level en elementos con role="heading". Si el elemento no tiene un rol de encabezado, elimine el atributo.
Ejemplo
<!-- Incorrect -->
<div role="heading" aria-level="zero">Title</div>
<!-- Correct -->
<div role="heading" aria-level="1">Title</div>Resolución de atributos ARIA no válidos
Algunos atributos ARIA pueden estar mal escritos o usarse en un lugar incorrecto. Estos atributos no funcionarán y pueden inducir a error a las tecnologías de asistencia. Obtenga más información sobre los atributos ARIA.
En su código HTML, localice el elemento con un atributo ARIA no válido o mal escrito (p. ej.,
aria-unchecked,aria-visible,aria-foo).Elimine el atributo ARIA no válido o reemplácelo por uno válido.
Ejemplo
<!-- Incorrect -->
<button aria-unchecked="true">Submit</button>
<!-- Correct -->
<button aria-pressed="false">Submit</button>
Resolución de elementos enfocables que usan el rol de presentación
Los elementos con rol de presentación están pensados para que los lectores de pantalla los ignoren. Cuando estos elementos son enfocables, el rol de presentación puede confundir a los lectores de pantalla.
En su código HTML, localice cualquier elemento enfocable con
role="presentation"orole="none"(p. ej., elementos contabindex="0"o elementos enfocables nativos como<a>y<button>).Elimine el rol de presentación (
role="presentation"orole="none") para conservar el significado interactivo del elemento.
Nota: si el elemento no está pensado para ser interactivo, elimine en su lugar los elementos enfocables, por ejemplo quitando tabindex o el atributo href.
Ejemplo
<!-- Incorrect -->
<a href="#" role="presentation">Link</a>
<!-- Correct -->
<a href="#">Link</a>Resolución de atributos ARIA globales en elementos con rol de presentación
Los elementos con rol de presentación están pensados para que las tecnologías de asistencia los ignoren. Cuando estos elementos incluyen tanto roles de presentación como atributos ARIA globales, pueden confundir a los lectores de pantalla.
En su código HTML, localice un elemento enfocable que contenga
role="presentation"orole="none"y que además incluya atributos ARIA globales, comoaria-label,aria-describedbyoaria-hidden.Elimine el rol de presentación (
role="presentation"orole="none") para conservar el significado interactivo del elemento.
Nota: si el elemento no está pensado para ser interactivo, elimine en su lugar los atributos ARIA.
Ejemplo
<!-- Incorrect -->
<div role="presentation" aria-label="Decorative container"></div>
<!-- Correct -->
<div aria-label="Decorative container"></div>p>Resolución de valores de tabindex no válidos
Usar tabindex con un valor de -1 o 0 puede interrumpir de forma incorrecta el flujo de la navegación con el teclado, lo que dificulta que los usuarios se desplacen por el contenido.
En su código HTML, localice el elemento con un valor de
tabindexinapropiado (p. ej.,tabindex="-1",tabindex="0").Elimine el valor de tabindex para restablecer la navegación normal con el teclado.
Ejemplo
<!-- Incorrect -->
<h2 tabindex="-1">Header</h2>
<!-- Correct -->
<h2>Header</h2>Resolución de roles ARIA redundantes
Si un elemento ya puede transmitir su significado nativo, agregar un rol ARIA equivalente es innecesario y puede confundir a las tecnologías de asistencia.
En su código HTML, localice el elemento con un rol redundante (p. ej.,
<button role="button">,<a role="link">).Elimine el atributo
roleredundante.
Ejemplo
<!-- Incorrect --> <button role="button">Save</button> <!-- Correct --> <button>Save</button>
Mejores prácticas
Lograr una buena accesibilidad requiere corregir problemas comunes de código y de contenido para mejorar la claridad, la organización y la facilidad de uso para todos los usuarios. Aplicar las mejores prácticas ayuda a crear contenido más inclusivo y fácil de usar.
Resolución del uso de etiquetas visuales sin significado semántico
Utilice etiquetas semánticas como <strong> y <em> en lugar de etiquetas solo visuales como <b> y <i> para ayudar a las tecnologías de asistencia a comprender la importancia o el énfasis del texto.
En el código HTML, localice las etiquetas
<b>y reemplácelas por<strong>si el texto es importante.En el código HTML, localice las etiquetas
<i>y reemplácelas por<em>si el texto debe enfatizarse.
Ejemplo
<!-- Incorrect -->
<p><b>Important:</b> Save your changes.</p>
<p><i>Note:</i> Restart required.</p>
<!-- Correct -->
<p><strong>Important:</strong> Save your changes.</p>
<p><em>Note:</em> Restart required.</p> Resolución de problemas de texto alternativo no único
Las imágenes deben tener un texto alternativo (texto alt) que describa con precisión su contenido. Si dos imágenes muestran contenido diferente pero comparten el mismo texto alt, se puede inducir a error a los usuarios. Del mismo modo, cuando dos imágenes usan el mismo archivo de origen pero tienen un texto alt diferente, se crea una inconsistencia.
En su código HTML, localice los elementos
<img>que se marcaron por un problema de texto alt no único.-
Para las imágenes con orígenes diferentes (
src) pero que comparten el mismo texto alt, actualice el texto alt de modo que cada descripción sea única y coincida con el contenido de la imagen.<img src="team-photo.jpg" alt="Team standing together outside office"> <img src="office.jpg" alt="Front view of office building"> -
Para las imágenes con el mismo origen (
src), asegúrese de que el texto alt sea coherente en todas las instancias.<img src="logo.png" alt="Company logo"> <img src="logo.png" alt="Company logo"> Guarde sus cambios y vuelva a cargar la página.
Resolución de texto alt repetido en imágenes
Usar el mismo texto alt para varias imágenes puede ser confuso para los usuarios de lectores de pantalla. Cada imagen debe tener un atributo alt único que describa su contenido o propósito específico.
En su código HTML, localice el elemento
<img>con la misma descripción alternativa en el atributoalt.Actualice la descripción en el atributo
altde la imagen para describir su contenido específico.
Nota: si la imagen es puramente decorativa, utilice en su lugar un atributoaltvacío (alt="").
Ejemplo
<!-- Incorrect -->
<img src="math-icon.png" alt="Icon"> <img src="science-icon.png" alt="Icon">
<!-- Correct -->
<img src="math-icon.png" alt="Math icon showing a calculator"> <img src="history-icon.png" alt="History icon showing a scroll and feather pen">
Resolución de roles de punto de referencia en elementos anidados
Los roles de punto de referencia (landmark) sirven para identificar las regiones principales de una página. Solo deben utilizarse en elementos de nivel superior para admitir una navegación accesible.
En su código HTML, localice el elemento con el rol de punto de referencia (p. ej.,
role="main",role="banner",role="navigation") que se encuentre dentro de otros elementos estructurales (p. ej.,<div>,<section>o<article>)Mueva el rol de punto de referencia fuera de los elementos estructurales y colóquelo debajo de la etiqueta
<body>, o en el nivel superior del diseño de su código.
Ejemplo
<!-- Incorrect -->
<div class="article"> <section role="main">Content</section> </div>
<!-- Correct -->
<section role="main">Content</section>Resolución de regiones de punto de referencia duplicadas
Los puntos de referencia ayudan a los usuarios a navegar al definir la estructura de la página. Usar el mismo rol varias veces sin una distinción clara puede confundir a los usuarios de tecnologías de asistencia.
En su código HTML, localice el elemento con roles de punto de referencia repetidos (p. ej.,
role="navigation",role="main").Elimine el punto de referencia duplicado que no cumpla un propósito distinto, o cambie el rol de punto de referencia por uno que refleje mejor la función de la sección.
Nota: si son necesarios varios puntos de referencia con el mismo rol, agregue una etiqueta única mediantearia-labeloaria-labelledbypara ayudar a diferenciarlos.
Ejemplo
<!-- Incorrect -->
<nav role="navigation">Main links</nav> <nav role="navigation">Sidebar links</nav>
<!-- Correct -->
<nav role="navigation" aria-label="Main">Main links</nav> <nav role="navigation" aria-label="Sidebar">Sidebar links</nav>
Resolución de atributos scope no válidos en encabezados de tabla
El atributo scope conecta los encabezados de tabla con las celdas de datos. Usar valores incorrectos u omitirlos puede dificultar la interpretación de las tablas para los usuarios de lectores de pantalla.
En su código HTML, localice el elemento
<th>con un valor de atributoscopeno válido o faltante.-
Reemplace o agregue el valor de
scopesegún el tipo de encabezado:Utilice
scope="col"para los encabezados de columna.Utilice
scope="row"para los encabezados de fila.
Nota: para los encabezados de varios niveles, utilice
rowgroupocolgroupsi corresponde agruparlos.
Ejemplo
<!-- Incorrect -->
<th scope="column">Course</th>
<!-- Correct -->
<th scope="col">Course</th>
Resolución de subtítulos de tabla duplicados
Las tablas necesitan descripciones únicas para ayudar a los usuarios a comprender qué contienen. Reutilizar el mismo título en varias tablas reduce la claridad al usar tecnología de asistencia.
En su código HTML, localice el elemento
<caption>dentro del elemento<table>.Dentro del elemento
<caption>, reemplace el título duplicado por uno específico que describa la tabla.
Ejemplo
<!-- Incorrect --> <table> <caption>Data table</caption> ... </table> <!-- Correct --> <table> <caption>Student Enrollment by Department – Fall 2025</caption> ... </table>
Resolución de problemas de texto alternativo no único
Las imágenes deben tener un texto alternativo (texto alt) que describa con precisión su contenido. Si dos imágenes muestran contenido diferente pero comparten el mismo texto alt, se puede inducir a error a los usuarios. Del mismo modo, cuando dos imágenes usan el mismo archivo de origen pero tienen un texto alt diferente, se crea una inconsistencia.
En su código HTML, localice los elementos
<img>que se marcaron por un problema de texto alt no único.Para las imágenes con orígenes diferentes (
src) pero que comparten el mismo texto alt, actualice el texto alt de modo que cada descripción sea única y coincida con el contenido de la imagen.
<img src="team-photo.jpg" alt="Team standing together outside office"> <img src="office.jpg" alt="Front view of office building">
Para las imágenes con el mismo origen (src), asegúrese de que el texto alt sea coherente en todas las instancias.
<img src="logo.png" alt="Company logo"> <img src="logo.png" alt="Company logo">
Guarde sus cambios y vuelva a cargar la página.
Resolución de elementos <noscript> incorrectos
El elemento <noscript> proporciona contenido alternativo para los usuarios que tienen JavaScript deshabilitado. Asegúrese de que contenga contenido significativo y accesible y de que no duplique ni oculte información esencial. No debe depender del contenido de <noscript> para funciones importantes, a menos que se proporcione una alternativa accesible.
- En su código HTML, localice los elementos
<noscript>marcados. - Dentro de sus elementos
<noscript>, asegúrese de que contengan contenido alternativo útil que informe a los usuarios qué funciones no están disponibles sin JavaScript.
Nota: elimine los elementos <noscript> que estén vacíos, duplicados o que sean puramente decorativos.
Ejemplo
<!-- Incorrect -->
<noscript></noscript>
<!-- Correct -->
<noscript>
<p>This site requires JavaScript to function properly. Please enable JavaScript in your browser.</p>
</noscript>
Resolución del uso de etiquetas visuales sin significado semántico
Utilice etiquetas semánticas como <strong> y <em> en lugar de etiquetas solo visuales como <b> y <i> para ayudar a las tecnologías de asistencia a comprender la importancia o el énfasis del texto.
En el código HTML, localice las etiquetas
<b>y reemplácelas por<strong>si el texto es importante.En el código HTML, localice las etiquetas
<i>y reemplácelas por<em>si el texto debe enfatizarse.
Ejemplo
<!-- Incorrect --> <p><b>Important:</b> Save your changes.</p> <p><i>Note:</i> Restart required.</p> <!-- Correct --> <p><strong>Important:</strong> Save your changes.</p> <p><em>Note:</em> Restart required.</p>
Resolución de la falta del encabezado de nivel uno (H1)
Cada página necesita un único encabezado claro de nivel uno (<h1>) para ayudar a los usuarios, especialmente a quienes utilizan tecnología de asistencia, a comprender el propósito o el tema principal de la página. Una estructura de encabezados faltante o incorrecta puede hacer que la navegación resulte confusa.
- En su código HTML, localice el área de contenido principal de la página (p. ej., dentro del elemento
<body>). -
Agregue un elemento
<h1>que describa claramente el tema o propósito principal de la página.
Nota: asegúrese de que haya solo un<h1>por página y de que se agregue antes de otros encabezados de nivel inferior (p. ej.,<h2>,<h3>,<h4>).
Ejemplo
<!-- Incorrect --> <body> <h2>Course Overview</h2> <p>This page describes available courses.</p> </body> <!-- Correct --> <body> <h1>Available Courses</h1> <h2>Course Overview</h2> <p>This page describes available courses.</p> </body>
Resolución de niveles de encabezado omitidos
Los encabezados deben seguir un orden lógico para ayudar a los usuarios a comprender la estructura de la página. Omitir niveles de encabezado puede confundir a los usuarios de lectores de pantalla y dificultar la navegación por el contenido.
- En su código HTML, revise la estructura de encabezados (p. ej., de
<h1>a<h6>) en toda la página. - Actualice los niveles de encabezado para asegurarse de que tengan una jerarquía adecuada y de que no se omita ningún nivel (p. ej.,
<h2>debe estar bajo<h1>, y<h3>debe estar bajo<h2>).
Ejemplo
<!-- Incorrect --> <h1>Academic Programs</h1> <h3>Undergraduate Programs</h3> <p>Details about undergraduate offerings.</p> <!-- Correct --> <h1>Academic Programs</h1> <h2>Undergraduate Programs</h2> <p>Details about undergraduate offerings.</p>
Resolución de encabezados vacíos
Los encabezados deben contener texto significativo para que los usuarios puedan comprender la estructura y el contenido de una página. Los encabezados vacíos, como aquellos sin texto o con solo elementos decorativos, no proporcionan información a los usuarios de lectores de pantalla y pueden resultar confusos al navegar.
- En su código HTML, localice los elementos de encabezado marcados que no contengan texto visible y descriptivo.
- Actualice cada encabezado vacío agregando una descripción clara que describa el contenido de la sección.
Nota: si el encabezado no es necesario, elimine el nivel de encabezado.
Ejemplo
<!-- Incorrect --> <h2></h2> <p>Information about campus housing.</p> <!-- Correct --> <h2>Campus Housing</h2> <p>Information about campus housing.</p>
Resolución de regiones circundantes faltantes o mal definidas
Usar elementos de región como <header>, <nav>, <main>, <aside> y <footer> ayuda a describir cómo está estructurada su página. Estos elementos indican a los lectores de pantalla dónde comienzan y terminan las partes clave de la página.
- En su código HTML, localice las áreas principales de su página (p. ej., el banner superior, el menú de navegación, el contenido principal, la barra lateral o el pie de página).
- Si su página utiliza contenedores generales como
<div>, actualícelos para que usen el elemento de región correcto (p. ej., reemplace<div id="main">por<main>.) - Asegúrese de haber agregado el elemento de región correcto alrededor de cada área:
-
<header>para la sección superior o el encabezado del sitio. -
<nav>para los enlaces de navegación. -
<main>para el contenido central de la página. -
<aside>para información adicional o relacionada. -
<footer>para la sección inferior o el contenido de cierre.
-
- Si utiliza roles ARIA (p. ej.,
role="main"orole="navigation"), colóquelos dentro del elemento de región correcto.
Nota: utilice roles ARIA solo si no puede usar elementos de región HTML nativos.
Ejemplo
<!-- Incorrect -->
<div id="header">
<h1>Welcome to Our Site</h1>
</div>
<div id="menu">
<ul><li><a href="#">Home</a></li></ul>
</div>
<div id="content">
<p>Main content goes here.</p>
</div>
<!-- Correct -->
<header>
<h1>Welcome to Our Site</h1>
</header>
<nav>
<ul><li><a href="#">Home</a></li></ul>
</nav>
<main>
<p>Main content goes here.</p>
</main>