2010-10-30 32 views
8

Mam przycisk w mojej formie html i muszę zmienić jego obraz tła, gdy zostanie kliknięty przy użyciu css. działa doskonale w FF, ale wydaje się, że IE nie obsługuje stanu :active.Jak wykonać: aktywną pracę stanu w IE?

Oto mój kod:

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

Odpowiedz

10

To znany błąd występujący w starszych wersjach IE (myślę, że rozwiązał go w IE8) . Zwykle rozwiązuję ten problem (jak również odpowiadający mu problem "hover") przy pomocy javascript. Załączam dwa programy obsługi zdarzeń do elementu - "mousedown", aby ustawić dodatkową klasę (coś podobnego do "button-active") i "mouseup", aby usunąć klasę. W jQuery byłoby coś takiego:

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

Następnie wystarczy dodać tę klasę do reguły CSS, tak jak poniżej:

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

Trochę brzydki, tak, ale czego można się spodziewać - to Internet Explorer. To nie może być piękne.

+0

W rzeczywistości ten problem zwykle dotyczy "hover", gdzie odpowiednie wywołania zwrotne dotyczą "mouseover" i "mouseout". Nigdy nie próbowałem tego dla aktywnych, więc "mousedown" i "mouseup" mogą nie być dokładnie poprawnymi zdarzeniami do przechwycenia - ale masz pomysł. –

+0

Wygląda na to, że do tego celu muszę użyć kodu javascript. :( –

+1

Myślę, że szukasz zdarzeń focusin (http://api.jquery.com/focusin/) i focusout (http://api.jquery.com/focusout/) . – AgentConundrum

Powiązane problemy