:hover se activa cuando el puntero del ratón pasa por encima del elemento. Es útil para interacciones visuales, pero no aporta accesibilidad a quienes navegan con teclado.
:focus-visible se activa cuando el elemento recibe foco y el navegador determina que debe mostrarse (por ejemplo, al navegar con Tab). Así evitamos mostrar bordes innecesarios al hacer clic con ratón, pero damos retroalimentación clara al usar teclado.
HTML<divclass="wrapper"><sectionclass="demo"><buttonclass="hover-only">Solo hover</button><buttonclass="focus-visible-only">Solo focus-visible</button><buttonclass="hover-focus">Hover + Focus-visible</button></section><sectionclass="explicacion"><h2>Explicación</h2><p><strong>:hover</strong> se activa cuando el puntero del ratón pasa por encima del elemento. Es útil para interacciones visuales, pero no aporta accesibilidad a quienes navegan con teclado.</p><p><strong>:focus-visible</strong> se activa cuando el elemento recibe foco y el navegador determina que debe mostrarse (por ejemplo, al navegar con <kbd>Tab</kbd>). Así evitamos mostrar bordes innecesarios al hacer clic con ratón, pero damos retroalimentación clara al usar teclado.</p><p>La <strong>combinación de ambos</strong> es la mejor práctica: <em>interacción visual con ratón</em> y también <em>accesibilidad con teclado</em>.</p><ul><li><strong>Botón “Solo hover”</strong>: responde al ratón.</li><li><strong>Botón “Solo focus-visible”</strong>: responde al teclado.</li><li><strong>Botón “Hover + Focus-visible”</strong>: responde a ambos casos (la opción más completa).</li></ul></section></div>