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.

jean-guy
la source
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

Ilion
la source
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>

Reza Mamun
la source
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