Селекторы CSS
У каждого CSS-правила две задачи: определить, к чему применять стили, и как их задать. «Как» вы уже отработали на свойствах, значениях и единицах измерения. Это занятие посвящено «к чему» — селектору, с которого начинается правило.
Что такое CSS-селекторы?
Селектор — это шаблон, по которому браузер находит HTML-элементы, чтобы применить к ним блок деклараций. Если селектор подходит элементу на странице, этот элемент получает все стили из фигурных скобок { }.
Основные типы селекторов: обзор
Начните с этих четырёх. Комбинаторы, атрибуты и псевдоклассы появятся в следующих занятиях, а пока уверенно освойте селекторы элемента, class, id и *.
📊 Базовые CSS-селекторы
| Селектор | Что выбирает | Пример |
|---|---|---|
| Элемент (тип) | Все элементы с таким именем тега | p { … } |
| Class | Элементы с таким атрибутом class | .card { … } |
| Id | Единственный элемент с таким id | #hero { … } |
| Универсальный | Вообще все элементы (применять осторожно) | * { … } |
Селекторы элемента (типа)
Селектор элемента — это просто имя тега, без точки и без решётки. h1 оформляет каждый <h1> на странице, p — каждый абзац. Это самый широкий повседневный инструмент, когда нужно задать единый базовый вид для тега.
Селекторы элемента для заголовков и абзацев
cssh1 {
color: #0f766e;
font-size: 2rem;
}
p {
color: #334155;
line-height: 1.6;
}
Когда удобны селекторы типа
Используйте их для общих настроек сайта: цвета текста в body, жирности заголовков, отступов у списков. Если особый вид нужен только некоторым абзацам, лучше добавьте class, чем менять оформление всех p.
Селекторы class
Селектор class начинается с точки (.), за которой идёт имя класса. В HTML элементы помечаются так: class="card". Один и тот же класс можно ставить на сколько угодно элементов — поэтому именно классы лежат в основе многократно используемого дизайна.
Селектор class для переиспользуемых карточек
css.card {
background: #f8fafc;
border: 1px solid #cbd5e1;
padding: 1rem;
border-radius: 8px;
}
Имя класса в HTML должно совпадать
CSS-правило .card оформит только те элементы, у которых действительно есть class="card" (или несколько классов, среди которых card). Написание должно совпадать до буквы: .Card и .card — разные селекторы.
Селекторы id
Селектор id начинается с решётки (#) и имени идентификатора. В HTML пишут id="hero". Идентификатор должен быть уникальным на странице — только у одного элемента. Для большей части стилей выбирайте классы, а id оставьте для единственного по-настоящему особого блока.
Селектор id для уникального баннера
css#hero {
min-height: 40vh;
background: #0f172a;
color: #f8fafc;
padding: 2rem;
}
Универсальный селектор (*)
Универсальный селектор * подходит любому элементу. Иногда его используют для простого сброса (например, чтобы задать box-sizing), но если применить через него цвета или отступы ко всему подряд, можно испортить вёрстку. Для обычного оформления выбирайте более точные селекторы.
Аккуратное использование универсального селектора
css* {
box-sizing: border-box;
}
Селекторы вместе на одной странице
В настоящих таблицах стилей типы селекторов смешиваются: базовые настройки задаются селекторами элементов, повторяющиеся блоки — классами, а редкие уникальные цели — идентификаторами. Эта небольшая таблица показывает привычный подход: не каждому правилу нужен id.
Небольшая смесь типов селекторов на странице
cssbody {
font-family: Georgia, serif;
margin: 0;
}
.card {
max-width: 28rem;
margin: 1rem;
}
#hero {
padding: 2rem;
}
Class или id: практическая привычка
- Для кнопок, карточек, ссылок навигации и всего, что можно использовать повторно, выбирайте class
- Id нужен, только когда цель действительно одна (баннер страницы, главное поле поиска)
- Не придумывайте новый id для каждого оформленного блока: это мешает повторному использованию и создаст проблемы в уроках про каскад
Попробуйте сами
- Добавьте на тренировочную страницу
<h1>, два<p>,<div class="card">и<section id="hero">. - Напишите правило для элементов
h1иp. - Оформите
.card: внутренний отступ (padding), светлый фон и рамка (border). - Оформите
#hero: тёмный фон и светлый текст. - По желанию: добавьте
* { box-sizing: border-box; }и заметьте, что padding внутри карточки стал вести себя предсказуемее.
Частые ошибки
- Написать
card { }вместо.card { }: без точки браузер ищет элемент с именем card, а такого в HTML нет - Написать
hero { }вместо#hero { }: потеряна решётка - В HTML указан
class="card", а в CSS написано.crd: совпадения нет, значит, стилей тоже нет - Один и тот же
idу нескольких элементов: HTML становится невалидным, а выбор элементов — непредсказуемым - Использовать только селекторы типа для единичного оформления: меняются все
pилиdiv, хотя вы хотели изменить один блок
Итоги
- Селекторы определяют, какие HTML-элементы получат стили правила
- Селектор элемента — это имя тега (
h1,p) - Селектор class начинается с точки (
.card) и сопоставляется с атрибутомclassв HTML - Селектор id начинается с решётки (
#hero) и должен выбирать один уникальный элемент *выбирает всё: полезен для аккуратного сброса, но не для оформления всей страницы- Для переиспользуемых элементов интерфейса берите классы; id используйте редко и только для уникальных
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху