2013-04-17 14 views
5

Ho un div wit una lista non ordinata.Selected Hover no background

Se clicco su un elemento aggiungo la classe selezionata.

quindi l'elemento selezionato è sempre come

<li class="selected"> 

Per tutto l'elemento li io uso.

li:hover 
{ 
    background-color:#CECEC8; 
} 

Questo funziona.

e per gli elementi selezionati che uso

.selected 
{ 
    background-color:#8B8BFF; 
} 
.selected :hover 
{ 
    background-color:#8B8BFF; 
} 

Ma quando scatto l'elemento selezionato e il mouse è ancora su di esso (per cui il suo bilico su di esso) il cambiamento di colore dosnt, ma è ancora # CECEC8 da li: passa il mouse al posto di # 8B8BFF da.selected: hover.

Come posso ignorare il li: passa con il mouse quando si fa clic in modo che il colore di sfondo di un elemento di elenco con classe = selezionato sia sempre # 8B8BFF anche al passaggio del mouse.

Il problema è che ora non è immediatamente visibile se si fa clic, il colore non cambia dal normale passaggio del mouse.

Esempio

http://jsfiddle.net/FCGtc/1/

+0

sì, questo è i normale' l'ho verificato ed è accaduto perché hai scelto il tag diretto e se riesci a capire il primo tag css funziona dopo questo id e la classe css funzionerà quindi devi modificare parte del tuo codice –

+0

Prova ': active' per fare clic su stati – MMM

+0

intendo dopo il clic in modo che sia cliccato (non è attivo quindi) –

risposta

1

EDIT: Dato che la soluzione è diversa al problema nel vostro violino, ti darò due soluzioni, una per il codice in questione e una per il vostro violino

codice in questione:

C'è uno spazio tra la vostra dichiarazione :hover , rimuovilo. Inoltre, si tratta della specificità . li:hover è più specifico rispetto a .selected:hover a causa dello li.

utilizzare la seguente per mantenere lo stesso livello di specificità:

li:hover 
{ 
    background-color:#CECEC8; 
} 

li.selected 
{ 
    background-color:#8B8BFF; 
} 

li.selected:hover 
{ 
    background-color:#8B8BFF; 
} 

DEMO: http://jsfiddle.net/FCGtc/8/

Codice in Fiddle:

E 'perché il vostro selettore hover iniziale è un più specifica corrisponde a rispetto al selettore di classe (rimuovi anche lo spazio tra :hover).

utilizzare questi, non c'è bisogno per questo dio terribileimportant:

#browsecat li.selectedcat 
{ 
    background-color:#8B8BFF; 
} 

DEMO: http://jsfiddle.net/FCGtc/9/

+0

+1, ma l'ultima regola è inutile – soju

+0

Perché hai aggiunto un selettore ID? – MMM

+0

@MMM Poiché '#browsecat li: hover' (sta usando per il suo hover normale) è ** più specifico ** di' li.selectedcat: hover'. Prova a cambiarlo nel mio violino, non funzionerà più. – mattytommo

0

penso che avere questo comportamento perché ID hanno sempre una specificità più alta tan class. Nel tuo violino, se cambio tutto il id in class, funziona come previsto.

Se ti piace Star Wars, puoi recuperare ulteriori informazioni sulla specificità css here.

Oppure, in caso contrario, è a serious one.

0

di ignorare: passa è necessario essere più specifici, e l'uso: passa

li.selected:hover { 
    background-color:#8B8BFF; 
}