Вот как я это понимаю.Все эти псевдоклассы имеют одинаковую специфику, поэтому псевдокласс, написанный в конце концов, побеждает.Что теперь делают псевдоклассы :link, :visited, :focus, :hover, :active
?Давайте посмотрим один на один.
a: link{color: red}
говорит пользовательскому агенту закрасить элемент привязки красным цветом в любом состоянии .Запустите следующий скрипт:
a:link {
color: red;
}
<a href="www.stackoverflow.com">Go to stackoverflow </a>
Элемент привязки окрашен в красный цвет в следующих состояниях тогда и только тогда, когда ссылка не посещена,
- не посещено
- завис
- Сфокусировано (с вкладками)
- Активно (щелкнуло)
Итак, a: link{color: red}
говорит агенту пользователя датькрасный цвет для привязки элемента во всех вышеперечисленных состояниях.Теперь давайте сравним это с a:hover
псевдоклассом.Запустите следующий скрипт
a:hover {
color: red;
}
<a href="www.stackoverflow.com">Go to stackoverflow </a>
Элемент привязки окрашен в красный цвет в следующих состояниях:
Мы видим, что оба псевдокласса :link
и :hover
способны определять состояние hover
- поэтому, если вы назначите эти два псевдокласса конкретному элементу, тогда тот, который упоминается впоследний в файле CSS выигрывает.По этой причине мы говорим, что :link
переопределит :hover
, если первое упомянуто ниже, а позднее.То же самое относится и к другим псевдоклассам.Я хотел бы дать список того, что делает каждый псевдокласс.
a:link {...}
устанавливает следующие состояния невидимой ссылки
- Focused (Tabbed)
- hovered
- Активно (нажата)
link
состояние переопределяет все остальные состояния.
a:visited {...}
устанавливает следующие состояния посещенной ссылки:
- Фокусировка (с вкладками)
- зависание
- Активно (щелкнуло)
a:visited {...}
переопределит все остальные состояния, кроме :link
, если и только если ссылка была посещена .
Обратите внимание, что посещено означает, что оно должно считаться посещенным согласно кэш-памяти агента пользователя.Например, веб-сайт, посещенный 10 дней назад, может не находиться в кэше пользовательского агента, тогда технически он будет считаться не посещенным .
a:focus {...}
устанавливает следующеесостояния как для посещенных, так и для невидимых ссылок:
- Сосредоточено (с вкладками)
- наведено
- Активно (нажато)
a:focus {...}
переопределяет :hover
и :active
состояния.
a:hover {...}
устанавливает следующие состояния для посещенных и не посещенных ссылок:
- зависание
- активное (нажатие)
a:hover {...}
переопределение:active
state
a:active {...}
устанавливает следующие состояния как для посещенных, так и для невидимых ссылок: