Почему якорные псевдоклассы a:link, :visited, :hover, :active должны быть в правильном порядке?

Согласно W3 Schools, порядок объявления псевдоклассов в якорном элементе жизненно важен. .

Почему это? Есть ли другие?


person BanksySan    schedule 07.06.2013    source источник
comment
w3.org/TR/CSS2/selector.html#dynamic- псевдоклассы   -  person dsgriffin    schedule 08.06.2013
comment
Еще один пример того, почему обращение к спецификациям — не самое худшее место для начала, и важность W3Fools w3fools.com & stackoverflow, надеюсь, скоро займет первое место в результатах поиска.   -  person Volker E.    schedule 04.05.2015


Ответы (1)


Здесь есть подробное описание:

http://meyerweb.com/eric/css/link-specificity.html

Это связано со спецификой CSS.
Цитата оттуда:

Все они могут применяться к гиперссылке, а в некоторых случаях могут применяться несколько. Например, непосещенная ссылка может быть наведена и активна одновременно с непосещенной ссылкой. Поскольку к гиперссылке применяются три из приведенных выше правил, а все селекторы имеют одинаковую специфичность, то выигрывает последний из перечисленных. Поэтому активный стиль никогда не появится, потому что он всегда будет переопределен стилем наведения. Теперь рассмотрим гиперссылку, которая была посещена. Он всегда и навсегда будет фиолетовым, потому что его стиль посещения превосходит любое другое состояние, включая активное состояние и наведение курсора.
 
Вот почему рекомендуемый порядок в CSS1 выглядит следующим образом:

A:ссылка
A:посетили
A:наведите курсор
A:активно

Кстати, W3 Schools — не лучший ресурс для формальных определений. Вам лучше обратиться к источнику по адресу w3c. Например, не жизненно важно, но рекомендуется.

person Andy G    schedule 07.06.2013
comment
В этом есть смысл. Спасибо. - person BanksySan; 08.06.2013
comment
Вы можете использовать LoVe-Hate, если это поможет;) - person Andy G; 08.06.2013
comment
Я просто думал о хорошей мнемонике. Этот подходит! Еще раз спасибо. - person BanksySan; 08.06.2013
comment
Также есть псевдокласс A:focus. Так что вам нужно сделать это LoVe For HAte - person RBT; 08.11.2017
comment
:focus не относится к a-тегам, и только четыре перечисленных псевдокласса должны появляться в указанном порядке. (Я полагаю, вы могли бы включить его во фразу как напоминание о том, что он доступен, но он не должен появляться между посещенным и наведенным курсором, поэтому я бы нашел это немного запутанным.) - person Andy G; 08.11.2017