2010-12-10 10 views
210

Ich versuche, einen Übergangseffekt mit Hintergrund-Farbe zu machen, wenn Menüpunkte schweben, aber es funktioniert nicht. Hier ist mein CSS-Code:Übergang von Hintergrund-Farbe

#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 div ist ein Menü ul Liste der Elemente.

+0

Nur FYI, das funktioniert jetzt in Firefox. Getestet in FF9. –

Antwort

436

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

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, wenn Sie auf der a den Übergang setzen

Dies sollte einen Fade-Effekt für Sie in diesen Browsern produzieren Anstatt auf a:hover wird es wieder auf die ursprüngliche Farbe zurückgehen, wenn sich die Maus von der Verknüpfung entfernt.

Dies könnte nützlich sein, auch: CSS Fundamentals: CSS 3 Transitions

+31

Sie können die Übergänge auch in 'content #nav a' einfügen, um zum Original zurückzukehren, wenn der Benutzer die Maus von der Verknüpfung wegbewegt. –

+2

Fiddle mit ** schweben ** und ** ** klicken Übergänge an: [jsfiddle.net/K5Qyx](http://jsfiddle.net/K5Qyx/) –

+3

Wäre es nicht besser, die 'Übergang zu setzen:' in den Nicht-Schwebeflug? Ich denke, dass jedes Mal, wenn der Benutzer schwebt, wird der Übergang zusammengestellt .. –

46

Für mich ist es besser, die die Übergangscodes mit den ursprünglichen/Minimum-Selektoren setzen als mit: schweben oder andere zusätzliche 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>

+6

Es ist nicht so, dass es besser oder schlechter ist. Es ist nur so, dass wenn Sie den Übergang für das Lement selbst angeben, wird es animiert werden, wenn das Element schwebt und wenn es "un-hovered" wird. Wenn Sie es auf den Hover anwenden, erhalten Sie eine Animation, wenn die Maus eindringt, aber nicht, wenn Sie sie verlassen. – LucasBeef

+5

Diese Lösung ist insgesamt besser. Der Übergangseffekt würde und sollte beim Schweben erwartet werden und bei Unschärfe ausgeblendet werden. – Chizzle