2010-10-30 1 views
8

Ho un pulsante nel mio modulo html e ho bisogno di cambiare la sua immagine di sfondo quando si fa clic su css. funziona perfettamente in FF ma sembra che IE non supporti lo stato :active.Come fare: lavoro stato attivo in IE?

Ecco il mio codice:

HTML:

<button class='button'>Click Me</button> 

CSS:

.button { 
    width: 118px; 
    height: 33px; 
    background: url(/images/admin/btn.png) no-repeat center top; 
    border: none; 
    outline: none; 
} 
.button:active { 
    background-position: center bottom; 
} 

risposta

10

Questo è un bug noto nelle versioni precedenti di IE (penso hanno risolto in IE8) . Solitamente risolvo questo problema (così come il problema relativo al "passaggio del mouse") con javascript. Allego due gestori di eventi all'elemento - "Mousedown" per impostare una classe aggiuntiva (qualcosa come "button-active") e "mouseup" per rimuovere la classe. In jQuery sarebbe qualcosa di simile:

$('.button').mousedown(function() { $(this).addClass('button-active'); }); 
$('.button').mouseup(function() { $(this).removeClass('button-active'); }); 

Poi, basta aggiungere che classe per la regola CSS, in questo modo:

.button:active, .button-active { 
    background-position: center bottom; 
} 

un po 'brutto, sì, ma cosa vi aspettate - è Internet Explorer. Non può essere carino.

+0

In realtà, questo problema di solito è per "hover" dove le callback appropriate sono per "mouseover" e "mouseout". Non l'ho mai provato come attivo, quindi "mouse" e "mouseup" potrebbero non essere esattamente gli eventi corretti da catturare, ma tu hai l'idea. –

+0

Sembra che devo usare il codice javascript per lo scopo. :( –

+1

Penso che tu stia cercando gli eventi focusin (http://api.jquery.com/focusin/) e focusout (http://api.jquery.com/focusout/) – AgentConundrum