Pseudo-clases (III) :hover, :active y :focus
:hover, :active y :focus son las llamadas pseudo-clases dinámicas, ya actuan a partir del comportamiento del usuario.
Evidentemente, sobra decir que estas pseudo-clases solo son relevantes en medios interactivos, si estamos escribiendo nuestra hoja de estilos para impresión, casi que no hace falta. (Si alguna vez veo como se resalta un enlace en una hoja de papel, al pasar el dedo por encima, me muero del susto)
La pseudo-clase :hover se aplica cuando el usuario apunta a un elemento (usualmente con el ratón) pero no llega a activarlo. Es lo que en mi pueblo se llama pasar el ratón por encima
La pseudo-clase :active se aplica cuando el elemento esta siendo activado por el usuario, por ejemplo, en el intervalo de tiempo que va desde que pinchamos un botón y lo soltamos, o cuando pulsamos en un enlace para cargar una página en un marco.
y la pseudo-clase :focus es activada cuando un elemento recibe el foco de ventana, mediante un evento de teclado (ver atributo tabindex) o de ratón (pinchamos en una caja de texto)
Puedes ver las tres pseudo-clases en funcionamiento en este ejemplo
Las pseudo-clases dinámincas no son excluyentes entre si, esto quiere decir que un elemento puede estar en varios estados al mismo tiempo, por ejemplo, cuando pinchamos sobre un enlace con el ratón, estamos activando el elemento (:active) y además tenemos el ratón sobre el (:hover)
Entonces ¿cual de las dos reglas se aplicará?, pues la que se determine por el orden de cascada, en el caso que tratamos aqui, se trata de dos reglas de igual fuerza y son igual de específicas, entonces se aplicará la que aparezca especificada en ultimo lugar.
Esto puede ofrecer comportamientos extraños si no somos cuidadosos con el orden el que escribimos nuestras reglas.
El orden adecuado, es :hover, :focus, active.
¿Dificil de recordar? No pasa nada, en el próximo post hablaremos del amor, el odio y Anakin Skywalker y ya veras como lo recuerdas.
Problemas con Internet Explorer
Si, hay problemas y gordos. IE simplemente no aplica el estandar, e ignora estas pseudo-clases para todo lo que no sea un enlace. Olvidate de un efecto :hover sobre una capa o una fila de una tabla. Al menos hasta que aparezca IE7, que por lo que parece soluciona este problema.
Existen formas de simular el comportamiento de estas pseudo-clases mediante javascript que está perfectamente explicado en este articulo de www.dcc.uchile.cl
Comentarios
[…] En la ultima entrada sobre CSS, pseudo-clases (III) :hover, :active y :focus hablabamos de la necesidad de escribir las reglas con pseudo-clases en el orden adecuado, ya que podian pisarse unas a otras si no teniamos cuidado. […]
13 Septiembre 2006 el plan seldon — Amor y odio
great blog, keep it comming.
9 Octubre 2006 Argentium Sterling Silver
Cool…
18 Noviembre 2007 Evripides
Cool!
25 Noviembre 2007 Moris
Cool…
27 Noviembre 2007 Emmanuil
interesting
28 Noviembre 2007 Gustas
Sorry :(
28 Noviembre 2007 Dmitris
Interesting…
28 Noviembre 2007 Argyros
Cool…
29 Noviembre 2007 Aristides
Sorry :(
5 Diciembre 2007 Arsenios
[…] Pseudo-clases (III) :hover, :active y :focus […]
30 Marzo 2008 Pseudo-clases en CSS « 100 ejemplos - Blog del curso ;-)