Dilemas de los diálogos y travesuras modales: Un análisis profundo de las ventanas emergentes

Rate this content
Bookmark

Nuestros sistemas de diseño comúnmente incluyen componentes que se muestran encima de otro contenido: tooltips, date pickers, menús y enseñanza de la interfaz de usuario, por nombrar solo algunos. Las actualizaciones propuestas para la plataforma web están a punto de hacer que construir estos sea mucho más fácil. Es posible que ni siquiera necesites JavaScript. En esta charla, aprenderás todo sobre el próximo atributo 'popover', la modalidad y la capa superior.

This talk has been presented at JSNation 2023, check out the latest edition of this JavaScript Conference.

FAQ

El elemento de diálogo en HTML es un componente que permite crear cuadros de diálogo modales o no modales en una página web. Viene con un rol de diálogo incorporado para accesibilidad y puede ser activado mediante JavaScript utilizando métodos como showModal() para modales y show() para no modales.

Los atributos de popover son una nueva adición a HTML que permite agregar comportamientos de popover a cualquier elemento. Funciona mediante la adición del atributo 'popover' a un elemento y proporciona funciones como mostrar sugerencias de elementos de formulario, selectores de contenido y más. Se activa mediante un botón que apunta a un ID específico del popover.

Los diálogos modales capturan la interacción del usuario haciendo que solo el diálogo sea interactivo y bloqueando otras funcionalidades de la página, mientras que los popovers son generalmente no modales y permiten la interacción con otras áreas de la página. Los popovers pueden cerrarse automáticamente al interactuar fuera de ellos, a diferencia de los diálogos que requieren una acción explícita para cerrar.

El índice Z en CSS controla el orden de apilamiento de los elementos en la página. Tanto los diálogos como los popovers, cuando son modales, se colocan en la capa superior, lo que significa que se muestran por encima de otros contenidos y gestionan el índice Z automáticamente para sobresalir visualmente.

Sí, los elementos que se colocan en la capa superior, como los diálogos modales y los popovers, incluyen un fondo automáticamente. Este fondo ayuda a destacar el elemento modal y a indicar que otras áreas de la página no están disponibles temporalmente. Este fondo puede ser estilizado con CSS usando ::backdrop.

Los elementos de diálogo incorporan roles de accesibilidad que facilitan a las tecnologías asistivas entender y manejar estos componentes. Los popovers, al poder operar sin JavaScript, ofrecen una mayor compatibilidad y robustez, asegurando que funcionen en varios entornos y situaciones.

El soporte para el atributo popover se ha implementado recientemente en Chrome y Chrome estable. También está en desarrollo en otros navegadores como Edge, Safari en vista previa técnica, y Firefox junto con Daigalia.

Hidde de Vries
Hidde de Vries
10 min
01 Jun, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La charla trata sobre el uso de diálogos y popovers en el desarrollo web. Los diálogos pueden ser modales o no modales y ahora son compatibles con la accesibilidad. Los popovers son versátiles y se pueden agregar a cualquier elemento sin JavaScript. Proporcionan sugerencias, selectores, enseñanza de la interfaz de usuario, listas y menús de acciones. Los diálogos y popovers modales y no modales tienen diferentes comportamientos y métodos de cierre. El soporte del navegador para estas características se está expandiendo, pero aún hay preguntas abiertas sobre posicionamiento, semántica y otros casos de uso.

1. Introducción a los Diálogos y Popovers

Short description:

Quiero hablarles sobre los diálogos y los popovers. El elemento de diálogo y los atributos de popover son dos cosas que pueden ayudarte a colocar cosas encima de otras cosas en la web. Los diálogos ahora son compatibles con la accesibilidad y se pueden usar como diálogos modales o no modales. Los popovers son un nuevo conjunto de comportamientos que se pueden agregar a cualquier elemento para crear sugerencias de elementos de formulario, selectores de contenido, interfaces de enseñanza, listas desplegables y menús de acciones. Funcionan sin JavaScript y se pueden crear fácilmente agregando el atributo de popover a un elemento.

