Почему псевдокласс наведения переопределяет активный псевдокласс

Название говорит само за себя.

Предположим, у меня есть элемент, цвет которого я хочу изменить на : hover , но при щелчке я хочу, чтобы он вернулся к исходному цвету. Итак, я пробовал это:

a:link, a:visited, a:active {
    background: red;
}
a:hover {
    background: green;
}

Оказывается, это не работает. После долгих размышлений я понял, что состояние : hover заменяет состояние : active . Это было легко решено следующим образом:

a:link, a:visited {
    background: green;
}
a:hover {
    background: red;
}
a:active {
    background: green;
}

(я мог объединить 1-е правило с 3-м).

Вот сценарий: http://jsfiddle.net/V5FUy/


Мой вопрос: это ожидаемое поведение? Насколько я понимаю, состояние : active всегда должно перекрывать состояние : hover , поскольку состояние : active будет почти всегда сопровождаться состоянием : hover .

20
задан Joseph Silber 22 September 2011 в 00:10
поделиться