2010-12-10 22 views
210

Sto provando a eseguire un effetto di transizione con il colore di sfondo quando si passa sopra le voci di menu ma non funziona. Qui è il mio codice CSS:Transizione di colore di sfondo

#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 div è un menu lista ul di elementi.

+0

Solo FYI, questo funziona in Firefox ora. Testato in FF9. –

risposta

436

Per quanto ne so, le transizioni funzionano attualmente in Safari, Chrome, Firefox, Opera e Internet Explorer 10+.

Questo dovrebbe produrre un effetto di dissolvenza per voi in questi browser:

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>

Nota: Come sottolineato da Gerald nei commenti, se si mette la transizione sul a invece di a:hover si dissolverà nuovamente al colore originale quando il mouse si allontana dal collegamento.

Questo potrebbe tornare utile, anche: CSS Fundamentals: CSS 3 Transitions

+31

È anche possibile inserire le transizioni in "contenuto #nav a' per tornare indietro all'originale quando l'utente sposta il mouse lontano dal collegamento. –

+2

Fiddle con ** hover ** e ** click ** transizioni a: [jsfiddle.net/K5Qyx](http://jsfiddle.net/K5Qyx/) –

+3

Non sarebbe meglio mettere la 'transizione:' nel non-al passaggio del mouse? Penso che ogni volta che l'utente si posiziona, la transizione è compilata .. –

46

Per me, è meglio mettere i codici di transizione con i selettori originali/minimi che con il: hover o altri selettori supplementari:

#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

Non è che sia meglio o peggio. È solo che se si specifica la transizione sul lement stesso, esso verrà animato quando l'elemento si alza e quando diventa "non sospeso". Mentre se lo si applica a: hover, si avrà un'animazione quando il mouse entra, ma non quando esce. – LucasBeef

+5

Questa soluzione è nel complesso migliore. L'effetto di transizione dovrebbe e dovrebbe essere visto svanire al passaggio del mouse e dissolversi in dissolvenza. – Chizzle