Transition de la couleur de fond


286

J'essaie de faire un effet de transition avec le background-colorsurvol des éléments de menu, mais cela ne fonctionne pas. Voici mon code CSS:

#content #nav a:hover {
    color: black;
    background-color: #AD310B;
    /* Firefox */
    -moz-transition: all 1s ease-in;
    /* WebKit */
    -webkit-transition: all 1s ease-in;
    /* Opera */
    -o-transition: all 1s ease-in;
    /* Standard */
    transition: all 1s ease-in;
}

Il #nav divs'agit d'une ulliste de menus d'éléments.


Juste pour info, cela fonctionne maintenant dans Firefox. Testé en FF9.
C.Brown

Réponses:


527

Pour autant que je sache, les transitions fonctionnent actuellement dans Safari, Chrome, Firefox, Opera et Internet Explorer 10+.

Cela devrait produire un effet de fondu pour vous dans ces navigateurs:

a {
    background-color: #FF0;
}

a:hover {
    background-color: #AD310B;
    -webkit-transition: background-color 1000ms linear;
    -ms-transition: background-color 1000ms linear;
    transition: background-color 1000ms linear;
}
<a>Navigation Link</a>

Remarque: Comme l'a souligné Gerald dans les commentaires, si vous placez la transition sur le a, au lieu de sur, a:hoverelle se fondra à la couleur d'origine lorsque votre souris s'éloignera du lien.

Cela pourrait également être utile: Principes de base de CSS: Transitions CSS 3


38
Vous pouvez également insérer les transitions dans content #nav apour revenir à l'original lorsque l'utilisateur éloigne la souris du lien.
gak

2
Jouez avec les transitions de vol stationnaire et de clic sur: jsfiddle.net/K5Qyx
Dem Pilafian

3
Ne serait-il pas préférable de mettre le transition:dans le non-vol stationnaire? Je pense qu'à chaque fois que l'utilisateur survole, la transition est compilée ..
Matej

1
@Illium Link est mort
ferdynator

2
Le CSS transitionne peut apparemment pas gérer la couleur du type "gradient linéaire" comme on peut le tester ici . Et btw, la réponse de @ Ilium mérite d'être marquée comme solution.
Stacky

86

Pour moi, il est préférable de mettre les codes de transition avec les sélecteurs d'origine / minimum qu'avec le: hover ou tout autre sélecteur supplémentaire:

#content #nav a {
    background-color: #FF0;
    
    -webkit-transition: background-color 1000ms linear;
    -moz-transition: background-color 1000ms linear;
    -o-transition: background-color 1000ms linear;
    -ms-transition: background-color 1000ms linear;
    transition: background-color 1000ms linear;
}

#content #nav a:hover {
    background-color: #AD310B;
}
<div id="content">
    <div id="nav">
        <a href="#link1">Link 1</a>
    </div>
</div>


8
Ce n'est pas que ce soit mieux ou pire. C'est juste que si vous spécifiez la transition sur l'élément lui-même, il sera animé lorsque l'élément sera survolé et lorsqu'il sera "non survolé". Alors que si vous l'appliquez au: hover, vous aurez une animation quand la souris entre, mais pas quand elle sort.
LucasBeef

6
Cette solution est globalement meilleure. L'effet de transition devrait et devrait s'atténuer en vol stationnaire et disparaître en flou.
Chizzle
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.