Quiero hablarles sobre los diálogos y los popovers. Ahora, todos sabemos que la web solía ser lineal, ¿verdad? Teníamos texto e imágenes. Cada vez más, nos gusta colocar cosas encima de otras cosas. Hoy les hablaré sobre dos cosas que realmente pueden ayudarte con eso, desde la especificación de HTML.

Uno es el elemento de diálogo que ha existido por un tiempo, y recientemente, también se ha vuelto compatible con la accessibility. Luego, en segundo lugar, los atributos de popover, que es un atributo completamente nuevo que llega a la web. Se ha agregado a Chrome la semana pasada y a Chrome estable. También se está desarrollando en todos los demás navegadores.

Un ejemplo de un popover es cuando tienes un poco de interfaz de usuario y quieres explicárselo a tus usuarios. En este caso, hay un artículo de The Economist. Tienen un reproductor de audio, y muestran al usuario, ya sabes, puedes hacer clic aquí para escuchar tu artículo. Puedes hacer todo tipo de cosas con los popovers, como el otro día cuando estaba en una reunión de negocios muy seria y Microsoft Teams me dijo que usara integraciones de Excel. Eso es algo que hacen. También me han dicho que sea yo mismo expresivo, mi yo expresivo, usando como un avatar. Puedes usar los popovers para todo tipo de cosas. Slack lo hace un poco mejor al decirte que te ves bien cuando pasas el cursor sobre ti mismo. Prefiero eso al anterior, para ser honesto.

Ahora veamos las diferencias entre los diálogos y los popovers, comenzando con el elemento de diálogo. Entonces, el diálogo es un elemento de HTML, así que no estoy hablando de cualquier diálogo que estés construyendo, sino del elemento real en HTML. Viene con el rol de diálogo, por lo que la semántica está incorporada, y tiene una configuración modal. La forma de usarlo es en el script, por lo que puedes encontrar el elemento en el DOM y luego simplemente llamar a showModal en él. Eso lo muestra como un diálogo modal. Y también puedes llamar a show, que hará un diálogo no modal.

Ahora, el popover es un nuevo conjunto de comportamientos que puedes agregar a cualquier elemento que desees. Es un atributo que agregas a un elemento para construir cosas como sugerencias de elementos de formulario, selectores de contenido, interfaces de enseñanza, listas desplegables y menús de acciones. Y lo genial del popover es que también funciona sin JavaScript. La forma de hacer un popover es básicamente agregando el atributo de popover a cualquier elemento que lo convierte en un popover. Luego le das un ID y luego puedes apuntar a ese ID desde un atributo de popover-targets en un botón. A partir de ese momento, ese botón se convierte en un interruptor para tu popover. Así que he hecho uno muy feo en esta captura de pantalla, pero básicamente tienes el botón, tienes tu div, y puedes poner lo que quieras ahí dentro.

2. Patrones de Popover y Modal vs No Modal

Short description:

Los popovers se pueden controlar sin JavaScript. Modal vs no modal: el modal bloquea la interacción del usuario, el no modal permite otras acciones en la página web. Los métodos de cierre incluyen cierre explícito y cierre ligero. El apilamiento con Z index controla la superposición de elementos. Los elementos de la capa superior tienen una capa separada y no se pueden posicionar en relación con otros elementos. Los fondos llaman la atención e indican el estado modal. Los elementos de la capa superior vienen con un fondo. Los atrapamientos de enfoque del teclado se pueden usar en modales.

Se convierte en un popover que se puede controlar sin JavaScript. Ahora, por supuesto, también puedes hacerlo en JavaScript. Entonces puedes llamar al método de mostrar popover en tu elemento, y eso también lo mostrará. Luego puedes usar eso si quieres hacer popovers temporizados, como lo estaba haciendo Microsoft Teams conmigo, que aparecía y desaparecía en ciertos momentos.

Ahora, trabajando en popovers y diálogos y aprendiendo cómo funcionan, me surgió esta pregunta, ¿cómo son realmente diferentes estos patrones? Parecen bastante similares. Así que quiero llevarte a través de un par de ejes diferentes en los que realmente son diferentes.

