Accesibilidad en Discord

Bookmark
Rate this content

FAQ

La navegación por teclado en Discord es una función de accesibilidad diseñada para permitir que los usuarios operen la plataforma únicamente con un teclado, sin necesidad de un mouse. Esto es crucial para personas que no pueden o tienen dificultades para usar un mouse, mejorando la inclusividad de la aplicación.

Los desafíos incluyeron problemas con la propiedad CSS 'outline', como el recorte del contorno debido a 'overflow hidden', la aplicación limitada del contorno solo al elemento objetivo, y la incapacidad de 'outline' para adaptarse a diferentes colores de fondo o respetar radios de borde asimétricos.

El control deslizante de saturación en Discord permite a los usuarios ajustar la saturación de colores en la interfaz de usuario, reduciéndola desde un 100% (colores completos) hasta 0% (escala de grises). Esto ayuda a usuarios con sensibilidad a colores intensos a tener una experiencia visual más cómoda.

React D&D Accessible Backend es una biblioteca desarrollada para mejorar la accesibilidad en funciones de arrastrar y soltar en Discord, proporcionando soporte tanto para teclado como para lectores de pantalla. Está diseñada para integrarse con React D&D y facilitar una interacción más inclusiva.

La verificación de accesibilidad en tiempo de ejecución en Discord es una funcionalidad en desarrollo que permite identificar y reportar problemas de accesibilidad automáticamente mientras los desarrolladores trabajan en la aplicación. Utiliza avanzadas técnicas de programación para ejecutar comprobaciones sin interrumpir la experiencia del usuario.

Los usuarios pueden enviar comentarios sobre la accesibilidad en Discord a través de un formulario especializado disponible en la URL dis.gd/A11y. Esto permite a los desarrolladores recibir retroalimentación directa para mejorar continuamente las funciones de accesibilidad de la plataforma.

Brandon Dail
Brandon Dail
22 min
25 Oct, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Esta charla discute los esfuerzos de accesibilidad en Discord, centrándose en la navegación por teclado y los desafíos enfrentados con la implementación de focus rings y outlines. El orador presenta un sistema unificado de focus ring y un control deslizante de saturación para abordar las preocupaciones de accesibilidad. También destacan la implementación de colores de roles y el uso de filtros CSS para mejoras de accesibilidad. La charla concluye con ideas sobre la verificación de accesibilidad en tiempo de ejecución y el desarrollo de un sistema de tiempo de ejecución central y eficiente para verificar problemas de accesibilidad.
Available in English: Accessibility at Discord

1. Introduction to Accessibility at Discord

Short description:

Soy Brandon Dale, ingeniero de software en Discord, y hablaré sobre accesibilidad en Discord. Nuestro primer gran proyecto es la navegación por teclado, que asegura que los usuarios puedan realizar todas las acciones con un teclado. Esto es crucial para la accesibilidad y también ayuda con la compatibilidad del lector de pantalla. Permítanme demostrar la navegación por teclado de Discord. Primero, me centraré en la entrada de mensajes, luego usaré tab para navegar a través de elementos enfocables. También puedo navegar a través de mensajes y usar atajos para acciones como responder. Un desafío que enfrentamos fue implementar los anillos de enfoque, que resultaron tener muchos casos extremos. Usar la propiedad outline de CSS causó complicaciones, especialmente al tratar con contenedores con elementos enfocables y overflow hidden.

Soy Brandon Dale y soy ingeniero de software en Discord trabajando en el equipo de accesibilidad. Estoy aquí para hablar sobre accesibilidad en Discord. Este va a ser un masterclass enfocado en ingeniería donde hablaré sobre algunos de los problemas más interesantes en los que hemos trabajado, los espacios problemáticos alrededor de ellos, y luego mirar los detalles técnicos de las soluciones que hemos construido.

Ahora, antes de hacer eso, quiero dar un reconocimiento al resto de mi equipo porque estoy definitivamente aquí en nombre de muchas personas realmente geniales que han hecho mucho del trabajo del que voy a presumir. Así que solo algunas presentaciones rápidas. Nuestro equipo es Evelyn, nuestra gerente de ingeniería, John es otro ingeniero, Saan es diseñador, Nick nos ayuda con el marketing, Meghan es otra ingeniera, y luego, por supuesto, yo mismo, otro ingeniero.

