Técnica Técnicas generales WCAG 2.2
G224Conservar la sangría que da sentido al texto en pantallas estrechas
Nombre oficial en el W3C: Tener en cuenta la sangría significativa del texto y el reajuste (reflow)
En pocas palabras
En listas anidadas y fragmentos de código, la sangría (el margen que desplaza una línea hacia la derecha) indica qué depende de qué. Al ampliar la página o verla en un móvil, esa sangría debe mantenerse, pero más pequeña. Así el texto sigue cabiendo en 320 píxeles de ancho y casi no hace falta desplazarse a los lados.
Por qué es importante
Quien amplía la página al 400 % la ve como en una pantalla de 320 píxeles de ancho. Lo mismo ocurre en un móvil pequeño.
Si se quita la sangría, una lista de trámites con subapartados parece una lista plana. En código Python, además, quitar la sangría cambia el programa.
Si se mantiene la sangría original, muy ancha, el texto se sale de la pantalla. La persona tiene que moverse a izquierda y derecha en cada línea. Eso cansa y hace perder el hilo.
Cómo se hace
- Identifique dónde la sangría transmite información: listas anidadas, índices de varios niveles, bloques de código.
- Defina la sangría en unidades flexibles, como
emorem, y no en píxeles grandes y fijos. - Use consultas de medios (
@media, reglas CSS que cambian según el ancho de la pantalla) para reducir la sangría en pantallas estrechas. - En el código, reduzca el tamaño del tabulador con
tab-sizeo el relleno izquierdo de cada nivel. - Si una lista tiene muchos niveles, dé al texto un ancho mínimo razonable. Cada nivel puede necesitar un desplazamiento lateral para verlo, pero dentro de él basta con bajar.
- Cuando partir las líneas largas no estropee el código, permita que se partan.
Cómo comprobarlo
- Abra la página en una ventana de 1280 píxeles de ancho y amplíela al 400 %. También sirve el modo de dispositivo de las herramientas del navegador (F12) con 320 píxeles de ancho.
- Busque las listas anidadas y los bloques de código.
- Compruebe que los niveles se siguen distinguiendo por la sangría.
- Compruebe que el texto se lee bajando, sin moverse a los lados en cada línea. En listas muy profundas se acepta un desplazamiento lateral para llegar a un nivel, pero no para leer cada elemento.
Ejemplo
Sangría de listas anidadas y de código que se reduce a la mitad en pantallas estrechas, sin desaparecer.
ul ul { padding-left: 2em; }
pre { tab-size: 4; }
@media (max-width: 30em) {
ul ul { padding-left: 1em; }
pre { tab-size: 2; }
}
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 G224 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
Todas las tecnologías que admitan el cambio de estilos
Descripción
Puede haber casos en los que la sangría del texto se considere importante para la presentación y la comprensión del contenido textual. Si se eliminaran las sangrías, el significado o la funcionalidad podrían verse perjudicados. Por ejemplo, el anidamiento de listas no ordenadas puede ser más difícil de apreciar si se eliminan las sangrías. Además, mantener las sangrías puede ser importante para ayudar a entender los patrones del código, cuando no imprescindible para que el código funcione.
Dado que mantener la sangría es importante en estos casos de texto, podría ser necesario el desplazamiento en dos dimensiones de estas secciones concretas del contenido. No obstante, siguen existiendo modificaciones de estilo que pueden realizarse para ayudar a garantizar que la sangría se conserve y que, al mismo tiempo, se muestre la mayor cantidad de texto posible dentro de la ventana gráfica (viewport). Realizar estos ajustes puede limitar, cuando no evitar, el desplazamiento en dos dimensiones, lo que facilita la lectura del contenido.
Ejemplos
Un sitio web transmite información en forma de lista anidada. La comprensión de la jerarquía de la lista se apoya en la sangría de su contenido. Aunque es importante que el texto de cada elemento de la lista se reajuste, la jerarquía de la lista se vería perjudicada si se aplanara para que todo el contenido cupiera en una ventana gráfica de 320 píxeles CSS de ancho.
La siguiente lista de ejemplo contiene listas anidadas adicionales que aportan más contexto al texto de cada elemento de la lista padre. Para mantener la jerarquía visual, la sangría de cada nivel de la lista se conserva, pero se modifica cuando se alcanza un punto de ruptura (breakpoint) CSS definido por el autor. Se establecen estilos adicionales para distintos puntos de ruptura con el fin de mitigar la posibilidad de que el contenido se extienda más allá de una ventana gráfica de 320 píxeles de ancho, teniendo en cuenta a la vez el espaciado visual respecto a los bordes de la ventana gráfica para intentar que el contenido no resulte apretado. En el punto de ruptura más pequeño, el contenido de los elementos de la lista recibe una anchura mínima para mitigar el posible «aplastamiento» de las listas con muchos niveles anidados. En este punto de ruptura, cada nivel de lista anidada puede llevarse a la vista mediante desplazamiento horizontal y, una vez que una lista anidada es visible dentro de la ventana gráfica, solo será necesario el desplazamiento vertical para leer el contenido de sus elementos.
<div class="example">
<ul>
<li>
<p>Make a list using one of the HTML list elements, or even an ARIA <code>role=list</code> container.</p>
<ul>
<li>
<p>There are three types of lists in HTML which can contain list items (<code>li</code> elements).</p>
<ul>
<li><p>the <code>ul</code> element</li>
<li><p>the <code>ol</code> element</li>
<li><p>the <code>menu</code> element</li>
</ul>
</li>
<li>
<p>Another type of list, description lists, exist as well - but they do not contain list items (<code>li</code> elements).</p>
</li>
...
</ul>
</li>
<li>
<p>Neither the start or end tags of any of the HTML list elements are omissible.</p>
<ul>
<li><p>The end tags of <code>li</code> elements can be omitted if the <code>li</code> element is immeditely followed by another <code>li</code> element or there is no more content in the parent list element.</p>
</li>
...
</ul>
</li>
...
</ul>
</div>
*, *::before, *::after {
box-sizing: border-box;
}
body, html {
font-family: arial;
}
@media screen and ( max-width: 640px ) {
.example {
overflow: auto;
max-width: 640px;
}
ul {
padding-inline-start: 1.25em;
}
li p {
padding: .25em;
margin: .5em 0 .5em -.25em;
max-width: 300px; /* saftey net for max-width */
}
}
@media screen and ( max-width: 400px ) {
ul { padding-inline-start: 1em; }
li p { min-width: 300px } {
min-width: 300px;
}
}
Un ejemplo práctico de una lista cuyos niveles anidados pueden leerse en una ventana gráfica de 320 píxeles de ancho.
Un sitio web que ofrece fragmentos de código necesita mantener la sangría de las líneas, ya que las sangrías son significativas no solo para la estructura del código, sino que en algunos lenguajes, como Python, son obligatorias para definir bloques de código.
A medida que el usuario amplía la página web, el CSS de la sangría puede ajustarse para mantener esta estructura necesaria y permitir, al mismo tiempo, que se vea más texto en una sola línea.
Lo siguiente representa un ejemplo de código en Python. La sangría de cada línea de texto es necesaria para crear un grupo de sentencias que se ejecutan como un bloque.
def complex_function(x):
if x > 0:
for i in range(x):
if i % 2 == 0:
print(f"{i} is even")
for a in range(i):
if a % 5 == 0:
print(f" {a} can be divided by 5")
else:
print(f" {a} cannot be divided by 5")
else:
print(f"{i} is odd")
for a in range(i):
if a % 2 == 0:
print(f" {a} is even")
else:
print(f" {a} is odd")
else:
print("x is not a positive number")
El siguiente ejemplo de código muestra el uso de la sangría para transmitir el anidamiento de los elementos en un documento HTML:
<html lang=en>
<head>...</head>
<body>
<div>
<!-- ... keep indenting as necessary -->
</div>
</body>
</html>
La sangría de bloques de código como estos podría ajustarse para distintos tamaños de ventana gráfica mediante una consulta de medios (media query) CSS.
@media screen and ( min-width: 320px ) {
pre {
tab-size: 8px;
}
}
@media screen and ( min-width: 640px ) {
pre {
tab-size: 16px;
}
}
@media screen and ( min-width: 1280px ) {
pre {
tab-size: 32px;
}
}
Un ejemplo práctico de fragmentos de código que usan CSS para modificar la anchura de la sangría en distintos puntos de ruptura.
Pruebas
Procedimiento para el ejemplo de la lista
- Mostrar la página web en un agente de usuario en el que la página pueda ampliarse o el agente de usuario pueda cambiar de tamaño.
- Ampliar o cambiar el tamaño de la ventana del navegador de modo que la ventana gráfica equivalga a 320 píxeles CSS de ancho.
- El contenido de la lista cabe en esa anchura, de modo que solo es necesario desplazarse verticalmente para leer la lista.
- O bien, cada lista anidada puede llevarse a la vista mediante desplazamiento horizontal. Solo es necesario el desplazamiento vertical para leer el contenido de los elementos de la lista dentro de cada nivel concreto de lista anidada.
Resultados esperados
- La comprobación n.º 3 o la n.º 4 es verdadera.
Procedimiento para los fragmentos de código
- Mostrar la página web en un agente de usuario en el que la página pueda ampliarse o el agente de usuario pueda cambiar de tamaño.
- Ampliar o cambiar el tamaño de la ventana del navegador de modo que la ventana gráfica equivalga a 320 píxeles CSS de ancho.
- Los fragmentos de código caben en esa anchura, de modo que solo es necesario desplazarse verticalmente para leer cada línea de código.
- O bien, cuando no sea esencial que las líneas no se ajusten, el código se ajusta a la línea o se proporciona un mecanismo que permite el ajuste de línea.
- O bien, la sangría y los saltos de línea son significativos para el lenguaje del código.
Resultados esperados
- La comprobación n.º 3, la n.º 4 o la n.º 5 es verdadera.
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 G224 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.