Селекторы и каскад
Выбирайте элементы с помощью селекторов типа, класса, ID и атрибутов. Изучайте специфичность, наследование и каскад, чтобы предсказывать, какие стили будут иметь приоритет.
«Селекторы и каскад» — бесплатный урок Frontend Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Frontend Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Frontend Academy содержит 4 уроков всего.
Что такое CSS
CSS (каскадные таблицы стилей) — это язык, который управляет визуальным представлением. Вы записываете правила — каждое правило содержит селектор, выбирающий элементы, и блок объявлений с парами свойство—значение.
selector {
property: value;
another-property: value;
}Селекторы по типу, классу и ID
Три основных селектора: type выбирает все элементы с указанным тегом (p), class — элементы с указанным классом (.card), ID — один элемент по идентификатору (#logo). Предпочитайте классы — у ID очень высокая специфичность.
p { color: #333; } /* type */
.card { padding: 16px; } /* class */
#logo { width: 200px; } /* ID */Селекторы атрибутов и псевдоклассов
Выбирайте элементы по значению атрибута с помощью [type="email"]. Используйте псевдоклассы для состояний: :hover, :focus, :active, :checked, :nth-child(), :first-child, :last-child.
input[type="email"] { border-color: blue; }
a:hover { text-decoration: underline; }
li:nth-child(odd) { background: #f5f5f5; }Комбинаторы
Комбинаторы описывают отношения между элементами: пробел (потомок), > (непосредственный дочерний элемент), + (соседний элемент на том же уровне), ~ (любой соседний элемент на том же уровне).
nav a { color: white; } /* descendant */
nav > ul { list-style: none; } /* child */
h2 + p { margin-top: 0; } /* adjacent sibling */Специфичность: кто побеждает
Если несколько правил выбирают один и тот же элемент, специфичность определяет, какое из них победит. Селекторы ID (0,1,0,0) сильнее селекторов классов (0,0,1,0), а те сильнее селекторов по типу (0,0,0,1). Встроенные стили сильнее всех. !important сильнее всего — используйте его только в крайнем случае.
Вычисление специфичности
Отдельно подсчитайте ID, классы/атрибуты/псевдоклассы и типы. Сравнивайте столбцы по очереди. Пример: #nav .link:hover = (0,1,1,1). .nav a = (0,0,1,1). Побеждает первый селектор.
/* Specificity: 0,0,1,1 — loses */
.nav a { color: red; }
/* Specificity: 0,1,1,1 — wins */
#nav .link:hover { color: blue; }Каскад: порядок имеет значение
Если специфичность одинакова, побеждает правило, расположенное позже в таблице стилей. Это буква C в CSS — каскад. И порядок импорта, и порядок в исходном коде имеют значение.
Наследование
Некоторые свойства CSS по умолчанию наследуются — дочерние элементы получают значение родительского элемента, даже если Вы не задавали его отдельно. Свойства, связанные с текстом, например color, font-family и line-height, наследуются. Свойства блочной модели, например margin, — нет.
body {
font-family: 'Inter', sans-serif; /* all text inherits this */
color: #1a202c; /* all text inherits this */
}Селекторы :is() и :where()
:is() и :where() позволяют записывать краткие селекторы, соответствующие любому элементу из списка. Разница в том, что :is() наследует наивысшую специфичность своих аргументов, а :where() всегда имеет нулевую специфичность.
/* Instead of h1 a, h2 a, h3 a: */
:is(h1, h2, h3) a {
color: inherit;
}Универсальный селектор *
Универсальный селектор * соответствует каждому элементу. Его часто используют в сбросах CSS: *, *::before, *::after { box-sizing: border-box; } — это делает блочную модель гораздо более предсказуемой.
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}Стили браузера по умолчанию
Перед Вашими стилями браузеры применяют собственную таблицу стилей (так называемую таблицу стилей пользовательского агента). Сбросы CSS, например normalize.css, или каскадные слои нейтрализуют эти значения по умолчанию, чтобы стилизация начиналась с известной исходной точки.
Быстрая проверка
Какой селектор имеет наивысшую специфичность?
Итоги: селекторы и каскад
Выбирайте элементы с помощью селекторов по типу, классу, ID, атрибуту и псевдоклассов. Специфичность разрешает конфликты (ID > классы > типы). Каскад разрешает равенство с помощью порядка в исходном коде. Наследование автоматически передаёт стили текста дочерним элементам.
Изучай HTML с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 41
- Уроки
- 163
Часто задаваемые вопросы
Урок «Селекторы и каскад» бесплатный?
Да — полный текст урока «Селекторы и каскад» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Frontend Academy, подпишись на CoddyKit PRO. Курс Frontend Academy содержит 4 уроков всего.
Чему я научусь в уроке «Селекторы и каскад»?
Выбирайте элементы с помощью селекторов типа, класса, ID и атрибутов. Изучайте специфичность, наследование и каскад, чтобы предсказывать, какие стили будут иметь приоритет. Ты практикуешь Frontend Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Frontend Academy?
Предыдущий опыт не требуется. Frontend Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Селекторы и каскад»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Frontend Academy?
Да. Каждый урок Frontend Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Селекторы и каскад
- Цвета, типографика и блочная модель
- Display: основы block, inline, flex и grid
- Позиционирование: relative, absolute, fixed, sticky