Übergang der Hintergrundfarbe

286

Ich versuche, background-colorbeim Bewegen von Menüelementen einen Übergangseffekt zu erzielen , aber es funktioniert nicht. Hier ist mein CSS-Code:

#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;
}

Das #nav divist eine Menüliste ulvon Elementen.

Jean-Typ
quelle
Nur zu Ihrer Information, dies funktioniert jetzt in Firefox. Getestet in FF9.
C. Brown

Antworten:

526

Soweit ich weiß, funktionieren Übergänge derzeit in Safari, Chrome, Firefox, Opera und Internet Explorer 10+.

Dies sollte in diesen Browsern einen Fade-Effekt für Sie erzeugen:

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>

Hinweis: Wie von Gerald in den Kommentaren hervorgehoben, wird der Übergang wieder auf die ursprüngliche Farbe zurückgesetzt , wenn Sie den Übergang auf den setzen a, anstatt a:hoverihn zu aktivieren.

Dies kann auch nützlich sein: CSS-Grundlagen: CSS 3-Übergänge

Ilium
quelle
38
Sie können auch die Übergänge in content #nav aeingeben, um zum Original zurückzukehren, wenn der Benutzer die Maus vom Link entfernt.
Gak
2
Fiddle mit schweben und klicken Übergänge an: jsfiddle.net/K5Qyx
Die Pilafian
3
Wäre es nicht besser, das transition:in den Non-Hover zu setzen? Ich denke, dass jedes Mal, wenn der Benutzer schwebt, der Übergang kompiliert wird ..
Matej
1
@Illium Link ist tot
Ferdynator
2
CSS transitionkann anscheinend nicht mit Farben der Art "linearer Farbverlauf" umgehen, wie hier getestet werden kann . Übrigens verdient die Antwort von @ Ilium, als Lösung markiert zu werden.
Stacky
83

Für mich ist es besser, die Übergangscodes mit den ursprünglichen / minimalen Selektoren zu versehen als mit: hover oder anderen zusätzlichen Selektoren:

#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
quelle
8
Es ist nicht so, dass es besser oder schlechter ist. Es ist nur so, dass, wenn Sie den Übergang auf dem Lement selbst angeben, dieser animiert wird, wenn das Element bewegt wird und wenn es "nicht schwebend" wird. Wenn Sie es auf den: Hover anwenden, wird beim Betreten der Maus eine Animation angezeigt, nicht jedoch beim Verlassen.
LucasBeef
6
Diese Lösung ist insgesamt besser. Es ist zu erwarten, dass der Übergangseffekt beim Schweben einblendet und bei Unschärfe ausgeblendet wird.
Chizzle