Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как оформить состояния ссылки: посещённая, наведение, фокус

Короткий ответ

У ссылки пять состояний, и у каждого свой псевдокласс. Записывайте их именно в таком порядке:

<style>
  a:link { color: steelblue; }
  a:visited { color: purple; }
  a:hover { color: tomato; }
  a:focus-visible { outline: 2px solid orange; outline-offset: 2px; }
  a:active { color: crimson; }
</style>
 
<p><a href="https://example.com/new-page">A new page</a> · <a href="#">This page</a></p>
  • :link — ссылка, по которой ещё не переходили;
  • :visited — уже посещённая;
  • :hover — под курсором мыши;
  • :focus-visible — выбрана с клавиатуры клавишей Tab;
  • :active — в момент нажатия.

Почему порядок важен

У всех этих селекторов одинаковая специфичность, поэтому побеждает тот, что записан ниже. Если поставить :visited после :hover, посещённые ссылки перестанут менять цвет при наведении. Помогает запомнить порядок фраза «LoVe HAte»: Link, Visited, Hover, Active.

Ограничения :visited

Ради приватности браузер разрешает менять у посещённых ссылок только цвета: color, background-color, border-color и подобные. Размер шрифта, фон-картинку или display для :visited задать нельзя — иначе любой сайт мог бы узнать историю посещений.

Частая ошибка

Стили задают для a:hover, а для фокуса — ничего. Мышью всё видно, а при переходе по Tab выбранная ссылка ничем не выделяется. Добавляйте :focus-visible вместе с :hover, можно одним правилом: a:hover, a:focus-visible.

Функции из этого ответа

  • :visited — Срабатывает у ссылок, которые пользователь уже открывал; `:link` — у ещё не посещённых.
  • :hover — Срабатывает, пока над элементом находится указатель мыши.
  • :focus-visible — Срабатывает у элемента в фокусе, когда браузер считает, что фокус нужно показать, — обычно после перехода с клавиатуры.
  • :active — Срабатывает, пока элемент нажимают, — между нажатием и отпусканием кнопки мыши.
  • <a> — Ссылка на другую страницу, файл или место на странице.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.