Uno es modal versus no modal. Ahora, modal significa que un elemento, si es modal, es lo único con lo que el usuario puede interactuar. Todo lo demás está bloqueado, por lo que no puedes seleccionar texto, no puedes hacer clic, no puedes desplazarte, idealmente. Por lo tanto, cualquier otra cosa es imposible, solo puedes hacer las partes modales. Eso es útil cuando has decidido rastrear a tus usuarios, y según la ley europea, necesitas pedir consentimiento. Entonces, si haces eso, probablemente quieras usar un modal, porque no puedes colocar ninguna cookie antes de haber pedido permiso, y tampoco quieres que tus usuarios naveguen por tu sitio web sin rastrearlos, supongo, porque ese es tu objetivo allí.

Los diálogos no modales son cosas como menús en tus aplicaciones, como este, donde estás editando una imagen, y obtienes algunas opciones para esa imagen, o widgets de chat que pueden aparecer sobre tu contenido. Ahora, deben poder cerrarse fácilmente, y es importante que puedas hacer otras cosas en la página web, como en este caso, puedo imaginar que las personas solo quieren continuar reservando su viaje, y no quieren hablar contigo o chatear, por lo que quieres que sea fácil de cerrar. Hablando de cerrar, hay diferentes formas de cerrar. Una es el cierre explícito, que es lo que sucede cuando tienes un botón y necesitas hacer clic en él, o cuando un script lo elimina realmente, y hay un cierre ligero, que es una especie de cierre automático. Entonces, cuando estás eligiendo una fuente en Google Docs, obtienes esta lista de fuentes, pero cuando comienzas a desplazarte o haces clic fuera de ella, simplemente desaparece. No necesitas hacer nada especial para que desaparezca.

Luego, el apilamiento. Probablemente todos estemos familiarizados con el índice Z en CSS. Te permite apilar elementos uno encima del otro y controlar el orden en que eso sucede. Entonces, si le asignas un índice Z de uno a un elemento y un índice Z de dos al otro, el dos estará por encima del uno porque es un número más alto, y probablemente todos hayamos visto números muy altos en nuestras bases de código. Ahora, lo genial de la capa superior es que ocurre por encima de todo. Por lo tanto, el apilamiento Z ocurre en tu cuerpo, y puedes ver esto como una capa separada de cualquier otra cosa en tu cuerpo. También significa que no puedes posicionar nada en relación con cosas que no están en la capa superior.

Luego, los fondos, a veces pueden ser útiles para llamar la atención sobre ciertos elementos, y para elementos modales también ayuda a mostrar que son modales y que las otras cosas no están disponibles actualmente. Los elementos de la capa superior vienen con un fondo de forma gratuita en el navegador, y puedes darle estilo con ::backdrop en tu CSS, y luego puedes hacer cosas como cambiar el color o agregar un poco de desenfoque o hacer todo tipo de otras cosas que CSS te permite hacer. Por lo tanto, eso es muy útil y solo ocurre con elementos de la capa superior específicamente.