Ahora, el primer gran proyecto del que quiero hablar es la navegación por teclado. Esto fue algo que hicimos el año pasado y fue un proyecto con un objetivo realmente amplio de simplemente asegurarnos de que puedas hacer cualquier cosa que necesites hacer en Discord solo con un teclado. Esta es una característica de accesibilidad realmente importante porque hay muchas personas que no pueden o tienen dificultades para usar un ratón. Y también encontramos que un buen soporte de teclado es un proxy relativamente bueno de cómo podría funcionar un lector de pantalla en ciertos casos, ya que ambos dependen de navegar un cursor entre elementos enfocables. Así que obtuvimos muchos beneficios en ambos casos.

Así que permítanme mostrarles cómo se ve en Discord la navegación por teclado, en caso de que no estén familiarizados con Discord y no hayan usado la navegación por teclado. Así que aquí lo tengo funcionando, y solo quiero llamar su atención hacia la parte inferior aquí, porque es donde voy a comenzar. Así que voy a enfocar esta entrada de mensaje, presionar tab, y ahora verán este anillo de enfoque azul alrededor de la entrada de mensaje. Si presiono tab de nuevo, puedo moverme a través de otros elementos enfocables, shift tab para moverme hacia atrás. Déjenme ir a un canal que tiene algunos mensajes. Vamos a React Internals. Verán que mi anillo de enfoque persistió porque usé el teclado para llegar a este canal. Y si presiono hacia arriba, puedo moverme hacia arriba a través de los mensajes, hacia abajo me lleva hacia abajo. Puedo usar atajos de teclado mientras estoy enfocado en mensajes como R para responder, y luego puedo usar una navegación similar con las teclas de flecha y todas las otras listas que pueden ver aquí. Así que antes de hablar sobre el proyecto, solo quiero mencionar esta publicación de blog de John. Hizo mucho del trabajo del que voy a hablar y escribió esta excelente publicación de blog sobre el tema. Así que si quieren leer una versión más larga de esto, les recomiendo encarecidamente que la revisen. Tiene muchos detalles realmente interesantes.

Ahora, la primera gran parte de la navegación por teclado de la que quiero hablar son los anillos de enfoque, porque estos son engañosamente simples. Parece algo que debería ser relativamente fácil, pero encontramos que hay muchos casos extremos que hacen esto realmente complicado si quieres escalarlo. Ahora, tradicionalmente, esto es algo que implementarías con la propiedad outline de CSS. Y esto es algo que intentamos hacer, pero encontramos que había muchas complicaciones allí que quiero repasar rápidamente. Así que hubo un puñado de problemas con el uso de outline que encontramos bastante rápido. El primero fue que usar overflow hidden en un contenedor que puede tener elementos enfocables corría el riesgo de recortar el outline.

2. Challenges with Focus Rings and Outlines

Short description:

Si tabulo a este botón, verás el anillo de enfoque en todos los lados excepto en el más a la izquierda, debido a que está fuera del área de desbordamiento. Los navegadores recortan este anillo de enfoque, lo que se puede solucionar teniendo cuidado con los márgenes y los rellenos. La propiedad outline solo se puede aplicar al elemento objetivo, no a su contenedor. CSS carece de una buena solución para esto, ya que la pseudo clase focus within aplica el estilo a cualquier descendiente. Además, la propiedad outline no se adapta a diferentes colores de fondo. Una solución futura en la que se está trabajando es la función de contraste de color en la especificación de nivel cinco del módulo de color de CSS. La propiedad outline offset solo permite una aplicación uniforme, a diferencia de margin y padding.

Así que te mostraré aquí. Si tabulo a este botón, verás que puedes ver el anillo de enfoque en todos los lados excepto en el más a la izquierda. Y eso es porque está justo fuera de esa área de desbordamiento. Y tal como está, los navegadores recortarán ese anillo de enfoque. Esto es algo que generalmente puedes solucionar siendo más cuidadoso con los márgenes y los rellenos. Pero estábamos usando overflow por algunas otras razones, así que fue un poco complicado.

Y también queríamos evitar la potencial batalla cuesta arriba de tener que arreglar siempre, ya sabes, usos de overflow hidden para evitar esto. Lo siguiente con lo que nos encontramos es que el outline solo se puede aplicar al elemento objetivo. Así que, el elemento que está siendo enfocado. Así que, si miras a la derecha aquí, tenemos una entrada de chat que se parece mucho a lo que tenemos en Discord, donde tenemos una entrada y luego un botón, y están todos en este tipo de contenedor lógico. Y idealmente, lo que queremos es, cuando enfoco esta entrada, no queremos que ese anillo de enfoque se aplique a la entrada real. Queremos que se aplique en ese contenedor con el borde negro. Y si miras Discord, esto es lo que hacemos. Pero con CSS y la propiedad outline, no hay una buena manera de hacer eso ahora mismo. Hay esta pseudo clase focus within que te permite decir aplica un estilo si cualquier descendiente está enfocado. Y si habilitamos esto y hacemos clic aquí, puedes ver que nos da lo que queremos, pero la advertencia es que se aplica si cualquier descendiente está enfocado. Así que, si presiono tab para salir de la entrada, verás que el botón está enfocado, y ese anillo de enfoque en el contenedor permanece. Así que, esta propiedad simplemente no es lo suficientemente granular para nosotros.

