HTML
Tutorial HTML: Contraste y legibilidad
Aprende los estándares WCAG para contraste y legibilidad que garantizan accesibilidad y mejoran la experiencia visual en sitios web.
Aprende HTML y certifícateEstándares de contraste WCAG
El contraste es uno de los pilares fundamentales de la accesibilidad web, ya que determina la facilidad con la que los usuarios pueden distinguir el texto y los elementos gráficos en una página. Los Estándares de Contraste WCAG (Web Content Accessibility Guidelines) establecen criterios específicos para garantizar que el contenido sea perceptible para todos los usuarios, incluidas las personas con discapacidades visuales.
¿Qué son los estándares WCAG?
Las WCAG son directrices desarrolladas por el W3C (World Wide Web Consortium) que definen cómo hacer el contenido web más accesible. Estas pautas se organizan en niveles de conformidad (A, AA y AAA), donde cada nivel representa un grado mayor de accesibilidad.
Relación de contraste
La relación de contraste se expresa como una proporción que compara la luminosidad del color más claro con la del color más oscuro. Por ejemplo, una relación de 4.5:1 significa que el color más claro es 4.5 veces más luminoso que el color más oscuro.
Las WCAG establecen los siguientes requisitos de contraste:
Nivel AA (estándar mínimo recomendado):
Texto normal: relación de contraste mínima de 4.5:1
Texto grande (18pt o 14pt en negrita): relación de contraste mínima de 3:1
Nivel AAA (nivel óptimo):
Texto normal: relación de contraste mínima de 7:1
Texto grande (18pt o 14pt en negrita): relación de contraste mínima de 4.5:1
Implementación en HTML
Aunque el contraste se controla principalmente mediante CSS, es importante entender cómo implementarlo correctamente en la estructura HTML. Veamos un ejemplo:
<div class="high-contrast-section">
<h2>Información importante</h2>
<p>Este texto tiene una relación de contraste adecuada para cumplir con WCAG AA.</p>
</div>
Con el CSS correspondiente:
.high-contrast-section {
background-color: #ffffff; /* Fondo blanco */
color: #595959; /* Texto gris oscuro - relación 4.5:1 */
}
.high-contrast-section h2 {
color: #333333; /* Encabezado más oscuro - relación 7:1 */
}
Excepciones a los requisitos de contraste
Las WCAG reconocen que no todos los elementos visuales necesitan cumplir con los mismos estándares de contraste. Algunas excepciones incluyen:
- Texto decorativo que no transmite información
- Logotipos o marcas registradas
- Texto inactivo (deshabilitado) que no requiere interacción del usuario
- Componentes de interfaz inactivos que no están disponibles actualmente
Uso de atributos ARIA para mejorar la accesibilidad
Cuando el contraste no puede cumplir con los estándares por razones de diseño, podemos utilizar atributos ARIA para proporcionar información adicional:
<button
style="background-color: #f2f2f2; color: #767676;"
aria-label="Enviar formulario - Botón con contraste reducido">
Enviar
</button>
Consideraciones para elementos interactivos
Los elementos interactivos como botones, enlaces y controles de formulario tienen requisitos específicos:
- Todos los componentes de interfaz y elementos gráficos deben tener una relación de contraste mínima de 3:1 contra colores adyacentes (nivel AA)
- Es recomendable proporcionar indicadores visuales adicionales además del color (como subrayados, bordes o iconos)
<a href="#" class="button-link">
<span class="button-text">Más información</span>
<span class="button-icon" aria-hidden="true">→</span>
</a>
Contraste en estados de interacción
Es importante mantener un contraste adecuado en todos los estados de interacción de los elementos:
<button class="action-button">
Guardar cambios
</button>
Con CSS que mantiene el contraste en todos los estados:
.action-button {
background-color: #0056b3; /* Azul */
color: #ffffff; /* Texto blanco - buen contraste */
}
.action-button:hover {
background-color: #003d7a; /* Azul más oscuro - mantiene buen contraste */
color: #ffffff;
}
.action-button:focus {
outline: 2px solid #ffd700; /* Contorno amarillo visible */
outline-offset: 2px;
}
Uso de la etiqueta <strong>
para mejorar la percepción
La etiqueta <strong>
no solo indica importancia semántica, sino que también puede ayudar a mejorar el contraste perceptual:
<p>Por favor, revise los <strong>términos y condiciones</strong> antes de continuar.</p>
Contraste en modo oscuro
Si tu sitio ofrece un modo oscuro, debes asegurarte de que los estándares de contraste se mantengan en ambos modos:
<div class="content" data-theme="dark">
<h2>Título en modo oscuro</h2>
<p>Este texto mantiene una relación de contraste adecuada en modo oscuro.</p>
</div>
Con CSS adaptativo:
[data-theme="light"] {
background-color: #ffffff;
color: #333333; /* Relación 7:1 */
}
[data-theme="dark"] {
background-color: #121212;
color: #e0e0e0; /* Relación 14:1 */
}
Herramientas para verificar el contraste durante el desarrollo
Durante el desarrollo, puedes utilizar las herramientas de desarrollo del navegador para verificar el contraste:
<!-- Añadir comentarios para recordar verificar el contraste -->
<!-- TODO: Verificar contraste - debe ser mínimo 4.5:1 para AA -->
<section class="hero-section">
<h1>Bienvenido a nuestro sitio</h1>
<p>Descubre nuestros servicios accesibles para todos.</p>
</section>
Los estándares WCAG de contraste son fundamentales para crear sitios web inclusivos que puedan ser utilizados por personas con diferentes capacidades visuales. Implementar estos estándares no solo mejora la accesibilidad, sino que también beneficia a todos los usuarios al proporcionar una mejor legibilidad y experiencia de usuario, especialmente en condiciones de visualización no ideales como la luz solar directa o pantallas de baja calidad.
Evaluación de contraste en texto y elementos gráficos
Una vez que conocemos los estándares WCAG para el contraste, necesitamos herramientas y métodos para evaluar si nuestros diseños cumplen con estos requisitos. La evaluación del contraste es un proceso fundamental que debe realizarse durante todo el ciclo de desarrollo web.
Métodos de evaluación de contraste
Existen diferentes enfoques para evaluar el contraste en una página web:
- Evaluación visual: aunque es subjetiva, proporciona una primera impresión
- Evaluación matemática: utiliza fórmulas para calcular con precisión la relación de contraste
- Evaluación automatizada: mediante herramientas especializadas
- Evaluación con usuarios reales: especialmente útil para detectar problemas no identificados por métodos automáticos
Fórmula de cálculo de contraste
La relación de contraste se calcula utilizando la luminosidad relativa de los colores. La fórmula simplificada es:
Relación de contraste = (L1 + 0.05) / (L2 + 0.05)
Donde L1 es la luminosidad relativa del color más claro y L2 la del color más oscuro. Los valores de luminosidad se calculan a partir de los valores RGB del color.
Evaluación de texto sobre fondos de color
Para evaluar el contraste del texto, debemos considerar diferentes combinaciones:
<div style="background-color: #f5f5f5;">
<p style="color: #333333;">Este texto tiene buen contraste sobre fondo claro.</p>
<p style="color: #999999;">Este texto tiene contraste insuficiente.</p>
</div>
Evaluación de texto sobre imágenes
El texto sobre imágenes presenta desafíos especiales para la evaluación del contraste:
<div class="image-container">
<img src="background.jpg" alt="Imagen de fondo">
<div class="text-overlay">
<h2>Título sobre imagen</h2>
<p>Este texto necesita tener suficiente contraste con la imagen de fondo.</p>
</div>
</div>
Para mejorar el contraste en estos casos, podemos usar:
- Superposiciones semitransparentes:
<div class="image-with-overlay">
<img src="landscape.jpg" alt="Paisaje montañoso">
<div class="dark-overlay">
<h2>Aventuras en la montaña</h2>
<p>Explora nuestras rutas de senderismo.</p>
</div>
</div>
Con CSS:
.image-with-overlay {
position: relative;
}
.dark-overlay {
position: absolute;
bottom: 0;
left: 0;
right: 0;
background-color: rgba(0, 0, 0, 0.7); /* Fondo negro semitransparente */
color: white;
padding: 20px;
}
- Sombras de texto:
<div class="hero-image">
<img src="hero.jpg" alt="Imagen principal">
<h1 class="text-with-shadow">Bienvenidos a nuestra web</h1>
</div>
Con CSS:
.text-with-shadow {
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); /* Sombra para mejorar legibilidad */
color: white;
}
Evaluación de elementos gráficos
Los elementos gráficos interactivos también deben cumplir con los requisitos de contraste:
<button class="icon-button">
<svg width="24" height="24" viewBox="0 0 24 24" aria-hidden="true">
<path d="M12 2L1 21h22L12 2z" fill="currentColor"/>
</svg>
<span>Advertencia</span>
</button>
Para evaluar estos elementos, debemos considerar:
- El contraste entre el icono y su fondo
- El contraste entre el botón y el fondo de la página
- El contraste en diferentes estados (hover, focus, active)
Evaluación de contraste en componentes de interfaz
Los componentes de interfaz como botones, campos de formulario y controles personalizados requieren especial atención:
<div class="form-group">
<label for="email">Correo electrónico:</label>
<input type="email" id="email" class="form-control">
<span class="error-message">Por favor, introduce un email válido</span>
</div>
Aspectos a evaluar:
- Contraste del texto de la etiqueta
- Contraste del borde del campo
- Contraste del texto de error
- Contraste del texto introducido por el usuario
Evaluación de contraste en gráficos y visualizaciones de datos
Las visualizaciones de datos presentan desafíos únicos para la evaluación del contraste:
<div class="chart-container">
<h3>Ventas mensuales</h3>
<svg class="bar-chart" width="500" height="300">
<!-- Barras del gráfico con diferentes colores -->
<rect x="50" y="50" width="40" height="200" fill="#4285f4"></rect>
<rect x="100" y="100" width="40" height="150" fill="#34a853"></rect>
<rect x="150" y="150" width="40" height="100" fill="#fbbc05"></rect>
<rect x="200" y="75" width="40" height="175" fill="#ea4335"></rect>
<!-- Etiquetas y ejes -->
<text x="70" y="270" fill="#333333">Ene</text>
<text x="120" y="270" fill="#333333">Feb</text>
<text x="170" y="270" fill="#333333">Mar</text>
<text x="220" y="270" fill="#333333">Abr</text>
</svg>
</div>
Para evaluar gráficos, debemos considerar:
- El contraste entre elementos adyacentes
- El contraste entre las etiquetas de texto y el fondo
- La diferenciación de elementos mediante otros medios además del color
Herramientas de inspección de contraste en navegadores
Los navegadores modernos incluyen herramientas para evaluar el contraste:
- Chrome DevTools: Incluye un analizador de contraste en la pestaña "Elements"
- Firefox Developer Tools: Ofrece información de contraste en el inspector
- Edge DevTools: Similar a Chrome, proporciona análisis de contraste
Para usar estas herramientas:
- Inspecciona el elemento con el inspector
- Busca el indicador de contraste junto a los valores de color
- Verifica si cumple con AA (4.5:1) o AAA (7:1)
Evaluación de contraste en diferentes condiciones
Es importante evaluar el contraste en diversas condiciones:
- Diferentes tamaños de pantalla: El contraste puede percibirse diferente en móviles vs. escritorio
- Condiciones de iluminación variable: Luz brillante, oscuridad
- Diferentes ángulos de visión: Especialmente importante para pantallas LCD
<div class="responsive-section">
<h2>Contenido adaptable</h2>
<p class="mobile-optimized">Este texto mantiene buen contraste en pantallas pequeñas.</p>
</div>
Evaluación de contraste para estados dinámicos
Los estados dinámicos de los elementos interactivos también deben evaluarse:
<a href="#" class="action-link">
Leer más sobre accesibilidad
<span class="hover-info">Este enlace cambia de apariencia al pasar el cursor</span>
</a>
Con CSS:
.action-link {
color: #0066cc; /* Azul con buen contraste sobre blanco */
text-decoration: underline;
}
.action-link:hover {
color: #004499; /* Azul más oscuro para hover */
background-color: #f0f8ff; /* Fondo azul claro */
}
.action-link:focus {
outline: 2px solid #000000;
outline-offset: 2px;
}
Evaluación de contraste para modo oscuro y preferencias de usuario
Es esencial evaluar el contraste considerando las preferencias del usuario:
<div class="theme-aware-component" data-theme="auto">
<h3>Componente adaptable al tema</h3>
<p>Este contenido se adapta a las preferencias del usuario.</p>
</div>
Con CSS que responde a preferencias del sistema:
@media (prefers-color-scheme: dark) {
.theme-aware-component[data-theme="auto"] {
background-color: #121212;
color: #e0e0e0;
}
}
@media (prefers-color-scheme: light) {
.theme-aware-component[data-theme="auto"] {
background-color: #ffffff;
color: #333333;
}
}
Documentación de la evaluación de contraste
Es recomendable documentar las evaluaciones de contraste realizadas:
<!--
Componente: Botón principal
Contraste evaluado:
- Texto/Fondo: 7.1:1 (Cumple AAA)
- Borde/Fondo: 3.2:1 (Cumple AA para elementos gráficos)
Fecha de evaluación: 2023-05-15
-->
<button class="primary-button">Continuar</button>
La evaluación del contraste es un proceso continuo que debe integrarse en el flujo de trabajo de desarrollo. Al utilizar una combinación de herramientas automáticas y evaluación manual, podemos garantizar que nuestros sitios web sean accesibles para todos los usuarios, independientemente de sus capacidades visuales.
Tamaño de texto y espaciado para mejorar legibilidad
La legibilidad de un sitio web no depende únicamente del contraste de colores. El tamaño del texto y el espaciado adecuado son factores igualmente cruciales para crear contenido accesible. Estos elementos determinan la facilidad con la que los usuarios pueden leer y comprender la información presentada, especialmente para personas con discapacidades visuales o dificultades cognitivas.
Tamaño de texto accesible
El tamaño de texto es uno de los factores más importantes para garantizar la legibilidad. Las WCAG recomiendan que el texto debe ser redimensionable hasta un 200% sin pérdida de contenido o funcionalidad. Esto permite a los usuarios ajustar el tamaño según sus necesidades visuales.
<style>
body {
font-size: 16px; /* Tamaño base recomendado */
}
h1 {
font-size: 2em; /* Relativo al tamaño base */
}
h2 {
font-size: 1.5em;
}
p {
font-size: 1em;
}
</style>
Es recomendable utilizar unidades relativas (em, rem, %) en lugar de unidades absolutas (px) para permitir que el texto se ajuste correctamente cuando el usuario cambia la configuración de su navegador:
<div class="content-section">
<h2>Servicios accesibles</h2>
<p>Nuestros servicios están diseñados pensando en la accesibilidad de todos los usuarios.</p>
</div>
html {
font-size: 100%; /* Establece la base para unidades rem */
}
.content-section h2 {
font-size: 1.5rem; /* Relativo al tamaño raíz */
margin-bottom: 0.75rem;
}
.content-section p {
font-size: 1rem;
line-height: 1.5;
}
Tamaños mínimos recomendados
Para garantizar la legibilidad, se recomiendan estos tamaños mínimos:
- Texto principal: al menos 16px (o 1rem)
- Texto secundario: no menor de 14px
- Texto en dispositivos móviles: mínimo 12px (aunque preferiblemente 16px)
<article class="blog-post">
<h1>Guía de accesibilidad web</h1>
<p class="main-text">Este artículo explora las mejores prácticas para crear sitios web accesibles.</p>
<p class="footnote">Publicado el 15 de mayo de 2023</p>
</article>
.blog-post .main-text {
font-size: 1rem; /* 16px en la mayoría de navegadores */
}
.blog-post .footnote {
font-size: 0.875rem; /* 14px */
}
@media (max-width: 480px) {
.blog-post .footnote {
font-size: 0.75rem; /* 12px - mínimo recomendado para móviles */
}
}
Altura de línea (line-height)
La altura de línea adecuada mejora significativamente la legibilidad, especialmente para textos largos o para personas con dislexia o dificultades de lectura:
<div class="readable-content">
<p>Un párrafo con altura de línea optimizada para mejorar la legibilidad y facilitar la lectura de bloques de texto extensos. La altura de línea adecuada ayuda a los ojos a seguir el texto de manera más fluida.</p>
</div>
.readable-content p {
line-height: 1.5; /* Valor recomendado entre 1.4 y 1.6 */
}
Las recomendaciones para la altura de línea son:
- Texto normal: entre 1.4 y 1.6 veces el tamaño de la fuente
- Títulos: entre 1.2 y 1.3 veces el tamaño de la fuente
- Textos largos: hasta 1.8 para mejorar la legibilidad
Espaciado entre párrafos y elementos
El espaciado vertical adecuado entre párrafos y elementos ayuda a estructurar visualmente el contenido y mejora la comprensión:
<section class="well-spaced">
<h2>Características principales</h2>
<p>Primera característica importante que ofrece nuestro producto.</p>
<p>Segunda característica destacable con beneficios adicionales.</p>
<p>Tercera característica que complementa la experiencia del usuario.</p>
</section>
.well-spaced h2 {
margin-bottom: 1rem;
}
.well-spaced p {
margin-bottom: 1.5rem; /* Espacio adecuado entre párrafos */
}
.well-spaced p:last-child {
margin-bottom: 0; /* Elimina el margen del último párrafo */
}
Ancho de columna y longitud de línea
La longitud de línea óptima facilita la lectura al evitar que los ojos tengan que recorrer distancias excesivas:
<article class="optimal-reading">
<h1>Título del artículo</h1>
<div class="content-column">
<p>Este párrafo tiene un ancho controlado para facilitar la lectura. Las líneas demasiado largas dificultan que el ojo encuentre el inicio de la siguiente línea, mientras que las líneas demasiado cortas interrumpen el ritmo de lectura.</p>
</div>
</article>
.content-column {
max-width: 70ch; /* Aproximadamente 70 caracteres por línea */
margin: 0 auto; /* Centrado */
}
Las recomendaciones para la longitud de línea son:
- Óptimo: entre 60 y 75 caracteres por línea
- Mínimo: 45 caracteres por línea
- Máximo: 90 caracteres por línea
Espaciado entre letras y palabras
El espaciado entre letras (letter-spacing) y entre palabras (word-spacing) puede mejorar la legibilidad, especialmente para personas con dislexia:
<div class="enhanced-text">
<p>Este texto tiene un espaciado mejorado entre letras y palabras para facilitar la lectura a personas con dificultades visuales o cognitivas.</p>
</div>
.enhanced-text p {
letter-spacing: 0.01em; /* Ligero aumento del espaciado entre letras */
word-spacing: 0.05em; /* Ligero aumento del espaciado entre palabras */
}
Para títulos grandes o texto con énfasis especial:
h1.headline {
letter-spacing: -0.02em; /* Reducción sutil para títulos grandes */
font-weight: bold;
}
Diseño responsive para diferentes dispositivos
El diseño responsive debe considerar la legibilidad en todos los tamaños de pantalla:
<div class="responsive-text">
<h2>Contenido adaptable</h2>
<p>Este texto se ajustará automáticamente para mantener la legibilidad en diferentes dispositivos, desde móviles hasta pantallas de escritorio.</p>
</div>
.responsive-text h2 {
font-size: clamp(1.2rem, 5vw, 2rem);
/* Tamaño mínimo: 1.2rem, preferido: 5% del viewport, máximo: 2rem */
}
.responsive-text p {
font-size: clamp(1rem, 2vw, 1.2rem);
line-height: 1.5;
}
@media (max-width: 768px) {
.responsive-text {
padding: 0 1rem; /* Añade espacio en los laterales en pantallas pequeñas */
}
}
La función clamp()
es especialmente útil para crear texto fluido que se adapta a diferentes tamaños de pantalla sin necesidad de múltiples media queries.
Espaciado en formularios y elementos interactivos
Los elementos interactivos como botones y campos de formulario necesitan espaciado adecuado para facilitar su uso:
<form class="accessible-form">
<div class="form-group">
<label for="name">Nombre completo:</label>
<input type="text" id="name" name="name">
</div>
<div class="form-group">
<label for="email">Correo electrónico:</label>
<input type="email" id="email" name="email">
</div>
<button type="submit">Enviar</button>
</form>
.accessible-form .form-group {
margin-bottom: 1.5rem; /* Espacio entre grupos de formulario */
}
.accessible-form label {
display: block;
margin-bottom: 0.5rem; /* Espacio entre etiqueta y campo */
}
.accessible-form input {
width: 100%;
padding: 0.75rem; /* Espacio interno adecuado */
font-size: 1rem; /* Tamaño de texto legible */
}
.accessible-form button {
padding: 0.75rem 1.5rem; /* Área de toque amplia */
font-size: 1rem;
margin-top: 1rem;
}
Consideraciones para usuarios con necesidades específicas
Para usuarios con dislexia o dificultades de lectura, estas modificaciones pueden ser beneficiosas:
<div class="dyslexia-friendly">
<p>Este texto está optimizado para facilitar la lectura a personas con dislexia, utilizando espaciado adicional y una fuente adecuada.</p>
</div>
.dyslexia-friendly {
font-family: 'Open Sans', Arial, sans-serif; /* Fuente sin serifa */
line-height: 1.8; /* Mayor altura de línea */
letter-spacing: 0.05em; /* Mayor espaciado entre letras */
word-spacing: 0.1em; /* Mayor espaciado entre palabras */
max-width: 60ch; /* Líneas más cortas */
margin: 0 auto;
padding: 1rem;
}
Uso de listas para mejorar la legibilidad
Las listas ayudan a estructurar la información y mejoran la legibilidad:
<div class="structured-content">
<h3>Beneficios de un buen espaciado:</h3>
<ul>
<li>Mejora la velocidad de lectura y comprensión</li>
<li>Reduce la fatiga visual durante lecturas prolongadas</li>
<li>Facilita la navegación visual por el contenido</li>
<li>Aumenta la accesibilidad para usuarios con discapacidades visuales</li>
</ul>
</div>
.structured-content ul {
padding-left: 1.5rem; /* Espacio para los marcadores */
margin-top: 1rem;
}
.structured-content li {
margin-bottom: 0.75rem; /* Espacio entre elementos de la lista */
line-height: 1.5;
}
Pruebas de legibilidad
Es importante probar la legibilidad de tu sitio con diferentes configuraciones:
<div class="test-section" id="legibility-test">
<p>Este texto debe ser legible cuando se amplía hasta un 200% del tamaño original. Prueba a aumentar el zoom del navegador para verificar que el contenido sigue siendo accesible.</p>
</div>
Para probar la legibilidad, puedes:
- Aumentar el zoom del navegador hasta 200%
- Cambiar la configuración de tamaño de texto del sistema operativo
- Utilizar herramientas de simulación de discapacidades visuales
- Probar en diferentes dispositivos y orientaciones de pantalla
El tamaño de texto y el espaciado adecuados son elementos fundamentales para crear contenido web accesible. Al implementar estas prácticas, no solo mejoramos la experiencia para usuarios con discapacidades visuales o cognitivas, sino que creamos un sitio más usable y agradable para todos los visitantes.
Herramientas para verificar y mejorar contraste
Verificar el contraste de color en un sitio web es un paso fundamental para garantizar la accesibilidad. Afortunadamente, existen numerosas herramientas especializadas que facilitan este proceso, permitiéndonos identificar y corregir problemas de contraste de manera eficiente.
Extensiones para navegadores
Las extensiones de navegador son una de las formas más prácticas de verificar el contraste durante el desarrollo:
WAVE (Web Accessibility Evaluation Tool): Esta extensión disponible para Chrome y Firefox analiza páginas web completas e identifica problemas de contraste con indicadores visuales.
Axe DevTools: Proporciona análisis detallados de accesibilidad, incluyendo problemas de contraste, directamente en las herramientas de desarrollo.
Color Contrast Analyzer: Permite seleccionar cualquier elemento en la página y verificar su relación de contraste contra el fondo.
<!-- Ejemplo de botón con contraste mejorado tras usar una herramienta de análisis -->
<button class="cta-button">
Comenzar ahora
</button>
/* Antes de la verificación */
.cta-button {
background-color: #f0f0f0;
color: #777777; /* Contraste insuficiente: 2.5:1 */
}
/* Después de la verificación y corrección */
.cta-button {
background-color: #f0f0f0;
color: #505050; /* Contraste mejorado: 4.6:1 */
}
Herramientas online
Las herramientas web ofrecen opciones para verificar el contraste sin necesidad de instalar software:
WebAIM Contrast Checker: Una herramienta simple pero potente que permite introducir valores hexadecimales de colores y obtener la relación de contraste, indicando si cumple con los niveles AA o AAA.
Contrast Ratio por Lea Verou: Herramienta interactiva que muestra la relación de contraste en tiempo real mientras ajustas los colores.
Accessible Colors: Permite no solo verificar el contraste, sino que también sugiere alternativas de color que cumplen con los estándares WCAG.
Colorable: Herramienta que permite probar combinaciones de colores y ver su relación de contraste.
Herramientas integradas en navegadores
Los navegadores modernos incluyen herramientas nativas para verificar el contraste:
- Chrome DevTools: En la pestaña "Elements", al seleccionar un elemento con color, muestra la relación de contraste junto al selector de color.
<div class="info-box">
<h3>Información importante</h3>
<p>Este contenido debe ser verificado con las herramientas de desarrollo.</p>
</div>
Para verificar este elemento en Chrome DevTools:
- Haz clic derecho en el elemento y selecciona "Inspeccionar"
- En el panel de estilos, busca las propiedades de color
- Haz clic en el cuadrado de color para abrir el selector
- Observa la información de contraste en la parte inferior
Firefox Developer Tools: Similar a Chrome, muestra información de contraste en el inspector de estilos.
Edge DevTools: Incluye funcionalidades similares a Chrome para verificar el contraste.
Herramientas de diseño
Las aplicaciones de diseño modernas incorporan verificación de contraste:
Figma: Con plugins como "Stark" o "A11y - Color Contrast Checker" que permiten verificar el contraste durante la fase de diseño.
Adobe XD: Incluye herramientas de accesibilidad que verifican automáticamente el contraste.
Sketch: Con plugins como "Stark" que añaden verificación de contraste al flujo de trabajo de diseño.
Integrar estas herramientas en la fase de diseño permite identificar problemas de contraste antes de comenzar el desarrollo, ahorrando tiempo y recursos.
Herramientas de línea de comandos
Para flujos de trabajo automatizados, existen herramientas de línea de comandos:
Pa11y: Herramienta de automatización de pruebas de accesibilidad que puede verificar problemas de contraste.
Axe-core: Biblioteca que puede integrarse en pruebas automatizadas para verificar problemas de accesibilidad, incluyendo contraste.
# Ejemplo de uso de pa11y para verificar una página
pa11y https://example.com --reporter html > accessibility-report.html
Simuladores de daltonismo
Las herramientas de simulación de daltonismo ayudan a verificar cómo se perciben los contrastes para personas con diferentes tipos de daltonismo:
Color Oracle: Aplicación de escritorio que simula diferentes tipos de daltonismo a nivel del sistema.
Coblis: Herramienta online que permite subir imágenes y ver cómo se verían con diferentes tipos de daltonismo.
Chrome DevTools: Incluye simulación de deficiencias visuales en la pestaña "Rendering".
Herramientas para mejorar el contraste
Además de verificar, existen herramientas para mejorar automáticamente el contraste:
Accessible Color Generator: Sugiere colores accesibles basados en un color base que cumplen con los estándares WCAG.
Contrast Finder: Herramienta que encuentra alternativas de color cercanas al color original pero con mejor contraste.
Color Safe: Genera paletas de colores accesibles para texto web.
<div class="card">
<!-- Colores mejorados usando Accessible Color Generator -->
<h3 class="card-title">Nuestros servicios</h3>
<p class="card-text">Ofrecemos soluciones adaptadas a sus necesidades.</p>
<a href="#" class="card-link">Más información</a>
</div>
.card {
background-color: #f8f9fa;
padding: 1.5rem;
border-radius: 0.25rem;
}
.card-title {
color: #212529; /* Contraste 14.5:1 - Excelente */
}
.card-text {
color: #495057; /* Contraste 7.1:1 - Cumple AAA */
}
.card-link {
color: #0056b3; /* Contraste 4.7:1 - Cumple AA */
text-decoration: underline;
}
Herramientas de auditoría completa
Las herramientas de auditoría ofrecen análisis completos de accesibilidad:
Lighthouse: Integrado en Chrome DevTools, realiza auditorías de accesibilidad que incluyen problemas de contraste.
WAVE: Además de la extensión, ofrece un servicio web para analizar páginas completas.
Axe: Disponible como extensión y como API, proporciona análisis detallados de accesibilidad.
SiteImprove: Servicio comercial que ofrece análisis exhaustivos de accesibilidad, incluyendo contraste.
Para ejecutar una auditoría con Lighthouse:
- Abre Chrome DevTools (F12)
- Ve a la pestaña "Lighthouse"
- Selecciona "Accessibility" entre las categorías
- Haz clic en "Generate report"
Herramientas para pruebas con usuarios reales
Aunque las herramientas automáticas son valiosas, las pruebas con usuarios reales son insustituibles:
UserTesting: Plataforma que permite realizar pruebas de usabilidad con participantes reales, incluyendo personas con discapacidades visuales.
Fable: Conecta a equipos de desarrollo con personas con discapacidades para pruebas de accesibilidad.
Implementación de mejoras de contraste con CSS
Una vez identificados los problemas, podemos implementar soluciones con CSS:
- Variables CSS: Facilitan la gestión centralizada de colores y su ajuste para mejorar el contraste.
<div class="theme-container">
<article class="content">
<h2>Título con contraste mejorado</h2>
<p>Este texto utiliza variables CSS para garantizar un contraste adecuado.</p>
</article>
</div>
:root {
/* Paleta de colores accesible */
--background-color: #ffffff;
--text-color-primary: #333333; /* Contraste 10:1 */
--text-color-secondary: #595959; /* Contraste 7:1 */
--accent-color: #0056b3; /* Contraste 4.6:1 con fondo blanco */
}
.content {
background-color: var(--background-color);
color: var(--text-color-primary);
}
.content h2 {
color: var(--text-color-primary);
border-bottom: 2px solid var(--accent-color);
}
.content p {
color: var(--text-color-secondary);
}
- Media queries para preferencias de contraste: Permiten ofrecer estilos alternativos para usuarios que prefieren alto contraste.
/* Estilos estándar */
body {
background-color: #ffffff;
color: #333333;
}
/* Estilos para usuarios que prefieren alto contraste */
@media (prefers-contrast: high) {
body {
background-color: #000000;
color: #ffffff;
}
a {
color: #ffff00; /* Amarillo sobre negro - alto contraste */
text-decoration: underline;
}
}
Flujo de trabajo recomendado
Para integrar eficazmente estas herramientas, se recomienda seguir este flujo de trabajo:
Fase de diseño: Utilizar herramientas como Stark en Figma o Sketch para verificar el contraste desde el inicio.
Desarrollo inicial: Implementar los diseños con variables CSS para facilitar ajustes posteriores.
Verificación durante el desarrollo: Usar extensiones de navegador como WAVE o Axe para identificar problemas.
Auditoría completa: Ejecutar Lighthouse o herramientas similares para una evaluación exhaustiva.
Pruebas con usuarios: Validar las mejoras con usuarios reales, especialmente aquellos con discapacidades visuales.
Monitoreo continuo: Implementar verificaciones automáticas en el proceso de integración continua.
Documentación de verificaciones
Es recomendable documentar las verificaciones de contraste realizadas:
<!--
Verificación de contraste:
- Herramienta utilizada: WebAIM Contrast Checker
- Fecha: 2023-06-10
- Resultados: Todos los textos cumplen nivel AA, títulos cumplen AAA
-->
<section class="verified-section">
<h2>Sección verificada</h2>
<p>Este contenido ha sido verificado para garantizar un contraste adecuado.</p>
</section>
Las herramientas de verificación y mejora de contraste son aliadas indispensables para crear sitios web accesibles. Al incorporarlas en nuestro flujo de trabajo, podemos identificar y resolver problemas de contraste de manera eficiente, garantizando que nuestro contenido sea perceptible para todos los usuarios, independientemente de sus capacidades visuales.
Otras lecciones de HTML
Accede a todas las lecciones de HTML y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Html
Introducción Y Entorno
Doctype
Sintaxis Y Estructura
Elementos Y Etiquetas
Sintaxis Y Estructura
Atributos
Sintaxis Y Estructura
Anidación De Etiquetas
Sintaxis Y Estructura
Comentarios
Sintaxis Y Estructura
Ejercicios de programación de HTML
Evalúa tus conocimientos de esta lección Contraste y legibilidad con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.