Y por último, hay trampas de enfoque del teclado. Entonces, cuando estás construyendo un modal, a veces quieres atrapar a las personas dentro de ese modal.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
React Advanced 2021React Advanced 2021
47 min
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
Top Content
The Talk discusses the balance between flexibility and consistency in design systems. It explores the API design of the ActionList component and the customization options it offers. The use of component-based APIs and composability is emphasized for flexibility and customization. The Talk also touches on the ActionMenu component and the concept of building for people. The Q&A session covers topics such as component inclusion in design systems, API complexity, and the decision between creating a custom design system or using a component library.
Accesibilidad en Discord
React Advanced 2021React Advanced 2021
22 min
Accesibilidad en Discord
This Talk discusses the accessibility efforts at Discord, focusing on keyboard navigation and the challenges faced with implementing focus rings and outlines. The speaker showcases a unified focus ring system and a saturation slider to address accessibility concerns. They also highlight the implementation of role colors and the use of CSS filters for accessibility improvements. The Talk concludes with insights on runtime accessibility checking and the development of a performant core runtime system for checking accessibility issues.
Construir un Sistema de Diseño con React y Tailwind CSS
React Summit 2022React Summit 2022
27 min
Construir un Sistema de Diseño con React y Tailwind CSS
Top Content
This Talk discusses design systems and how to build one using React and Tailwind CSS. Tailwind CSS provides utility classes for building complex layouts without writing CSS rules. Custom colors can be added to the Tailwind CSS config file, and font styles and text sizes can be customized. The entire Tailwind CSS configuration can be customized to meet specific requirements. Base styles can be added to the config file itself using a plugin. Reusable components can be created with Tailwind CSS, allowing for easy customization of size and color.
Configurando las Pruebas de Accesibilidad de Axe
TestJS Summit 2021TestJS Summit 2021
30 min
Configurando las Pruebas de Accesibilidad de Axe
Top Content
AXe is an accessibility engine for automated web UI testing that runs a set of rules to test for accessibility problems. It can be configured to disable or enable specific rules and run based on tags. Axe provides various options, but axe linter does not support all options. The importance of investing time and resources in accessibility is emphasized, as it benefits not only those with disabilities but improves the web for everyone. Manual testing is also highlighted as a necessary complement to automated tests for addressing accessibility issues.
Caminando en la línea entre la flexibilidad y la consistencia en las bibliotecas de componentes
React Summit 2022React Summit 2022
27 min
Caminando en la línea entre la flexibilidad y la consistencia en las bibliotecas de componentes
This Talk discusses the comparison between Polaris and Material UI component libraries in terms of consistency and flexibility. It highlights the use of the action list pattern and the customization options available for the action list component. The Talk also emphasizes the introduction of a composite component to improve API flexibility. Additionally, it mentions the importance of finding the right balance between flexibility and consistency and the use of types to enforce specific child components.
Elementos Interactivos Anidados: Una Pesadilla en Accesibilidad
React Advanced 2023React Advanced 2023
23 min
Elementos Interactivos Anidados: Una Pesadilla en Accesibilidad
Nested interactive elements can cause accessibility issues on websites, and the speaker shares a personal experience with an accessibility bug involving a list component. Mitigating nested interactive structures involves limiting these patterns during development and restructuring existing elements. The speaker provides recommendations for improving accessibility, such as adjusting role properties and gathering user feedback. The conclusion emphasizes the importance of accessible solutions and encourages sharing resources to build more inclusive experiences.

Workshops on related topic

