164 votes

Quel est le contraire de :hover (à la sortie de la souris) ?

Existe-t-il un moyen de faire le contraire de :hover en utilisant uniquement CSS ? Par exemple : si :hover est on Mouse Enter existe-t-il un CSS équivalent à on Mouse Leave ?

Exemple :

J'ai un menu HTML utilisant des éléments de liste. Lorsque je survole l'un des éléments, il y a une animation de couleur CSS de #999 à black . Comment puis-je créer l'effet inverse lorsque la souris quitte la zone de l'élément, avec une animation de black à #999 ?

jsFiddle

(Gardez à l'esprit que je ne souhaite pas répondre uniquement à cet exemple, mais à l'ensemble de la question du "contraire de"). :hover (question ".)

129voto

SpaceBeers Points 7003

Si je comprends bien, vous pourriez faire la même chose en déplaçant vos transitions vers le lien plutôt que vers l'état de survol :

ul li a {
    color:#999;       
    transition: color 0.5s linear; /* vendorless fallback */
    -o-transition: color 0.5s linear; /* opera */
    -ms-transition: color 0.5s linear; /* IE 10 */
    -moz-transition: color 0.5s linear; /* Firefox */
    -webkit-transition: color 0.5s linear; /*safari and chrome */
}

ul li a:hover {
    color:black;
    cursor: pointer;
}

http://jsfiddle.net/spacebeers/sELKu/3/

La définition de "hover" est la suivante :

Le sélecteur :hover est utilisé pour sélectionner des éléments lorsque vous les survolez à l'aide de la souris. de la souris.

D'après cette définition, le contraire du survol est tout point où la souris est pas par-dessus. Quelqu'un de bien plus intelligent que moi a rédigé cet article, en définissant des transitions différentes pour les deux états - http://css-tricks.com/different-transitions-for-hover-on-hover-off/

#thing {
   padding: 10px;
   border-radius: 5px;

  /* HOVER OFF */
   -webkit-transition: padding 2s;
}

#thing:hover {
   padding: 20px;
   border-radius: 15px;

  /* HOVER ON */
   -webkit-transition: border-radius 2s;
}

84voto

Jared Wilber Points 763

L'inverse consiste à utiliser :not

par exemple

selection:not(:hover) { rules }

41voto

Marat Tanalin Points 6506

Il suffit d'utiliser Transitions CSS au lieu d'animations.

A {
    color: #999;
    transition: color 1s ease-in-out;
}

A:hover {
    color: #000;
}

Démonstration en direct

5voto

Hassan Mahmoud Points 41

Mettez votre durée dans la sélection non-hover :

li a {
  background-color: #111;
  transition:1s;
}

li a:hover {
  padding:19px;
}

5voto

José Rasmussen Points 21

Il suffit d'ajouter une transition à l'élément sur lequel vous travaillez. Sachez qu'il peut y avoir des effets au chargement de la page. Par exemple, si vous avez modifié le rayon de la bordure, vous le verrez lorsque la page se chargera.

.element {
  width: 100px;
  transition: all ease-in-out 0.5s;
}

 .element:hover {
  width: 200px;
    transition: all ease-in-out 0.5s;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X