target-size-minimum
Los objetivos de puntero deben medir al menos 24 × 24 px o mantener una separación suficiente
Comprueba que los objetivos operables mediante puntero tienen una región de impacto efectiva de al menos 24 por 24 píxeles CSS, o cumplen una excepción permitida (por ejemplo, espaciado suficiente).
Ámbito de aplicación. Se aplica a <button>, <summary>, <a href>, <area href>, <input>, <select>, <textarea> y elementos cuyo rol se resuelve en button o link (el primer rol real del atributo role, sin distinguir mayúsculas de minúsculas) que sean alcanzables con el puntero: renderizados, no suprimidos por pointer-events:none, y con algo que un puntero pueda alcanzar (un objetivo recortado por completo no tiene nada; en uno con display: contents, lo es su contenido). La exclusión del árbol de accesibilidad no es un filtro aquí: un control con aria-hidden sigue siendo un objetivo que un puntero puede alcanzar. <area> coincide con el selector pero nunca se evalúa: no tiene caja propia que medir. Un elemento personalizado cuyos ElementInternals le dan el rol button o link (this.attachInternals().role), sin un atributo role que nombre otro, cuenta como lo hace un elemento nativo con ese rol.
Resultado esperado. Cada objetivo mide al menos 24 por 24 píxeles CSS, o cumple una de las excepciones del SC 2.5.8 que esta regla puede establecer a partir de la geometría. Un objetivo es la región que un puntero puede alcanzar: su border box con sus esquinas redondeadas y sus transformaciones 2D, recortada por clip y clip-path: inset() en su cadena de bloques contenedores y no mayor que una caja de esa cadena que recorta su desbordamiento, con el contenido que sobresale de ella. Lo que se pinta encima de un objetivo no le quita nada, tampoco otro objetivo: que una capa decorativa, una superposición o una fila fija cubra un objetivo depende del momento y de la posición de desplazamiento del análisis, así que no dice nada del tamaño del objetivo, y el 2.5.8 mide el propio objetivo. Dos objetivos que se superponen están cada uno dentro del círculo del otro, así que uno de tamaño insuficiente sigue estando demasiado cerca. Una caja que recorta su desbordamiento (overflow distinto de visible, o contain: paint), desplazada por quien lee o por un script, no lo corta donde está ahora su borde: el objetivo se mide entero, como si se hubiera desplazado hasta él, no mayor que la caja, y solo las cajas y objetivos dentro de la caja están cerca de un objetivo que esta mantiene fuera de la vista. Es lo bastante grande cuando un cuadrado de 24 por 24 alineado con la página cabe en esa región, como lo mide Understanding 2.5.8. Las excepciones: espaciado (un círculo de 24 px de diámetro centrado en el rectángulo delimitador de la región no alcanza la región de ningún objetivo no relacionado, ni el círculo de otro de tamaño insuficiente), la excepción en línea para un objetivo dentro de una frase, un enlace o un botón escrito dentro del texto (el tramo de su bloque contenedor entre saltos de línea contiene texto con una letra o un dígito fuera de cualquier objetivo), o el dimensionado del agente de usuario (una casilla o botón de radio nativo sin estilizar, detectado porque appearance no se ha restablecido a none). Un objetivo de tamaño insuficiente demasiado cerca de un vecino incumple la condición. Cuando una excepción podría aplicarse pero no puede confirmarse (dos enlaces en línea que se apiñan entre sí separados solo por separadores, como en "Edit | Delete", o un objetivo dentro de un SVG, canvas o mapa de imagen que podría ser esencial), el resultado es cantTell en lugar de una suposición. Margen (target-size-px): de entre los objetivos que miden al menos 24 por 24, el más pequeño, como el lado del mayor cuadrado que cabe en él frente a 24 (en un rectángulo, el menor de su ancho y su alto); context.widthPx y context.heightPx dan su extensión. Un objetivo de menos de 24 que pasa gracias a la excepción de espaciado no es candidato. Solo cuenta como cercano un objetivo que está a menos de 6px de 24 (hasta 30), así que una página cuyo objetivo más pequeño es mayor no da margen. measuredCount cuenta todos los objetivos medidos.
Qué informa un hallazgo.
metrics.widthPx,metrics.heightPx: la extensión de la región que un puntero puede alcanzar, en píxeles CSS;metrics.squarePx: el lado del mayor cuadrado que cabe en ella, frente ametrics.minSizePx(24). Redondeados a una décima, pero hacia abajo cuando el redondeo alcanzaría el límite, de modo que un tamaño inferior a 24 nunca se lee como 24.metrics.decidedBy: qué determinó que el objetivo está demasiado cerca de otro:centerDistance, el círculo de otro objetivo de tamaño insuficiente, oregionDistance, la región de otro objetivo dentro del círculo.metrics.centerDistancePx,metrics.minDistancePx(centerDistance): la distancia del centro del objetivo al de su vecino, frente a los 24px que necesita.metrics.regionDistancePx,metrics.minDistancePx(regionDistance): a qué distancia está la región del vecino del centro del objetivo, frente al radio de 12px del círculo.conflictWith: un selector del vecino del que está demasiado cerca.measured.width,measured.height,measured.square: la extensión de la región y el mayor cuadrado, sin redondear.viewport.width,viewport.height: el viewport en el que se maquetó la página, en píxeles CSS. Una página adaptable puede dimensionar o colocar un objetivo de otra forma con otro ancho.
Estos campos de data.details ayudan a leer y reproducir un hallazgo. Salvo reasonCode y los pocos campos que Esquema de salida indica como estables, no son un contrato estable: un campo puede cambiar de nombre o desaparecer en una versión menor, así que no construyas sobre ellos.
Margen. Esta regla mide target-size-px en píxeles CSS, y el valor debe alcanzar el umbral. Cuando un resultado correcto quedó cerca del umbral, el campo margin del resultado indica el elemento que más se acercó sin dejar de cumplirlo, así que un resultado que un cambio pequeño haría cambiar se ve antes de que cambie. A diferencia de los campos de un hallazgo, es un contrato estable. Consulta Esquema de salida.
Ejemplos
<button style="width:24px; height:24px;">+</button>
Cumple por sí solo el mínimo de 24×24 píxeles CSS.
<button style="width:10px; height:10px; padding:0;">A</button><button style="width:10px; height:10px; padding:0; margin-left:5px;">B</button>
Ambos objetivos miden 10×10, menos de 24×24, y sus centros están a 15 px entre sí, más cerca que los 24 px que necesita la excepción de espaciado. (padding:0 importa: el relleno predeterminado de los botones del navegador hace que cada uno sea más ancho.)
Cómo comprobarlo
Cuando esta regla no puede decidir, informa cantTell y deja la pregunta a una persona. Cada pregunta que puede plantear aparece aquí bajo su código de motivo, con los pasos para responderla. Un hallazgo lleva los mismos pasos en howToCheck, en el idioma del análisis. Consulta Esquema de salida.
undersized-inline-link-run
- Buscar en la página el enlace que indica el informe y el enlace contiguo del que está demasiado cerca.
- Leer el texto en el que están los dos enlaces y decidir si forman parte de una frase o un párrafo, lo que los exime, o de una fila de enlaces separados solo por separadores como «|» o «·», como en «Editar | Borrar».
- Si son una fila de enlaces, inspeccionar cada uno en el modelo de caja de las herramientas de desarrollo y comprobar si mide al menos 24 por 24 píxeles CSS, o si un círculo de 24 píxeles centrado en él tocaría el otro enlace o el círculo de ese enlace.
- Si un enlace es menor y está demasiado cerca, buscar en la misma página otro control que haga lo mismo y cumpla ese tamaño o esa separación.
Se cumple. Los enlaces forman parte de una frase o un párrafo, o cada uno mide al menos 24 por 24 píxeles CSS o está lo bastante lejos del otro, o hay otro control en la página que cumple el tamaño y hace lo mismo.
No se cumple. Los enlaces forman una fila propia, separados solo por separadores, y uno mide menos de 24 por 24 píxeles CSS y está tan cerca del otro que sus círculos de 24 píxeles se solapan, sin otro control en la página que cumpla el tamaño y haga lo mismo, lo que incumple WCAG 2.5.8.
undersized-plausibly-essential
- Buscar el objetivo que indica el informe y el gráfico al que pertenece: un dibujo SVG, un canvas o un mapa de imagen (una imagen con zonas en las que se puede hacer clic).
- Decidir si el tamaño y la posición del objetivo transmiten información que se perdería si se agrandara o se separara de los demás, como los marcadores de un mapa o los puntos de un gráfico.
- Si no es así, inspeccionar el objetivo en el modelo de caja de las herramientas de desarrollo y comprobar si mide al menos 24 por 24 píxeles CSS, o si un círculo de 24 píxeles centrado en él tocaría otro objetivo o el círculo de otro objetivo pequeño.
- Si es menor y está demasiado cerca, buscar en la misma página otro control que haga lo mismo y cumpla ese tamaño o esa separación, como una lista de enlaces a los lugares del mapa.
Se cumple. El tamaño del objetivo es esencial para lo que muestra el gráfico, o el objetivo mide al menos 24 por 24 píxeles CSS o está lo bastante lejos de los demás, o hay otro control en la página que cumple el tamaño y hace lo mismo.
No se cumple. El tamaño del objetivo no es esencial, mide menos de 24 por 24 píxeles CSS y está tan cerca de otro objetivo que sus círculos de 24 píxeles se solapan, y ningún otro control de la página que cumpla el tamaño hace lo mismo, lo que incumple WCAG 2.5.8.