Accesibilidad web para Ninjas: Un enfoque práctico para crear aplicaciones web accesibles
React Summit 2023React Summit 2023
109 min
Accesibilidad web para Ninjas: Un enfoque práctico para crear aplicaciones web accesibles
Workshop
Asaf Shochet Avida
Eitan Noy
2 authors
En este masterclass práctico, te proporcionaremos las herramientas y técnicas que necesitas para crear aplicaciones web accesibles. Exploraremos los principios del diseño inclusivo y aprenderemos cómo probar nuestros sitios web utilizando tecnología de asistencia para asegurarnos de que funcionen para todos.
Cubriremos temas como el marcado semántico, los roles de ARIA, los formularios y la navegación accesibles, y luego nos sumergiremos en ejercicios de codificación donde podrás aplicar lo que has aprendido. Utilizaremos herramientas de prueba automatizadas para validar nuestro trabajo y asegurarnos de cumplir con los estándares de accesibilidad.
Al final de este masterclass, estarás equipado con el conocimiento y las habilidades para crear sitios web accesibles que funcionen para todos, y tendrás experiencia práctica utilizando las últimas técnicas y herramientas para el diseño inclusivo y las pruebas. ¡Únete a nosotros en este increíble masterclass de codificación y conviértete en un ninja de la accesibilidad web y el diseño inclusivo!
Pruebas automatizadas de accesibilidad con jest-axe y Lighthouse CI
TestJS Summit 2021TestJS Summit 2021
85 min
Pruebas automatizadas de accesibilidad con jest-axe y Lighthouse CI
Workshop
Bonnie Schulkin
Bonnie Schulkin
¿Incluyen tus pruebas automatizadas verificaciones de accesibilidad? Este masterclass cubrirá cómo comenzar con jest-axe para detectar violaciones de accesibilidad basadas en código, y Lighthouse CI para validar la accesibilidad de las páginas completamente renderizadas. Ninguna cantidad de pruebas automatizadas puede reemplazar las pruebas manuales de accesibilidad, pero estas verificaciones se asegurarán de que tus probadores manuales no estén haciendo más trabajo del necesario.
Accesibilidad web en aplicaciones JavaScript
React Summit 2022React Summit 2022
161 min
Accesibilidad web en aplicaciones JavaScript
Workshop
Sandrina Pereira
Sandrina Pereira
A menudo vemos que JavaScript daña la accesibilidad de un sitio web. En esta masterclass, aprenderás cómo evitar errores comunes y cómo utilizar JS a tu favor para mejorar la accesibilidad de tus aplicaciones web.
En esta masterclass exploraremos múltiples ejemplos del mundo real con problemas de accesibilidad, y aprenderás cómo hacer que funcionen para las personas que utilizan un mouse o un teclado. También aprenderás cómo se utilizan los lectores de pantalla, ¡y te mostraré que no hay razón para tener miedo de usar uno!
Únete a mí y déjame mostrarte cómo la accesibilidad no limita tus soluciones o habilidades. ¡Al contrario, las hace más inclusivas!
Al final, serás capaz de:- Comprender los principios de WCAG y cómo están organizados- Conocer casos comunes en los que JavaScript es esencial para la accesibilidad- Crear enlaces, botones y elementos conmutables inclusivos- Utilizar regiones en vivo para errores y estados de carga- Integrar la accesibilidad en el flujo de trabajo de tu equipo de inmediato- Darte cuenta de que crear sitios web accesibles no es tan difícil como parece ;)
Desarrollo Rápido de UI en React: Aprovechando Bibliotecas de Componentes Personalizadas y Sistemas de Diseño
React Advanced 2022React Advanced 2022
118 min
Desarrollo Rápido de UI en React: Aprovechando Bibliotecas de Componentes Personalizadas y Sistemas de Diseño
Workshop
Richard Moss
Richard Moss
En este masterclass, recorreremos los enfoques más efectivos para construir componentes de UI escalables que mejoren la productividad y felicidad del desarrollador :-) Esto implicará una combinación de ejercicios prácticos y presentaciones, que cubrirán los aspectos más avanzados de la popular biblioteca styled-components, incluyendo la tematización e implementación de utilidades styled-system a través de props de estilo para un desarrollo rápido de UI, y culminando en cómo puedes construir tu propia biblioteca de componentes personalizada y escalable.
Nos enfocaremos tanto en el escenario ideal, donde trabajas en un proyecto nuevo, como en tácticas para adoptar incrementalmente un sistema de diseño y enfoques modernos para el estilo en una base de código existente con algo de deuda técnica (¡que suele ser el caso!). Al final del masterclass, deberías sentir que comprendes los compromisos entre diferentes enfoques y sentirte seguro para comenzar a implementar las opciones disponibles para avanzar hacia el uso de una biblioteca de componentes basada en un sistema de diseño en la base de código en la que trabajas.
Prerrequisitos: - Familiaridad y experiencia trabajando en grandes bases de código de React- Una buena comprensión de los enfoques comunes para el estilo en React
Creando aplicaciones React Native accesibles
React Summit Remote Edition 2021React Summit Remote Edition 2021
91 min
Creando aplicaciones React Native accesibles
Workshop
Scott Vinkle
Scott Vinkle
React Native es un framework utilizado para crear aplicaciones nativas de iOS y Android de una manera con la que los desarrolladores web ya pueden estar familiarizados. Pero, ¿cómo asegurarse de que tus aplicaciones React Native sean inclusivas y utilizables para todos? Scott compartirá consejos sobre cómo probar y construir aplicaciones React Native con accesibilidad integrada.