Transizione di colore di sfondo


286

Sto cercando di creare un effetto di transizione background-colorquando si passa il mouse sulle voci di menu, ma non funziona. Ecco il mio codice 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 divè un menu ulelenco di elementi.


Cordiali saluti, ora funziona in Firefox. Testato in FF9.
C.Brown,

Risposte:


527

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

Questo dovrebbe produrre un effetto di dissolvenza per te 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 metti la transizione su a, invece di su a:hover, tornerà al colore originale quando il mouse si allontana dal collegamento.

Potrebbe essere utile anche questo: Fondamenti CSS: Transizioni CSS 3


38
Puoi anche inserire le transizioni content #nav aper tornare allo sbiadimento originale quando l'utente sposta il mouse lontano dal collegamento.
Gak

2
Fiddle con passaggi al passaggio del mouse e clic su: jsfiddle.net/K5Qyx
Dem Pilafian

3
Non sarebbe meglio mettere transition:il non-hover? Penso che ogni volta che l'utente si sposta, la transizione viene compilata ..
Matej,

1
@Illium Link è morto
ferdynator

2
Apparentemente i CSS transitionnon sono in grado di gestire il tipo di "gradiente lineare" di colore come può essere testato qui . E tra l'altro, la risposta di @Ilium merita di essere contrassegnata come soluzione.
Stacky

85

Per me, è meglio inserire i codici di transizione con i selettori originali / minimi piuttosto che con: hover o altri selettori aggiuntivi:

#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
Non è che sia migliore o peggiore. È solo che se specifichi la transizione sul lement stesso, verrà animato quando l'elemento viene sospeso e quando viene "non spostato". Mentre se lo applichi al passaggio del mouse, avrai un'animazione quando il mouse entra, ma non quando esce.
LucasBeef,

6
Questa soluzione è complessivamente migliore. L'effetto di transizione dovrebbe e dovrebbe svanire al passaggio del mouse e svanire alla sfocatura.
Chizzle,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.