Técnica CSS WCAG 2.2
C34Soltar las cabeceras y pies fijos cuando falta altura en la pantalla
Nombre oficial en el W3C: Usar consultas de medios (media queries) para dejar de fijar los encabezados y pies de página pegajosos (sticky)
En pocas palabras
Una cabecera fija se queda siempre arriba aunque la página se desplace. En un móvil en horizontal o con mucho zoom, puede tapar media pantalla. Con media queries de CSS, la cabecera y el pie dejan de estar fijos cuando la ventana es baja.
Por qué es importante
Al ampliar al 400 %, una cabecera fija con logo, menú y buscador puede ocupar casi toda la pantalla. Solo queda una franja estrecha para leer el contenido.
Además, quien navega con teclado puede perder de vista el foco: el elemento seleccionado queda escondido detrás de la cabecera o del pie fijo.
Cómo se hace
- Deje la cabecera y el pie con posición normal (
position: static) por defecto. - Fíjelos con
position: stickyofixedsolo dentro de una media query (regla de CSS según el tamaño de la pantalla) que exija altura suficiente, por ejemplomin-height: 40em. - Para tabletas en horizontal, combine condiciones de ancho y alto, como
min-widthymax-height. - Use unidades relativas como
em, para que la regla reaccione también al zoom. - Si mantiene algo fijo, añada
scroll-padding-toppara que el foco no quede debajo.
Cómo comprobarlo
- Abra la página en un móvil en vertical y gírelo a horizontal. La cabecera y el pie deben dejar de estar fijos.
- En el ordenador, abra la página a 1280 por 1024 píxeles y amplíe con Ctrl y +.
- Compruebe que, al quedar poca altura, la cabecera y el pie se desplazan con el resto de la página.
- Recorra la página con el tabulador hacia delante y hacia atrás. El foco nunca debe quedar oculto.
Ejemplo
Cabecera de una tienda online que solo se queda fija cuando la ventana tiene altura de sobra.
<style>
header { position: static; }
@media (min-height: 40em) {
header { position: sticky; top: 0; }
}
</style>
<header>
<a href="/">Inicio</a>
<form role="search"><input aria-label="Buscar productos"></form>
</header>
Ver el texto completo del W3C (traducción al español)
Esta es una traducción no oficial al español de la técnica C34 de Techniques for WCAG 2.2, del W3C. Puede contener errores. El único documento oficial y normativo es la versión original en inglés, publicada en el sitio web del W3C.
Aplicabilidad
CSS y HTML.
Descripción
El objetivo de esta técnica es poder presentar el contenido con encabezados y pies de página pegajosos (sticky) cuando hay espacio suficiente. Para ello se utilizan técnicas de consultas de medios (media queries) con min-height, max-height y min-width que se adaptan al espacio disponible en la ventana gráfica (viewport).
Las regiones pegajosas permanecen siempre visibles en la ventana gráfica mientras el resto del contenido desaparece por debajo al desplazarse. En cuanto a la visibilidad del contenido, esto no suele ser un problema en el escritorio ni en los dispositivos móviles en orientación vertical. Sin embargo, al usar dispositivos móviles en orientación horizontal o al ampliar con zoom en el escritorio, las regiones pegajosas pueden bloquear una gran parte de la pantalla: la altura de la región pegajosa puede dejar solo una pequeña parte de la pantalla para mostrar el contenido de la página.
Desactivar, o dejar de fijar, las regiones pegajosas es una forma eficaz de garantizar espacio suficiente cuando los usuarios tienen otras preferencias de lectura y de zoom o cuando utilizan el modo horizontal.
Tenga en cuenta que las regiones pegajosas pueden suponer desventajas para los usuarios de teclado y, por tanto, deben utilizarse con criterio. El problema para quienes recorren con el tabulador una página con una cabecera fija es que, una vez que la página ha empezado a desplazarse, al tabular hacia atrás para alcanzar elementos interactivos situados más arriba en la página, el foco suele volverse invisible cuando pasa por detrás de la cabecera pegajosa. Los usuarios tienen entonces que desplazarse hacia arriba para poder ver el foco, algo de lo que no necesariamente son conscientes. Del mismo modo, el foco visible puede desaparecer detrás de un pie de página pegajoso, de forma que los usuarios tendrían que desplazarse hacia abajo para ver dónde está el foco, lo que supone un inconveniente importante.
El planteamiento básico para dejar de fijar los encabezados y pies de página pegajosos consiste en:
- Definir las primeras regiones pegajosas usando propiedades
min-heighten las consultas de medios, de modo que se fijen o se liberen según el espacio disponible; - Definir otras regiones pegajosas usando propiedades
min-widthymax-heighten las consultas de medios para tamaños concretos de la ventana gráfica, de modo que se fijen o se liberen según el espacio disponible, p. ej. en tabletas según la orientación vertical u horizontal del dispositivo.
Ejemplos
Dejar de fijar encabezados y pies de página pegajosos con HTML y CSS
El siguiente ejemplo utiliza HTML y CSS para dejar de fijar los encabezados y pies de página pegajosos. Las regiones pegajosas se liberan cuando la altura de la ventana gráfica es limitada o cuando cambia la orientación. Cuando la propiedad min-height coincide con el espacio de la ventana gráfica definido en las consultas de medios, las regiones que no son pegajosas se fijan, o viceversa. Este ejemplo concreto utiliza las propiedades min-height, max-height y min-width de las consultas de medios CSS.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Using media queries to un-fix sticky headers / footers</title>
<style>
/* Sticky Styling */
header { min-height: 130px; }
@media (min-height: 480px) {
header {
position: -webkit-sticky;
position: sticky;
top: 0;
}
}
@media (min-device-width: 576px) and
(max-device-width: 1024px) and
(orientation: landscape) {
header {
position: static;
}
}
footer { min-height: 130px; }
@media (min-height: 480px) {
footer {
position: sticky;
bottom: 0;
}
}
@media (min-device-width: 576px) and
(max-device-width: 1024px) and
(orientation: landscape) {
footer {
position: static;
}
}
</style>
</head>
<body class="grid">
<header class="grid-item">
...
</header>
<main class="grid-item">
...
</main>
<aside class="grid-item">
...
</aside>
<footer class="grid-item">
...
</footer>
</body>
</html>
Ejemplo práctico: Usar consultas de medios para dejar de fijar encabezados y pies de página pegajosos
Pruebas
Procedimiento
Según el entorno que se vaya a probar, los modos o tamaños reales pueden variar.
- Mostrar el contenido en un dispositivo o agente de usuario en modo vertical.
- Cambiar la orientación a horizontal.
- Comprobar si el encabezado y el pie de página pegajosos dejan de estar fijos según la configuración de las consultas de medios existentes.
- Mostrar el contenido en un escritorio o agente de usuario con una anchura inicial de la ventana gráfica de 1280x1024 píxeles CSS.
- Cambiar el tamaño de la ventana gráfica en anchura y altura, o usar la función de zoom del navegador.
- Comprobar si el encabezado y el pie de página pegajosos dejan de estar fijos en tamaños concretos según la configuración de las consultas de medios existentes.
Resultados esperados
- Las comprobaciones n.º 3 y n.º 6 son verdaderas.
Si esta es una técnica suficiente para un criterio de conformidad, no superar este procedimiento de prueba no significa necesariamente que el criterio de conformidad no se haya satisfecho de otra manera, sino solo que esta técnica no se ha implementado correctamente y no puede utilizarse para declarar la conformidad.
Cómo lo comprobamos en ADDAW
En cada auditoría de ADDAW revisamos esta técnica página a página y le entregamos los errores con capturas y la forma de corregirlos.
Basado en la técnica C34 del W3C (WCAG 2.2). Explicación y ejemplos: ADDAW. Traducción no oficial del texto del W3C © W3C, licencia de documentos del W3C. ¿Ha visto un error? Escríbanos.