Псевдоклассы: :link, :visited, :hover, :active, :focus и другие
Что такое псевдоклассы? 🔮
Псевдоклассы — это специальные селекторы, которые позволяют стилизовать элементы в определённом состоянии. Например, кнопку при наведении курсора (:hover) или ссылку после посещения (:visited). Это как магические переключатели в CSS! ✨
/* Базовый синтаксис */
селектор:псевдокласс {
свойство: значение;
}
Основные псевдоклассы для ссылок и интерактива 🔗
1. :link — не посещённая ссылка
Стилизует ссылки, по которым пользователь ещё не переходил.
a:link {
color: deepskyblue;
text-decoration: none;
}
2. :visited — посещённая ссылка
Меняет стиль ссылок, которые уже были открыты. Из соображений безопасности браузеры ограничивают доступные свойства (например, нельзя изменить font-size).
a:visited {
color: purple;
}
💡 Лайфхак от Данилы Бежина: порядок важен! Располагайте псевдоклассы в последовательности
:link→:visited→:hover→:active→:focus(помните мнемонику LoVe HAte — первые буквы каждого состояния).
3. :hover — при наведении курсора
Срабатывает, когда пользователь наводит курсор на элемент. Работает не только с ссылками!
button:hover {
background-color: gold;
transform: scale(1.05);
transition: all 0.3s ease;
}
4. :active — момент клика
Активируется, когда элемент находится в состоянии нажатия (например, кнопка зажата мышкой).
a:active {
color: red;
font-weight: bold;
}
5. :focus — элемент в фокусе
Применяется, когда элемент получает фокус (например, при переходе по Tab или клике). Критически важен для доступности!
input:focus {
outline: 3px solid orange;
box-shadow: 0 0 10px rgba(255,165,0,0.5);
}
Псевдоклассы для форм и структуры 🧩
:checked — отмеченные элементы
Идеален для кастомизации чекбоксов и радиокнопок:
input[type="checkbox"]:checked {
accent-color: limegreen;
}
:disabled и :enabled — состояния элементов формы
button:disabled {
opacity: 0.5;
cursor: not-allowed;
}
input:enabled {
border-color: green;
}
:first-child, :last-child — выбор по позиции
li:first-child {
font-weight: bold;
}
li:last-child {
border-bottom: 2px dashed gray;
}
Комбинирование псевдоклассов 🎯
Псевдоклассы можно объединять для точного таргетинга:
/* Стиль для наведения на активную вкладку */
.tab:active:hover {
background-color: darkorange;
}
/* Выделение чётных строк в таблице */
tr:nth-child(even) {
background-color: #f2f2f2;
}
Практический пример: кнопка с микровзаимодействиями 🚀
Создадим интерактивную кнопку, которая реагирует на все состояния:
.btn {
padding: 12px 24px;
border: none;
border-radius: 8px;
background: linear-gradient(to right, #ff6b6b, #ffa3a3);
color: white;
font-size: 16px;
cursor: pointer;
transition: all 0.3s ease;
}
.btn:hover {
transform: translateY(-2px);
box-shadow: 0 5px 15px rgba(255,107,107,0.4);
}
.btn:active {
transform: translateY(0);
box-shadow: 0 2px 5px rgba(255,107,107,0.4);
}
.btn:focus {
outline: 3px solid rgba(255,107,107,0.5);
}
.btn:disabled {
background: #ccc;
transform: none;
box-shadow: none;
}
Итоговая таблица популярных псевдоклассов 📊
| Псевдокласс | Применение | Пример использования |
|---|---|---|
:hover |
Наведение курсора | button:hover { ... } |
:active |
Элемент активирован (нажат) | a:active { color: red; } |
:focus |
Элемент в фокусе | input:focus { outline: none; } |
:nth-child |
Выбор по позиции среди соседей | li:nth-child(odd) { ... } |
:not() |
Исключение элементов | input:not([type="submit"]) { } |
:target |
Элемент, на который ссылается URL | #section:target { background: } |
Проверь себя! 🧠
- Как сделать, чтобы все нечётные строки таблицы были серыми?
- Какой псевдокласс сработает при нажатии пробела на клавиатуре, когда фокус на кнопке?
- Почему
:visitedимеет ограничения на изменяемые свойства?
Ответы:
tr:nth-child(odd) { background: #f0f0f0; }:active(при нажатии) и:focus(когда элемент в фокусе)- Из соображений безопасности, чтобы нельзя было узнать историю посещений пользователя
Теперь ты готов создавать по-настоящему динамичные интерфейсы! Помни: правильное использование псевдоклассов — признак профессионального верстальщика. 🏆