← Назад к вопросам

Приведи пример псевдоклассов

1.0 Junior🔥 191 комментариев
#HTML и CSS

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Псевдоклассы в CSS

Псевдоклассы - это ключевое слово, добавляемое к селектору, которое определяет специальное состояние элемента. Они позволяют стилизировать элементы в зависимости от их состояния, положения или взаимодействия, без использования дополнительных классов в HTML.

Основные псевдоклассы

1. :hover

Применяется, когда пользователь наводит мышь на элемент:

a:hover {
  color: blue;
  text-decoration: underline;
}

button:hover {
  background-color: #0056b3;
  cursor: pointer;
}

2. :active

Применяется в момент нажатия на элемент:

button:active {
  transform: scale(0.98);
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2);
}

3. :focus

Применяется, когда элемент получает фокус (обычно при нажатии Tab или клике):

input:focus {
  outline: 2px solid blue;
  border-color: blue;
}

button:focus {
  box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.3);
}

4. :visited

Применяется только к ссылкам, которые пользователь уже посетил:

a:visited {
  color: purple;
}

5. :first-child

Выбирает первый элемент среди его братьев:

li:first-child {
  font-weight: bold;
  margin-top: 0;
}

6. :last-child

Выбирает последний элемент среди его братьев:

li:last-child {
  margin-bottom: 0;
  border-bottom: none;
}

7. :nth-child()

Выбирает элемент по номеру:

/* Каждый второй элемент (чередование) */
tr:nth-child(even) {
  background-color: #f0f0f0;
}

/* Каждый третий элемент */
li:nth-child(3n) {
  color: red;
}

/* Начиная со второго элемента */
div:nth-child(n+2) {
  margin-top: 10px;
}

8. :nth-of-type()

Похоже на :nth-child(), но учитывает только элементы того же типа:

p:nth-of-type(2) {
  font-style: italic;
}

9. :not()

Выбирает элементы, которые НЕ соответствуют селектору:

/* Все элементы li, кроме последнего */
li:not(:last-child) {
  margin-bottom: 10px;
}

/* Все кнопки, кроме отключенных */
button:not(:disabled) {
  cursor: pointer;
}

10. :disabled

Применяется к отключенным элементам (input, button и т.д.):

input:disabled {
  background-color: #e0e0e0;
  cursor: not-allowed;
  opacity: 0.6;
}

11. :enabled

Применяется к включенным элементам формы:

input:enabled {
  background-color: white;
  cursor: text;
}

12. :checked

Применяется к отмеченным чекбоксам и радиокнопкам:

input[type="checkbox"]:checked {
  accent-color: green;
}

input[type="radio"]:checked + label {
  font-weight: bold;
}

Практический пример: стилизация формы

/* Поле ввода в фокусе */
input:focus {
  border-color: blue;
  box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.1);
}

/* Отключенное поле */
input:disabled {
  background-color: #f5f5f5;
  color: #999;
}

/* Кнопка при наведении */
button:hover:not(:disabled) {
  background-color: #0056b3;
}

/* Кнопка при нажатии */
button:active:not(:disabled) {
  transform: translateY(2px);
}

/* Список с чередованием цветов */
ul li:nth-child(even) {
  background-color: #f9f9f9;
}

ul li:last-child {
  border-bottom: none;
}

Разница между :hover, :active, :focus

  • :hover - мышь наведена на элемент
  • :active - элемент нажат (в процессе нажатия)
  • :focus - элемент получил фокус (может быть установлен программно или через клавиатуру)
/* HTML */
<button>Click me</button>

/* CSS */
button:hover { background: yellow; }   /* Наведение */
button:active { background: orange; }   /* Нажатие */
button:focus { outline: 2px solid blue; } /* Фокус */

Новые псевдоклассы (современные браузеры)

:is() и :where()

/* Вместо */
h1:hover, h2:hover, h3:hover { color: blue; }

/* Пишем */
:is(h1, h2, h3):hover { color: blue; }

:has() - выбирает родителя, если у него есть определенный потомок

/* Стилизировать div, если он содержит button */
div:has(> button) {
  padding: 10px;
  border: 1px solid gray;
}

Вывод

Псевдоклассы - это мощный инструмент для создания интерактивных и динамических стилей без JavaScript. Они помогают создавать доступные, удобные интерфейсы и улучшают пользовательский опыт.