Что такое CSS/JS Selector?
Selector — это «адрес» или «указатель», который говорит CSS или JavaScript, какой именно HTML-элемент нужно найти. Он сообщает браузеру: «примени эти стили или изменения именно к этому элементу».
Думайте об этом как о почтовом адресе
Чтобы доставить письмо, нужен точный адрес — улица, номер дома, город. Селектор работает так же. Если написать неправильный селектор, стили применятся не туда, куда нужно, или скрипт вообще не найдёт элемент.
Виды CSS-селекторов
Базовые селекторы
Селектор элемента p — применяется ко всем абзацам (например, p { color: black; }). Селектор класса .card — ко всем элементам с классом «card» (например, .card { border-radius: 8px; }). Селектор ID #header — только к одному элементу с id «header» (например, #header { background-color: navy; }). **Универсальный селектор *** применяется ко всем элементам на странице (например, * { margin: 0; }).
Селекторы атрибутов
Позволяют находить элементы по значению их HTML-атрибутов. Например, input[type="text"] выбирает только input с типом «text». a[href^="http"] выбирает все ссылки, атрибут href которых начинается с «http» (то есть ведущие на внешние сайты).
Комбинаторы (связь между селекторами)
Для связи селекторов используется 4 основных знака: .card span (пробел) — выбирает все span внутри .card, на любом уровне вложенности (потомок). .card > span — выбирает только span, которые являются прямыми детьми .card. h2 + p — выбирает первый p сразу после h2 (соседний элемент). h2 ~ p — выбирает все p после h2 на одном уровне (все последующие соседи).
Псевдоклассы и псевдоэлементы
Часто путают, но это разные вещи:
- Псевдокласс (пишется с одним двоеточием, например :hover) — описывает состояние элемента: hover (наведение курсора), first-child (первый дочерний элемент), nth-child (какой по счёту), focus (в фокусе).
- Псевдоэлемент (пишется с двойным двоеточием, например ::before) — создаёт или выделяет часть элемента, которой нет в HTML напрямую: before и after (добавляют контент до/после элемента), first-line (первая строка текста).
Селекторы в JavaScript
Помимо CSS, селекторы активно используются и в JavaScript для поиска элементов на странице. Когда пишем document.querySelector(".card"), JavaScript находит первый элемент с классом «card». querySelectorAll возвращает все элементы с данным классом (в виде списка NodeList). В JavaScript можно использовать любой валидный CSS-селектор — например, document.querySelector("input[type='text']").
То есть селектор — это основной инструмент как для CSS (стилизация), так и для JS (поиск и манипуляция элементами).
Почему важно писать селекторы правильно
- Слишком общий селектор (например, просто div) может случайно затронуть элементы, которые вы не планировали менять.
- Слишком специфичный селектор усложняет поддержку кода и может привести к конфликтам приоритетов (specificity) в CSS.
- В JavaScript неправильный селектор просто вернёт null — и попытка обратиться к несуществующему элементу вызовет ошибку в консоли.
Часто задаваемые вопросы
Что такое CSS-селектор простыми словами? Это правило, которое указывает браузеру, к какому именно элементу на странице применить стили — как адрес для доставки письма, только для HTML-элементов.
Чем отличается класс от ID как селектор? Класс (.card) можно использовать многократно на одной странице — для группы похожих элементов. ID (#header) должен быть уникальным и применяется только к одному элементу.
В чём разница между псевдоклассом и псевдоэлементом? Псевдокласс (:hover, :focus) описывает состояние существующего элемента. Псевдоэлемент (::before, ::after) создаёт часть элемента, которой не было в HTML-коде напрямую.
Хотите применить эти знания на практике и получить реальные результаты? Начните обучение на курсе «IT и Компьютерная инженерия» и шаг за шагом приобретайте практические навыки. Подробнее о курсе — перейдите по ссылке: Курс «IT и Компьютерная инженерия».
