Existe-t-il un moyen de faire le contraire d' :hover
utiliser uniquement du CSS? Comme dans: si :hover
oui on Mouse Enter
, existe-t-il un équivalent CSS à on Mouse Leave
?
Exemple:
J'ai un menu HTML utilisant des éléments de liste. Lorsque je passe la souris sur l'un des éléments, il y a une animation de couleur CSS de #999
à black
. Comment créer l'effet inverse lorsque la souris quitte la zone de l'élément, avec une animation de black
à #999
?
(Gardez à l'esprit que je ne souhaite pas répondre uniquement à cet exemple, mais à toute la question de «l'opposé de :hover
».)
:hover
est tout simplement:not(:hover)
; cependant,:hover
n'est pas synonyme deonmouseenter
ni n'est:not(:hover)
le même queonmouseleave
. CSS n'a aucun concept d'événements DOM.:hover
signifie simplement "un élément qui a un pointeur de souris dessus". Il n'indique pas si le pointeur de la souris est passé d'un autre élément à cet élément. Cela signifie simplement que le pointeur de la souris est actuellement sur l'élément.:not(:hover)
s'appliquera. Voici une démo: jsfiddle.net/BoltClock/rghBXRéponses:
Si je comprends bien, vous pouvez faire la même chose en déplaçant vos transitions vers le lien plutôt que vers l'état de survol:
http://jsfiddle.net/spacebeers/sELKu/3/
La définition du survol est:
Selon cette définition, l'opposé du survol est tout point auquel la souris n'est pas au-dessus. Quelqu'un de bien plus intelligent que moi a fait cet article, définissant différentes transitions sur les deux états - http://css-tricks.com/different-transitions-for-hover-on-hover-off/
la source
:hover
vous avez citée provient de W3Schools, qui n'est en aucun cas une source faisant autorité. La spécification réelle peut être trouvée sur w3.org/TR/CSS21/selector.html#dynamic-pseudo-classes , bien que ce ne soit pas l'explication la plus accessible.Utilisez simplement des transitions CSS au lieu d'animations.
Démo en direct
la source
:hover
état.Non, il n'y a pas de propriété explicite pour le congé de la souris dans CSS.
Vous pouvez utiliser: survolez tous les autres éléments à l'exception de l'élément en question pour obtenir cet effet. Mais je ne sais pas dans quelle mesure ce serait pratique.
Je pense que vous devez regarder une solution JS / jQuery.
la source
Vous pouvez utiliser la transition CSS3
Quelques bons liens:
http://css-tricks.com/different-transitions-for-hover-on-hover-off/
http://www.alistapart.com/articles/understanding-css3-transitions/
la source
Bien que les réponses ici soient suffisantes, je pense vraiment que l' exemple de W3Schools sur cette question est très simple (cela a tout de suite dissipé la confusion (pour moi)).
En résumé, pour les transitions où vous souhaitez que les animations «entrée» et «sortie» soient identiques, vous devez utiliser des transitions sur le sélecteur principal
.button
plutôt que sur le sélecteur de survol.button:hover
. Pour les transitions où vous voulez que les animations "entrée" et "sortie" soient différentes, vous devrez spécifier différentes transitions de sélecteur principal et de sélecteur de survol.la source
Mettez votre durée dans la sélection sans survol:
la source
Ajoutez simplement une transition à l'élément avec lequel vous jouez. Sachez qu'il peut y avoir des effets au chargement de la page. Comme si vous aviez modifié le rayon de la bordure, vous le verrez lorsque le dom se chargera.
la source
Vous avez mal compris
:hover
; il indique que la souris est sur un élément, plutôt que la souris vient de saisir l'élément.Vous pouvez ajouter une animation au sélecteur sans
:hover
obtenir l'effet souhaité.Les transitions sont une meilleure option: http://jsfiddle.net/Cvx96/
la source
Le contraire de
:hover
semble être:link
.(edit: pas techniquement un opposé parce qu'il ya 4 sélecteurs
:link
,:visited
,:hover
et:active
cinq si vous incluez.:focus
).Par exemple, lors de la définition d'une règle
.button:hover{ text-decoration:none }
pour supprimer le soulignement sur un bouton, le soulignement apparaît lorsque vous désactivez le bouton dans certains navigateurs. J'ai corrigé ça avec.button:hover, .button:link{ text-decoration:none }
Cela ne fonctionne bien sûr que pour les éléments qui sont en fait des liens (ont l'attribut href)
la source
:link
sélectionne simplement des liens, aussi simple que cela. Regardez ici la définition de:link
: developer.mozilla.org/en-US/docs/Web/CSS/%3AlinkIl suffit d'ajouter une transition et le nom de l'animation sur la classe inicial, dans votre cas, ul li a, il suffit d'ajouter une propriété "transition" et c'est tout ce dont vous avez besoin
la source