Otra cosa es que esta propiedad outline no puede adaptarse automáticamente a diferentes colores de fondo. Así que verás aquí que tenemos un botón, y esto es generalmente lo que tenemos, es un botón a nivel de sistema de diseño que se usa en muchos contextos diferentes. Y si tabulo al primero, ese anillo de enfoque azul se ve bastante bien. Pero en el siguiente con este fondo borroso, no realmente. Sabes, es difícil de ver. Y queríamos una solución donde los diseñadores e ingenieros no tuvieran que pensar siempre manualmente y aplicar diferentes anillos de enfoque dependiendo del contexto. Y con outline, eso simplemente no es posible actualmente. Ahora, hay algo en lo que se está trabajando llamado la función de contraste de color en la especificación de nivel cinco del módulo de color de CSS, pero eso todavía es un trabajo en progreso temprano, y no tiene soporte en ningún navegador todavía. Pero realmente estamos esperando esto cuando llegue, porque esto ayudará a resolver muchos de estos problemas de adaptación de color de anillos de enfoque. Y luego este es un problema más pequeño y más molesto, la propiedad outline offset, que es lo que puedes usar para desplazar el outline del elemento objetivo ya sea hacia afuera o hacia adentro. Solo puede tomar un solo valor, por lo que solo puedes aplicarlo uniformemente. Así que, a diferencia de margin y padding y border radius, no te permitirá aplicar un outline que sea diferente en cualquiera de los lados.

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

Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Debugging JavaScript is a crucial skill that is often overlooked in the industry. It is important to understand the problem, reproduce the issue, and identify the root cause. Having a variety of debugging tools and techniques, such as console methods and graphical debuggers, is beneficial. Replay is a time-traveling debugger for JavaScript that allows users to record and inspect bugs. It works with Redux, plain React, and even minified code with the help of source maps.
Un Marco para Gestionar la Deuda Técnica
TechLead Conference 2023TechLead Conference 2023
35 min
Un Marco para Gestionar la Deuda Técnica
Top ContentPremium
Today's Talk discusses the importance of managing technical debt through refactoring practices, prioritization, and planning. Successful refactoring requires establishing guidelines, maintaining an inventory, and implementing a process. Celebrating success and ensuring resilience are key to building a strong refactoring culture. Visibility, support, and transparent communication are crucial for addressing technical debt effectively. The team's responsibilities, operating style, and availability should be transparent to product managers.
Construyendo un Asistente AI Activado por Voz con Javascript
JSNation 2023JSNation 2023
21 min
Construyendo un Asistente AI Activado por Voz con Javascript
Top Content
This Talk discusses building a voice-activated AI assistant using web APIs and JavaScript. It covers using the Web Speech API for speech recognition and the speech synthesis API for text to speech. The speaker demonstrates how to communicate with the Open AI API and handle the response. The Talk also explores enabling speech recognition and addressing the user. The speaker concludes by mentioning the possibility of creating a product out of the project and using Tauri for native desktop-like experiences.
Una Guía Práctica para Migrar a Componentes de Servidor
React Advanced 2023React Advanced 2023
28 min
Una Guía Práctica para Migrar a Componentes de Servidor
Top Content
React query version five is live and we'll be discussing the migration process to server components using Next.js and React Query. The process involves planning, preparing, and setting up server components, migrating pages, adding layouts, and moving components to the server. We'll also explore the benefits of server components such as reducing JavaScript shipping, enabling powerful caching, and leveraging the features of the app router. Additionally, we'll cover topics like handling authentication, rendering in server components, and the impact on server load and costs.
De Monolito a Micro-Frontends
React Advanced 2022React Advanced 2022
22 min
De Monolito a Micro-Frontends
Top Content
Microfrontends are considered as a solution to the problems of exponential growth, code duplication, and unclear ownership in older applications. Transitioning from a monolith to microfrontends involves decoupling the system and exploring options like a modular monolith. Microfrontends enable independent deployments and runtime composition, but there is a discussion about the alternative of keeping an integrated application composed at runtime. Choosing a composition model and a router are crucial decisions in the technical plan. The Strangler pattern and the reverse Strangler pattern are used to gradually replace parts of the monolith with the new application.
Solucionando Problemas de Rendimiento en React
React Advanced 2023React Advanced 2023
22 min
Solucionando Problemas de Rendimiento en React
Top Content
This Talk discusses various strategies to improve React performance, including lazy loading iframes, analyzing and optimizing bundles, fixing barrel exports and tree shaking, removing dead code, and caching expensive computations. The speaker shares their experience in identifying and addressing performance issues in a real-world application. They also highlight the importance of regularly auditing webpack and bundle analyzers, using tools like Knip to find unused code, and contributing improvements to open source libraries.

