Псевдоклассы CSS
Селекторы тега, class, id и атрибута вы уже знаете. Остался ещё слой: иногда нужен не один и тот же вид всегда, а изменение, когда курсор на кнопке, когда пользователь дошёл Tab’ом до поля или когда ссылка уже открывалась. Для этого есть псевдоклассы — без нового class в HTML.
Что значит псевдокласс?
Псевдокласс — слово, которое крепится к селектору одним двоеточием (:). В HTML вы не увидите class="hover". Браузер включает правило, когда условие верно: курсор сверху, фокус, история ссылки или место среди детей родителя.
Частые псевдоклассы
Начните с этих. Имён больше, но для старта UI обычно хватает.
📊 Повседневные псевдоклассы CSS
| Псевдокласс | Когда активен | Пример |
|---|---|---|
:hover |
Курсор над элементом | a:hover |
:focus |
У элемента фокус (клавиатура или клик) | input:focus |
:visited |
Ссылка уже посещалась (с ограничениями приватности) | a:visited |
:first-child |
Элемент — первый ребёнок родителя | li:first-child |
:nth-child(n) |
n-й ребёнок или нечёт/чёт | tr:nth-child(odd) |
:disabled |
Элемент формы отключён | button:disabled |
Наведение — :hover
С :hover вид меняется, пока курсор на элементе. Кнопки и ссылки оживают от небольшого изменения — не от скачка вёрстки.
Наведение — отклик кнопки
cssbutton:hover {
background-color: #0f766e;
color: #fff;
}
Заметка про hover
Держите изменение мягким. На сенсоре настоящего hover почти нет; не прячьте важное только в :hover.
Фокус — :focus
:focus берёт элемент, активный сейчас — например после Tab. Без видимого кольца фокуса пользователь клавиатуры теряется в форме.
Фокус — ясное кольцо у input
cssinput:focus {
outline: 2px solid #0f766e;
outline-offset: 2px;
}
Нужны и hover, и focus
Hover — для указателя. Focus значит «сейчас активен этот элемент управления». Не убирайте outline без столь же явной замены.
Посещённые ссылки — :visited
:visited окрашивает ссылки, которые браузер считает уже открытыми. Обычно только цвет (и немногое ещё). Не рассчитывайте на padding или вёрстку — приватность ограничивает это.
Посещённая — спокойный цвет ссылки
cssa:visited {
color: #6b21a8;
}
Порядок состояний ссылки
Если пишете несколько состояний вместе, безопасный привычный порядок: link → visited → hover → focus (иногда LVHA). Так hover и focus остаются видны и на посещённых ссылках.
Первый ребёнок — :first-child
:first-child значит: элемент — первый ребёнок своего родителя. Не «первый li на всей странице», а первый среди братьев и сестёр под этим родителем.
Первый ребёнок — выделить первый пункт списка
cssli:first-child {
font-weight: 700;
}
Дальше: :nth-child
С :nth-child(odd) или :nth-child(3) получаете полосы или «каждый третий». Сначала освойте :first-child, потом эти шаблоны.
Хорошие привычки
- Псевдокласс = одно двоеточие (
:hover); псевдоэлемент = два (::) — следующий урок - Интерактивный hover всегда с ясным
:focus - Цвета visited спокойные
- Проверяйте и Tab’ом, не только мышью
Попробуйте сами
- Короткая страница с
<button>,<input>, несколькими ссылками и<ul>из трёх<li>. - Добавьте
button:hover { background-color: #0f766e; color: #fff; }и наведите мышь на кнопку. - Добавьте
input:focus { outline: 2px solid #0f766e; }и войдите в поле Tab’ом. - Добавьте
a:visited { color: #6b21a8; }, откройте ссылку и вернитесь. - Добавьте
li:first-child { font-weight: 700; }— жирным станет только первый пункт.
Частые ошибки
- Писать
::hoverвместо:hover— двойное двоеточие для псевдоэлементов - Стилизовать hover и убрать outline фокуса без замены
- Ждать полной свободы от
:visitedдля любого свойства - Думать, что
p:first-childзначит «первый абзац где угодно на странице» - Класть важный текст только в
:hover, чтобы сенсорный пользователь его не видел
Кратко
- Псевдоклассы выбирают по состоянию или позиции одним двоеточием
:hoverи:focusдают отклик; оставляйте оба:visitedкрасит открытую ссылку в пределах браузера:first-child— первый ребёнок;:nth-child— следующий шаг- Одно двоеточие = псевдокласс; два = псевдоэлемент
- Практикуйтесь мышью, Tab и коротким списком
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху