aria-selected
Indica que un elemento dentro de un contenedor de selección simple o múltiple está actualmente seleccionado. Se utiliza en los roles tab, option, gridcell, treeitem y similares. Se distingue de aria-checked (casilla de verificación/botón de opción) y de aria-pressed (botón alternante).
Cuándo utilizarlo
En elementos que pertenecen a un contenedor con un modelo de selección:
role="tab"dentro de untablist(exactamente uno seleccionado).role="option"dentro de unlistbox(uno o varios, segúnaria-multiselectable).role="treeitem"dentro de untree.role="gridcell",role="row",role="columnheader",role="rowheader"dentro de ungrid.
El estado describe la relación entre el elemento y la selección del contenedor, no un estado independiente de activado/desactivado como una casilla de verificación. Debe elegirse el estado correcto según el patrón:
aria-selected— elementos en un contexto de pestaña, opción, árbol o cuadrícula.aria-checked— casillas de verificación y botones de opción (elecciones independientes).aria-pressed— botones alternantes (el propio botón está activado o desactivado).
Un error habitual es colocar aria-selected="true" en un <button> para indicar «el usuario hizo clic en mí por última vez». Si el elemento no forma parte de un widget tipo selección, deben usarse aria-pressed o aria-current.
Cómo mantenerlo sincronizado
Los valores válidos son "true" y "false". Conviene representar "false" en los elementos no seleccionados en lugar de omitir el atributo: así la tecnología de apoyo anuncia correctamente información de posición del tipo «1 de 5». En un widget de selección simple (tablist, listbox de selección simple), exactamente un elemento debe tener el valor "true" en cada momento.
El atributo debe cambiar al mismo tiempo que el indicador visual y que la gestión del foco. En un tablist, desplazar la selección normalmente también mueve tabindex="0" a la pestaña seleccionada y tabindex="-1" al resto.
Errores frecuentes
- Usar
aria-selecteden un botón o enlace fuera de cualquier contenedor tipo selección. - Varios elementos con
aria-selected="true"en un tablist o listbox de selección simple. - Olvidar establecer
aria-selected="false"en el elemento previamente seleccionado al mover la selección. - Aplicar una apariencia de «seleccionado» mediante CSS sin modificar el atributo.
- Confundir
aria-selectedconaria-checkeden opciones de listbox (siempreselected) o conaria-currenten un enlace de navegación (current, noselected). - Establecer
aria-selectedenrole="menuitem"— los elementos de menú no lo admiten; debe usarsearia-checkedpara casillas de verificación o botones de opción en menús.
Ejemplo
<div role="tablist" aria-label="Secciones">
<button role="tab" id="tab-1" aria-selected="true" tabindex="0" aria-controls="panel-1">Resumen</button>
<button role="tab" id="tab-2" aria-selected="false" tabindex="-1" aria-controls="panel-2">Detalles</button>
<button role="tab" id="tab-3" aria-selected="false" tabindex="-1" aria-controls="panel-3">Reseñas</button>
</div>