Вложенность в нативном CSS
Пишите вложенные правила CSS без препроцессора, используя спецификацию нативной вложенности CSS.
«Вложенность в нативном CSS» — бесплатный урок CSS Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CSS Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CSS Academy содержит 4 уроков всего.
Что такое вложенность CSS?
Нативная вложенность CSS (доступна во всех современных браузерах с базовой поддержкой 2024 года) позволяет записывать правила CSS внутри других правил, повторяя синтаксис вложенности, который ранее был доступен только в препроцессорах Sass/Less. Вложенные правила автоматически наследуют контекст родительского селектора.
Базовый синтаксис вложенности
Записывайте дочерние селекторы внутри блока правила родителя. Браузер автоматически объединяет родительские и дочерние селекторы. Символ & (селектор вложенности) явно ссылается на родительский селектор для модификаторов и псевдоклассов.
<div class="card is-active">
<div class="title">Nested Card Title</div>
<p>Card body text.</p>
</div>
Селектор вложенности &
& явно представляет родительский селектор во вложенных правилах. Используйте его для псевдоклассов (&:hover), псевдоэлементов (&::before), классов-модификаторов (&.active) и селекторов атрибутов (&[disabled]). Без & вложенные правила создают селекторы потомков.
Вложенность псевдоэлементов
Естественным образом вкладывайте правила псевдоэлементов внутрь родительского правила: .button { &::before { content: ""; } &::after { content: ""; } }. Так все стили кнопки находятся рядом, и не приходится повторять селектор, как в плоском CSS.
Вложенность правил at-rule
Медиазапросы и другие правила at-rule можно вкладывать внутрь правил (Chrome 112+, Firefox 117+): .card { padding: 1rem; @media (min-width: 768px) { padding: 2rem; } }. Адаптивные стили находятся рядом с элементом, на который они влияют, а не в отдельном блоке медиазапроса в конце файла.
Специфичность селекторов
Вложенность не меняет правила специфичности — объединённый селектор имеет такую же специфичность, как и при записи без вложенности. .card .title, записанный с вложенностью или без неё, имеет одинаковую специфичность (0,2,0). Вложенность — это удобный синтаксис, а не изменение специфичности.
Неявный потомок и явный &
Вложенный селектор без & создаёт селектор потомка: .card { .title {} } преобразуется в .card .title. С &: .card { &.active {} } преобразуется в .card.active (без пробела — это класс-модификатор, а не потомок).
BEM с нативной вложенностью
Нативная вложенность не идеально подходит для BEM: селекторы .block__element и .block--modifier являются строками, а одной операции с & недостаточно, чтобы создать их. Используйте вложенность для псевдоклассов и вложенных структур компонентов, а не для объединения строк BEM (для этого по-прежнему нужен препроцессор).
Переход с Sass
Большая часть синтаксиса вложенности Sass совпадает с нативной вложенностью CSS. Исключение: Sass поддерживает объединение строк с помощью &-modifier, а нативный CSS — нет. При переходе найдите шаблоны &- или &__ и преобразуйте именно эти правила в плоскую запись, сохранив остальную вложенность.
Поддержка браузерами
Нативная вложенность CSS поддерживается в Chrome 112+, Firefox 117+ и Safari 16.5+. Для поддержки старых браузеров используйте PostCSS с postcss-nesting, чтобы во время сборки преобразовывать нативный синтаксис вложенности в плоский CSS — это позволяет уже сейчас писать код с нативной вложенностью.
DevTools и вложенность
Chrome DevTools показывает вложенные правила на панели Styles в их вложенной форме. При нажатии на вложенное правило открывается соответствующее место в исходном коде на панели Sources. Отладка вложенного CSS в современных DevTools так же понятна, как отладка плоского CSS.
Проверка знаний
Чем отличается вложенность с селектором & от вложенности без него?
Итоги
Нативная вложенность CSS добавляет в обычный CSS синтаксис вложенных правил, похожий на Sass. Селектор & создаёт составные селекторы для псевдоклассов, псевдоэлементов и модификаторов. Вложенные медиазапросы размещают адаптивные стили рядом с соответствующими элементами. PostCSS преобразует нативную вложенность для старых браузеров, что позволяет постепенно внедрять её уже сегодня.
Часто задаваемые вопросы
Урок «Вложенность в нативном CSS» бесплатный?
Да — полный текст урока «Вложенность в нативном CSS» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CSS Academy, подпишись на CoddyKit PRO. Курс CSS Academy содержит 4 уроков всего.
Чему я научусь в уроке «Вложенность в нативном CSS»?
Пишите вложенные правила CSS без препроцессора, используя спецификацию нативной вложенности CSS. Ты практикуешь CSS Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать CSS Academy?
Предыдущий опыт не требуется. CSS Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Вложенность в нативном CSS»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке CSS Academy?
Да. Каждый урок CSS Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Вложенность в нативном CSS
- Связанный псевдокласс :has()
- @scope для изолированных стилей
- API переходов между представлениями