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

Какой селектор выбирает все элементы на сайте?

1.7 Middle🔥 151 комментариев
#HTML и CSS

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

🐱
deepseek-v3.2PrepBro AI4 апр. 2026 г.(ред.)

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

Универсальный селектор (*)

В CSS для выбора всех элементов на веб-странице используется универсальный селектор (universal selector), который обозначается символом звездочки — *.

Как работает *

Синтаксис предельно прост:

* {
    /* Стили применятся ко ВСЕМ элементам в документе */
}

Примеры использования:

/* 1. Сброс полей и отступов для всех элементов (часть reset/normalize CSS) */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box; /* Упрощает расчет размеров */
}

/* 2. Задание общего стиля шрифта для всей страницы */
* {
    font-family: 'Inter', sans-serif;
    line-height: 1.5;
}

/* 3. Использование в сочетании с другими селекторами */
.main-container * {
    /* Выберет все элементы ВНУТРИ .main-container */
    transition: all 0.3s ease;
}

Важные особенности и нюансы

  • Специфичность (Specificity): Универсальный селектор имеет наименьший вес специфичности (0,0,0,0). Любой другой селектор (тега, класса, id) переопределит его стили. Это позволяет использовать * для базовых настроек.

  • Производительность: Раньше считалось, что * сильно замедляет рендеринг, так как браузер должен проверить каждый элемент. Современные браузеры оптимизированы для его использования, особенно в простых случаях. Однако использование * внутри сложных селекторов (например, div > *:not(.item)) все еще может негативно сказываться на производительности, так как заставляет движок выполнять дополнительные вычисления для сопоставления.

  • Влияние на наследование: Важно понимать, что не все свойства наследуются (например, margin не наследуется). С помощью * мы принудительно применяем стиль к каждому элементу напрямую, минуя механизм наследования. Это ключевое отличие от установки стилей для body или html.

Практическое применение и альтернативы

Чаще всего * используется в CSS Reset или Normalize.css для нивелирования различий в стандартных стилях браузеров.

Альтернативой для выбора "почти всех" элементов часто служит установка стилей для корневого элемента html или body с использованием наследуемых свойств. Это более производительно.

/* Альтернатива: задаем шрифт и цвет через body (свойства унаследуются) */
body {
    font-family: 'Segoe UI', sans-serif;
    color: #333;
    /* Эти свойства наследуются большинством дочерних элементов */
}

/* А padding и border нам потребуется задать через * или конкретным элементам */
* {
    box-sizing: border-box; /* Это свойство не наследуется */
}

Комбинирование с другими селекторами

Универсальный селектор часто используется в комбинациях для уточнения области действия:

/* Все потомки первого уровня внутри header */
header > * {
    margin-right: 20px;
}

/* Все элементы, кроме тех, у которых класс .hidden */
*:not(.hidden) {
    display: block;
}

Вывод: Универсальный селектор * — мощный инструмент для глобальных стилей и сброса. Его следует использовать осознанно, преимущественно на верхнем уровне, избегая вложенности в сложные селекторы, чтобы не создавать излишней нагрузки на механизм подбора стилей браузера. Для глобальных наследуемых свойств (цвет, шрифт) часто предпочтительнее использовать селектор body.

Какой селектор выбирает все элементы на сайте? | PrepBro