2013-08-28 6 views
5

io non sono sicuro se è possibile, ma qui è quello che ho fatto:Applicare le transizioni su: non hover: attiva

a { 
    background-color: white; 
    transition: all 1s; 
} 

a:hover { 
    background-color: grey; 
} 

a:active { 
    background-color: black; 
} 

Ma vorrei le transizioni di non applicare sul: attiva (solo su la: hover), ho provato questo:

a { 
    background-color: white; 
} 

a:hover { 
    background-color: grey; 
    transition: all 1s; 
} 

a:active { 
    background-color: black; 
} 

E il risultato è esattamente lo stesso (tranne che l'effetto non è invertita). È possibile farlo in tutto il CSS.

Grazie!

+0

Posso solo pensare di applicare la transizione a 'A: not (: attivo)', ma allora che cosa dovrebbe accadere quando le transizioni degli elementi da ': active' a': hover' dopo aver rilasciato il mouse mentre si è ancora in bilico sull'elemento? – BoltClock

+0

Sì, questa è la soluzione. Dopo ': active' torna semplicemente allo stato': hover' (immediatamente). Ma questo è quello che vogliamo con ': active', solo per vedere l'evento click. Grazie – Cohars

+0

Il problema è che si ritorna a ': hover' invece di cambiare immediatamente, perché la transizione è definita per': hover' (ricorda che stiamo parlando di stati, non di eventi, in CSS). Se ciò non ti interessa, pubblicheremo una risposta. – BoltClock

risposta

4
a { 
    background-color: white; 
    transition: all 1s; 
} 

a:hover { 
    background-color: grey; 
} 

a:active { 
    background-color: black; 
    transition: none; 
} 

markup:

<menu type=list> 
    <li><a>home</a></li> 
    <li><a>work</a></li> 
    <li><a>contact</a></li> 
    <li><a>about</a></li> 
</menu> 

demo: http://jsfiddle.net/7nwLF/

+0

Questi '! Important's non sono necessari. – BoltClock

+0

true ma è solo per motivi di sicurezza –

+0

Beh, è ​​stato piuttosto semplice. Grazie mille! Ciò consente la transizione da ': active' a': hover'state, il che rende un buon effetto! – Cohars