2010-10-30 3 views
8

Ich habe eine Schaltfläche in meinem HTML-Formular und muss das Hintergrundbild ändern, wenn es mit CSS geklickt wird. es funktioniert perfekt in FF, aber es scheint, dass IE :active Zustand nicht unterstützt.Wie zu machen: aktiver Zustand Arbeit in IE?

Hier ist mein Code:

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; 
} 

Antwort

10

Dies ist ein bekannter Fehler in früheren Versionen von IE (ich glaube, sie es in IE8 gelöst) . Normalerweise löse ich dies (sowie das entsprechende "Hover" -Problem) mit Javascript. Ich füge zwei Event-Handler an das Element an - "mousedown", um eine zusätzliche Klasse zu setzen (so etwas wie "button-active") und "mouseup", um die Klasse zu entfernen. In jQuery wäre es so etwas wie dieses:

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

Dann fügen Sie einfach die Klasse zu der CSS-Regel wie folgt:

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

Ein wenig hässlich, ja, aber was tun Sie erwarten - es ist Internet Explorer. Es kann nicht hübsch sein.

+0

Eigentlich ist dieses Problem normalerweise für "Hover", wo die entsprechenden Rückrufe für "mouseover" und "mouseout" sind. Ich habe es nie für aktiv versucht, also "mousedown" und "mouseup" möglicherweise nicht genau die richtigen Ereignisse zu erfassen - aber Sie bekommen die Idee. –

+0

Es scheint, dass ich Javascript-Code für den Zweck verwenden muss. :( –

+1

Ich denke, Sie suchen nach den Ereignissen focusin (http://api.jquery.com/focusin/) und focusout (http://api.jquery.com/focusout/). – AgentConundrum

Verwandte Themen