Правильно, ужасно сложное решение (и все еще несовершенное), но: если вы не заключаете текст ссылки в <span>
, а вместо этого просто используете <span>
в качестве места для размещения фонового изображения и поместите его абсолютно в <a>
, тогда <span>
(в основном) перестанет блокировать состояние :active
.
Тестовая страница: http://www.pauldwaite.co.uk/test-pages/2769392/3/
HTML
<a class="button" href="#">
<span></span>Link
</a>
CSS
<style type="text/css">
a.button {
position: relative;
padding: 10px;
color: #c00;
}
a.button:active {
color: #009;
font-weight: bold;
}
a.button span {
position: absolute;
top: 50%;
left: 3px;
margin-top: -2px;
border: solid 2px #000;
}
</style>
Конечно, область, охватываемая <span>
, все еще удерживает событие щелчка, поэтому, когда пользователь нажимает там, он не увидит состояние :active
. Это небольшое улучшение по сравнению с предыдущей ситуацией.