Workshops on related topic

Construyendo una Aplicación de Shopify con React & Node
React Summit Remote Edition 2021React Summit Remote Edition 2021
87 min
Construyendo una Aplicación de Shopify con React & Node
Top Content
Workshop
Jennifer Gray
Hanna Chen
2 authors
Los comerciantes de Shopify tienen un conjunto diverso de necesidades, y los desarrolladores tienen una oportunidad única para satisfacer esas necesidades construyendo aplicaciones. Construir una aplicación puede ser un trabajo duro, pero Shopify ha creado un conjunto de herramientas y recursos para ayudarte a construir una experiencia de aplicación sin problemas lo más rápido posible. Obtén experiencia práctica construyendo una aplicación integrada de Shopify utilizando el CLI de la aplicación Shopify, Polaris y Shopify App Bridge.Te mostraremos cómo crear una aplicación que acceda a la información de una tienda de desarrollo y pueda ejecutarse en tu entorno local.
Construye una sala de chat con Appwrite y React
JSNation 2022JSNation 2022
41 min
Construye una sala de chat con Appwrite y React
Workshop
Wess Cope
Wess Cope
Las API/Backends son difíciles y necesitamos websockets. Utilizarás VS Code como tu editor, Parcel.js, Chakra-ui, React, React Icons y Appwrite. Al final de este masterclass, tendrás los conocimientos para construir una aplicación en tiempo real utilizando Appwrite y sin necesidad de desarrollar una API. ¡Sigue los pasos y tendrás una increíble aplicación de chat para presumir!
Problemas difíciles de GraphQL en Shopify
GraphQL Galaxy 2021GraphQL Galaxy 2021
164 min
Problemas difíciles de GraphQL en Shopify
Workshop
Rebecca Friedman
Jonathan Baker
Alex Ackerman
Théo Ben Hassen
 Greg MacWilliam
5 authors
En Shopify a gran escala, resolvemos algunos problemas bastante difíciles. En este masterclass, cinco oradores diferentes describirán algunos de los desafíos que hemos enfrentado y cómo los hemos superado.

Tabla de contenidos:
1 - El infame problema "N+1": Jonathan Baker - Vamos a hablar sobre qué es, por qué es un problema y cómo Shopify lo maneja a gran escala en varios APIs de GraphQL.
2 - Contextualizando APIs de GraphQL: Alex Ackerman - Cómo y por qué decidimos usar directivas. Compartiré qué son las directivas, qué directivas están disponibles de forma predeterminada y cómo crear directivas personalizadas.
3 - Consultas de GraphQL más rápidas para clientes móviles: Theo Ben Hassen - A medida que tu aplicación móvil crece, también lo harán tus consultas de GraphQL. En esta charla, repasaré diversas estrategias para hacer que tus consultas sean más rápidas y efectivas.
4 - Construyendo el producto del futuro hoy: Greg MacWilliam - Cómo Shopify adopta las características futuras en el código actual.
5 - Gestión efectiva de APIs grandes: Rebecca Friedman - Tenemos miles de desarrolladores en Shopify. Veamos cómo estamos asegurando la calidad y consistencia de nuestras APIs de GraphQL con tantos colaboradores.
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Node Congress 2024Node Congress 2024
152 min
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Workshop
Emanuel Scirlet
Miguel Henriques
2 authors
Ven y aprende cómo puedes potenciar tus aplicaciones modernas y seguras utilizando GraphQL y Javascript. En este masterclass construiremos una API de GraphQL y demostraremos los beneficios del lenguaje de consulta para APIs y los casos de uso para los que es adecuado. Se requiere conocimiento básico de Javascript.
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.