Как сделать так: активное состояние работает в IE? - PullRequest
8 голосов
/ 30 октября 2010

У меня есть кнопка в моей HTML-форме, и мне нужно изменить ее фоновое изображение при нажатии с помощью CSS.он отлично работает в FF, но кажется, что IE не поддерживает состояние :active.

Вот мой код:

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

1 Ответ

10 голосов
/ 30 октября 2010

Это известная ошибка в более ранних версиях IE (я думаю, что они решили ее в IE8).Я обычно решаю это (а также соответствующую проблему «зависания») с помощью JavaScript.Я прикрепляю к элементу два обработчика событий - «mousedown» для установки дополнительного класса (что-то вроде «button-active») и «mouseup» для удаления класса.В jQuery это было бы примерно так:

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

Затем просто добавьте этот класс в правило css, вот так:

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

Немного безобразно, да, но чтовы ожидаете - это Internet Explorer.Это не может быть красиво.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...