Input hack en CSS: toggles y menús sin JavaScript

Usa checkbox/radio + selectores para crear interacciones simples en CSS, entendiendo límites de accesibilidad y mantenibilidad.

El input hack permite mostrar/ocultar bloques usando estados nativos de formulario y selectores CSS.

Es útil para prototipos, acordeones simples y menús básicos donde no necesitas lógica compleja.

Debe usarse con criterio: para estados avanzados o accesibilidad completa, JavaScript suele ser mejor opción.

  • Checkbox oculto + label + selector :checked.
  • El <code>label</code> activa el checkbox asociado; luego CSS reacciona con <code>:checked</code> para modificar otros elementos.
  • Normalmente se usa el combinador de hermanos <code>+</code> o <code>~</code> para llegar al panel que quieres alternar.
  • No todo estado interactivo debería resolverse con hack.
  • Evita cadenas de selectores demasiado frágiles o dependientes del orden exacto del HTML.

Patrón base

Checkbox oculto + label + selector :checked.

El <code>label</code> activa el checkbox asociado; luego CSS reacciona con <code>:checked</code> para modificar otros elementos.

Normalmente se usa el combinador de hermanos <code>+</code> o <code>~</code> para llegar al panel que quieres alternar.

Límites y buenas prácticas

No todo estado interactivo debería resolverse con hack.

Evita cadenas de selectores demasiado frágiles o dependientes del orden exacto del HTML.

Si necesitas cerrar al pulsar Escape, gestionar foco o sincronizar varios estados, usa JavaScript.

  • Mantén marcado semántico y labels claros.
  • No abuses de inputs ocultos para lógica compleja.
  • Para componentes críticos, prioriza accesibilidad completa.
CSS
56

Input hack en CSS: toggles y menús sin JavaScript

Usa checkbox/radio + selectores para crear interacciones simples en CSS, entendiendo límites de accesibilidad y mantenibilidad.

Código del tema: display: grid; gap: 1rem;

📘 Teoría

Patrón base

Checkbox oculto + label + selector :checked.

1

El label activa el checkbox asociado; luego CSS reacciona con :checked para modificar otros elementos.

2

Normalmente se usa el combinador de hermanos + o ~ para llegar al panel que quieres alternar.

Toggle CSS-only
.toggle { position: absolute; opacity: 0; }
.toggle-panel { display: none; }
.toggle:checked ~ .toggle-panel { display: block; }

Límites y buenas prácticas

No todo estado interactivo debería resolverse con hack.

Evita cadenas de selectores demasiado frágiles o dependientes del orden exacto del HTML.

Si necesitas cerrar al pulsar Escape, gestionar foco o sincronizar varios estados, usa JavaScript.

  • Mantén marcado semántico y labels claros.
  • No abuses de inputs ocultos para lógica compleja.
  • Para componentes críticos, prioriza accesibilidad completa.

🧪 Aprende probando

Ejemplo Demo: FAQ sin JavaScript Un acordeón simple con checkbox y :checked.

🏁 Retos

Reto Reto: menú móvil CSS-only Muestra .menu cuando #nav-toggle esté checked.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre CSS.

Test de CSS

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .