TGViewer
<divelopers> <divelopers> @alexnozer_dev · 1.18K subscribers
Post #256 870
Вложенность в CSS

Препроцессоры CSS впервые предложили концепцию вложенности. Правила можно вкладывать в другие правила, а при сборке они объединяются в одно. Особенно хорошо это работает в сочетании с методологией БЭМ, чтобы избежать дублирования.

Вложенность настолько понравилась разработчикам, что её просили внедрить в CSS. Два года назад это произошло. Теперь во всех современных браузерах есть стандартная вложенность, которая скоро получит статус Widely Available.

Раньше я активно использовал препроцессоры и вложенность. Теперь я предпочитаю стандартный CSS без препроцессоров и плоские селекторы без вложенности. Это вкусовщина, но есть некоторые аргументы.

Усложняется поиск и отладка. Поиск по селектору .card__heading из DevTools не даст результатов, потому что в коде он будет записан как &__heading, вложенный в .card. Поиск по &__heading может дать много совпадений в разных блоках.

Стандартная вложенность отображается в DevTools особым образом, не очень удобным для копирования селектора с целью дальнейшего поиска. Зато она работает как есть, не требует компиляции и карт исходного кода (sourcemaps).

Ухудшается читаемость. При глубокой вложенности код уходит вправо. Ситуация аналогична многоуровневой вложенности блоков кода (if, for) или вложенным callback-функциям, что приводит к так называемому callback hell.

Теряется контекст. При большом количестве вложенных блоков код не помещается на экране, поэтому легко потерять контекст блока верхнего уровня. В современных IDE это не так актуально благодаря sticky-строкам.

Недостаточная поддержка. Стандартная вложенность скоро получит статус Widely Available. Но это всё ещё новая возможность, не все версии браузеров это поддерживают. Поэтому код нужно предварительно обработать.

Необходимость инструментов. Вытекает из предыдущего пункта. Для обработки кода понадобятся инструменты сборки. По возможности я придерживаюсь подхода с минимизацией цепочки инструментов и уменьшения этапов обработки.

Тем не менее, вложенность удобна для медиа-запросов, директив @starting-style, @counter-style и @property, псевдо-классов и псевдо-элементов. Вложенность также полезна для объединения и группировки стилей.

#css
  • 👍 19
  • 🌚 3
  • 👎 2
  • 🤔 2
  • ❤ 1
  • 😐 1
More from @alexnozer_dev
  1. Sep 23, 2026Images Preview На некоторых сайтах, где надо показывать изображения в высоком качестве, дл…
  2. Sep 21, 2026Реализация пользовательских атрибутов Под конец прошлого года я рассказывал об API пользов…
  3. Sep 14, 2026Подклассы Event вместо CustomEvent Многие библиотеки предоставляют систему событий в качес…
  4. Sep 11, 2026Эволюция стилей в темах Shopify Адам Ватан на днях поделился новостью, что Shopify выкупил…
  5. Sep 9, 2026Persistent Widgets Многие сайты не должны быть SPA. Но иногда эта архитектура продиктована…
  6. Sep 7, 2026Processing Instructions и маркеры В DOM всё представлено в виде узлов (Node) разных типов.…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →