CSS prefers-reduced-transparency

Optimiza y ajusta la IU para los usuarios que prefieren una IU opaca.

A partir de Chrome 118, está disponible la nueva función de consulta de medios prefers-reduced-transparency de CSS Media Queries 5. Las interfaces no opacas pueden causar dolores de cabeza o ser un problema visual para varios tipos de deficiencias visuales. Es por eso que Windows, macOS y iOS tienen preferencias del sistema que pueden reducir o quitar la transparencia de la IU.

Navegadores compatibles

  • Chrome: 118.
  • Edge: 118.
  • Firefox: Detrás de una marca.
  • Safari: No se admite.

Origen

Con esta nueva consulta de medios en el navegador, CSS puede adaptar la interfaz para los usuarios que especifican que desean reducir la transparencia:

.example {
  --opacity: .5;

  background: hsl(200 100% 50% / var(--opacity));

  @media (prefers-reduced-transparency: reduce) {
    --opacity: .95;
  }
}

En el ejemplo de código anterior, una variable CSS contiene un valor de opacidad en 50%, que luego se usa con HSL para crear un fondo azul semitransparente. La consulta de medios anidada busca una preferencia del usuario para reducir la transparencia y, cuando es verdadera, ajusta la variable de opacidad a 95%, un valor de opacidad casi opaco.

Esta consulta de medios se ajusta bien a las otras consultas de medios de preferencia, que permiten a los diseñadores y desarrolladores ser creativos y, al mismo tiempo, adaptarse a los usuarios. Puedes pensar en estas consultas de medios como una silla en un automóvil que ajusta automáticamente la posición para el usuario. Cuando un usuario visita tu sitio web, se ajusta automáticamente sin que lo solicite. ¡Qué genial!

Casos de uso para reducir la transparencia

En las siguientes secciones, se mostrarán momentos y oportunidades para reducir la transparencia de manera significativa.

Leyendas semitransparentes en las imágenes

Es bastante común superponer una imagen o una miniatura de video con una leyenda o un resumen semitransparentes. En el siguiente ejemplo, se ilustra una forma de controlar una preferencia por una transparencia reducida. La superposición se quita por completo, y el mismo contenido de la leyenda se muestra debajo de la imagen en lugar de superponerse.

Ventanas modales, notificaciones y ventanas emergentes transparentes

Otra forma en que los elementos de la IU superponen el contenido, lo que a menudo significa que hay elementos de opacidad, es con los elementos modales, las notificaciones y los pop-ups. En estos casos, aumentar la opacidad puede respetar la preferencia del usuario y, al mismo tiempo, permitir que se vea una cantidad sutil de color detrás de la superposición.

.card {
  background: hsl(none none 100% / 20%);

  @media (prefers-reduced-transparency: reduce) {
    background: hsl(none none 0% / 80%);
  }
}

Vidrio esmerilado adaptable

Otro estilo popular de superposición de imágenes es el vidrio esmerilado. En el siguiente ejemplo, la imagen detrás de la leyenda es un reflejo espejo de la imagen del producto. Esto tiene algunas ventajas: la imagen no se recorta y la preferencia de luz o oscuridad puede destacarse un poco más en el resultado final.

.adaptive-glass {
  --glass-lightness: 100%;
  --glass-alpha: 50%;

  background: hsl(0 0% var(--glass-lightness) / var(--glass-alpha));
  backdrop-filter: blur(40px);

  @media (prefers-color-scheme: dark) {
    --glass-lightness: 0%;
  }

  @media (prefers-reduced-transparency: reduce) {
    --glass-alpha: 85%;
  }
}

Encabezado hero

Un elemento común de la página principal tiene un mensaje en negrita superpuesto en un video en bucle o una imagen animada. En el siguiente ejemplo, se muestra una superposición de gradiente semitransparente colorida y una imagen de fondo con animación infinita. Si bien esto puede atraer a muchos usuarios, también generará problemas para muchos debido al bajo contraste con la transparencia y el movimiento que no se puede controlar.

Esto se puede solucionar con dos consultas de medios de CSS: prefers-reduced-motion y prefers-reduced-transparency. Dentro de la consulta de contenido multimedia de movimiento reducido, puedes aplicar la animación infinita solo si el usuario no tiene "preferencia" para el movimiento reducido, lo que indica al código que está bien que este usuario tenga movimiento.

Además, con la consulta de medios de transparencia reducida, puedes disminuir la opacidad para que el color de la superposición sea casi del 100%. Ahora el mensaje se puede leer fácilmente sin distracciones de movimiento ni contrastes problemáticos.

Si combinas todo esto, puedes implementar un aspecto creativo de la IU y, al mismo tiempo, asegurarte de que el público objetivo pueda leerlo y entender el mensaje.

.Hero img {
  @media (prefers-reduced-motion: no-preference) {
    animation: zoom 30s ease infinite;
  }
}

.Hero .overlay {
  background: hsl(none none 0% / 95%);

  @media (prefers-reduced-transparency: no-preference) {
    background: linear-gradient(
      to top right in oklab,
      oklch(40% 0.3 340 / 70%),
      oklch(40% 0.4 200 / 70%)
    );
  }
}

Perspectivas aditivos y sustractivas sobre las preferencias del usuario

En el ejemplo anterior, no se verificó si el usuario tenía una preferencia reducida, sino que se verificó si no tenía ninguna preferencia.

@media (prefers-reduced-transparency: no-preference) {
  
}

Los desarrolladores y diseñadores suelen “realizar un resguardo” de la experiencia del usuario en función de estas preferencias, con una mentalidad sustractiva. Esto se manifiesta en las consultas de contenido multimedia como una verificación de "reducción", en cuyo momento se quita algo de la IU. En el ejemplo, se muestra una mentalidad aditiva, en la que se agregan movimiento y transparencia si al usuario le parece bien.

Este enfoque te ayuda a pensar en una experiencia de referencia saludable que sea sólida por sí sola. Luego, si el usuario está de acuerdo, agrégalo a la experiencia.

Herramientas para desarrolladores

Las Herramientas para desarrolladores de Chrome pueden emular esta preferencia para reducir la transparencia (y mucho más) en la pestaña Renderización. En el siguiente video, obtén información para activar o desactivar las consultas de medios prefers-color-scheme y prefers-reduced-transparency para mostrar las variantes de la tarjeta de vidrio esmerilado en colores claro, oscuro, transparente y con transparencia reducida.

https://codepen.io/web-dot-dev/pen/dyaojxr