El Atributo INERT

Permite desactivar la interacción del usuario con un elemento y sus hijos, evitando que reciban eventos y excluyéndolos del orden de tabulación.
El atributo inert
permite desactivar la interacción del usuario con un elemento y sus hijos, evitando que reciban eventos (como clics, focus o selección) y excluyéndolos del orden de tabulación. Es especialmente útil para mejorar la accesibilidad y gestionar componentes modales o menús. Aquí un tutorial completo:
¿Qué es inert
?
-
Propósito: Marca un elemento como "inerte", bloqueando su interacción y la de sus descendientes.
-
Casos de uso:
-
Deshabilitar temporalmente secciones de la página (ej: fondo oscuro detrás de un modal).
-
Mejorar la navegación por teclado en componentes modales.
-
Evitar interacciones no deseadas durante transiciones o cargas.
-
Sintaxis Básica
Aplica el atributo inert
directamente en el elemento:
<div inert> <button>Botón inactivo</button> <input type="text" placeholder="No se puede enfocar"> </div>
Efectos:
-
Los elementos dentro del contenedor
inert
no pueden recibirfocus
,click
u otros eventos. -
Son ignorados por lectores de pantalla (mejora la accesibilidad).
-
El cursor se muestra como
default
(no como puntero).
Ejemplos Prácticos
Ejemplo 1: Modal con fondo inerte
HTML:
<!-- Fondo inerte cuando el modal está abierto --> <div class="fondo" inert></div> <!-- Modal activo --> <div class="modal"> <h2>Título del modal</h2> <button>Cerrar</button> </div>
CSS:
.fondo { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); } .modal { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: white; padding: 20px; }
Ejemplo 2: Menú desplegable inactivo
<nav inert> <ul> <li><a href="#">Enlace 1</a></li> <li><a href="#">Enlace 2</a></li> </ul> </nav>
Compatibilidad con Navegadores
-
Soportado en: Chrome 102+, Edge 102+, Safari 15.4+, Firefox (parcialmente).
-
No soportado en: Navegadores antiguos (IE11, Chrome <102).
-
Alternativas: Usar polyfills como inert-polyfill o simular el comportamiento con JavaScript.
Accesibilidad
-
Lectores de pantalla: Ignoran elementos con
inert
, lo que evita anunciar contenido no relevante. -
Navegación por teclado: Los elementos inactivos se excluyen del orden de tabulación (
tabindex="-1"
implícito).
Combinar con JavaScript
Agrega o quita inert
dinámicamente para controlar la interacción:
<button onclick="toggleInert()">Alternar inercia</button> <div id="contenido"> <input type="text" placeholder="Campo de texto"> </div> <script> function toggleInert() { const contenido = document.getElementById("contenido"); contenido.inert = !contenido.inert; } </script>
Buenas Prácticas
Usar para componentes modales: Aplica inert
al fondo cuando un modal está activo.
Evitar abusar: No uses inert
en elementos críticos que deban ser accesibles permanentemente.
Probar en múltiples navegadores: Verifica el comportamiento y usa polyfills si es necesario.
Complementar con CSS: Aplica estilos para indicar visualmente el estado inerte.
[inert] { opacity: 0.6; cursor: not-allowed; }
Errores Comunes
Error 1: Usar inert
en elementos interactivos clave
<!-- Incorrecto: Bloquear un formulario completo --> <form inert> <input type="text" required> <button>Enviar</button> </form>
Error 2: Ignorar la retroalimentación visual
Los usuarios deben percibir claramente que una sección está inactiva (ej: opacidad reducida).
Alternativas con JavaScript
Si inert
no está soportado, simula su comportamiento:
function desactivarElemento(elemento) { elemento.setAttribute("aria-hidden", "true"); elemento.querySelectorAll("button, input, a").forEach(el => { el.setAttribute("tabindex", "-1"); el.style.pointerEvents = "none"; }); }
Conclusión
El atributo inert
es una herramienta poderosa para gestionar la interacción y accesibilidad en componentes dinámicos. Al usarlo correctamente, mejoras la experiencia del usuario y garantizas que tu sitio sea inclusivo. ¡Inclúyelo en tu próximo modal o menú desplegable!