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
inertno pueden recibirfocus,clicku 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!