Saltar al contenido principal
LibreTexts Español

3.4: WAI-ARIA estática frente a dinámica

  • Page ID
    152562
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)

    ( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\id}{\mathrm{id}}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\kernel}{\mathrm{null}\,}\)

    \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\)

    \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\)

    \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)

    Incluso si no usas JavaScript, hay una buena cantidad que puedes hacer con WAI-ARIA estática para mejorar la accesibilidad de un sitio web o aplicación web. Es posible que ya hayas recopilado de la discusión de estados y propiedades que algunos WAI-ARIA pueden escribirse directamente en el HTML de una página web (por ejemplo, propiedades y puntos de referencia). Otros necesitan actualizarse dinámicamente en función de la entrada del usuario o el contexto (por ejemplo, estados y algunas propiedades).

    Algunos de los atributos estáticos de WAI-ARIA que es probable que utilice se enumeran a continuación, con sus descripciones del W3C.

    Propiedades estáticas globales

    • aria-describedby: Identifica el elemento (o elementos) que describe el objeto.
    • aria-labelledby: Identifica el elemento (o elementos) que etiqueta el elemento actual.
    • aria-label: Define un valor de cadena que etiqueta el elemento actual.
    • aria-controls: Identifica el elemento (o elementos) cuyo contenido o presencia son controlados por el elemento actual.
    • aria-owns: Identifica un elemento (o elementos) para definir una relación parent/child visual, funcional o contextual entre elementos DOM donde la jerarquía DOM no puede ser utilizada para representar la relación.
    • aria-details: Identifica el elemento que proporciona una descripción detallada y ampliada del objeto.

    A continuación se muestra un ejemplo de algunos de estos atributos en acción. Aunque este ejemplo necesitaría algunas secuencias de comandos para manejar la apertura y cierre del submenú, y actualizando dinámicamente aria-expanded a false cuando el submenú está cerrado, y actualizar el elemento activo al que se hace referencia en aria-activedescendant, puedes hacerte una idea de la semántica que se están aplicando para hacer que la lista anidada se anuncie como un menú. Mire o escuche la salida del lector de pantalla en el video que sigue al cuadro de código a continuación para comprender cómo se leen los atributos WAI-ARIA. Examine el código en el cuadro de código para entender qué WAI-ARIA se está utilizando para producir esa salida.

    Un enlace a un elemento interactivo se puede encontrar en la parte inferior de esta página.

    ¿Cómo funciona el marcado anterior?

    1. Navegando con la tecla Tab, el enfoque primero va al div “menu_container”, que se hace enfocable por teclado con el atributo tabindex="0".
    2. Allí el lector de pantalla lee el contenido del div “selector”, identificado por aria-details, describiendo para qué se utiliza el menú. Este div está oculto a la vista pero disponible para lectores de pantalla. Este div podría hacerse visible para que esté disponible para todos.
    3. A continuación, las “ofrendas” UL recibe foco, también se hace enfocable con tabindex="0".
    4. Ahí, el lector de pantalla lee el contenido del div “navhowto”, identificado por aria-describedby, explicando cómo navegar por el menú. Este div está oculto a la vista para la mayoría de los usuarios.
    5. A continuación, usando las teclas de flecha como lo indica el div “navhowto”, el elemento de menú 'Inicio' toma el foco, anunciando “menubar expandido con submenú, Inicio, menú”. Probablemente un poco más detallado en este caso de lo que necesita ser, pero así es como ChromeVox maneja los elementos del menú.
    6. Usando la tecla Flecha abajo, el enfoque se mueve al elemento del menú “Cursos”, anunciando “Cursos, menú expandido con submenú”. El atributo aria-haspopup es lo que hace que un lector de pantalla anuncie un submenú. aria-expanded="true” hace que el lector de pantalla anuncie que el menú está expandido.
    7. Usando la Flecha Abajo, el enfoque se mueve hacia el submenú, anunciando “Menú con dos elementos, Economía, menuitem 1 de dos”. El submenú se anuncia como un menú propio, identificado agregando role="menu” al UL que contiene los dos elementos del submenú.
    8. Por último, usando la Flecha Abajo, el lector de pantalla anuncia “Ciencias de la Computación, menuitem dos de dos”.

    Aquí hay un video que muestra cómo ChromeVox leería el menú descrito anteriormente:

    Video: Ejemplo de menú con WAI-ARIA (0:33)

    Miniaturas para el elemento incrustado “Ejemplo de menú con WAI-ARIA”

    Un elemento de YouTube ha sido excluido de esta versión del texto. Puedes verlo en línea aquí: https://pressbooks.library.ryerson.ca/wafd/?p=272

    La mayoría de los elementos WAI-ARIA descritos en la serie de pasos anteriores se pueden usar estáticamente escribiendo los atributos directamente en el HTML. El aria-activedescendant normalmente se actualizaría dinámicamente con script a medida que se seleccionan los elementos del menú. El aria-expanded también se actualizaría dinámicamente cambiando entre true y false cuando el submenú se alterna abierto o cerrado.

    Aquí hay algunos atributos más estáticos de WAI-ARIA, que veremos con un poco más de detalle más adelante a medida que complete las actividades.

    Atributos estáticos del widget

    • aria-haspopup: Indica la disponibilidad y el tipo de elemento popup interactivo, como menú o diálogo, que puede ser activado por un elemento.
    • aria-modal: Indica si un elemento es modal cuando se muestra
    • aria-readonly: Indica que el elemento no es editable sino que por lo demás es operable.
    • aria-required: Indica que se requiere la entrada del usuario en el elemento antes de que se pueda enviar un formulario.

    Regiones estáticas vivas

    • aria-live: Indica que un elemento se actualizará y describe los tipos de actualizaciones que los agentes de usuario, las tecnologías de asistencia y el usuario pueden esperar de la región en vivo.
    • aria-atomic: Indica si las tecnologías de asistencia presentarán toda, o solo partes de, la región modificada en función de las notificaciones de cambio definidas por el atributo aria-relevant.
    • aria-relevant: Indica qué notificaciones activará el agente de usuario cuando se modifique el árbol de accesibilidad dentro de una región activa.
    Toolkit: Para obtener una lista completa de roles, consulte la sección 1 en las Matrices de rol de ARIA.

    This page titled 3.4: WAI-ARIA estática frente a dinámica is shared under a CC BY-SA license and was authored, remixed, and/or curated by Digital Education Strategies, The Chang School.