Spec-Zone.ru › CSS

Вложенные правила CSS at-rules

Любое правило at-rule, тело которого содержит правила стилей, может быть вложено в другое правило стиля с помощью вложенности CSS. Правила стиля, вложенные внутри правил at-rule, берут определение вложенного селектора от ближайшего родительского правила стиля. Свойства могут быть напрямую включены внутри вложенного правила at-rule, действуя так, как будто они были вложены в & {...} блок.

Правила at-rule, которые могут быть вложены

  • @media
  • @supports
  • @layer
  • @scope
  • @container

Примеры

Вложение правила @media

В этом примере показаны три блока CSS. Первый блок демонстрирует типичное вложение правила at-rule, второй — расширенный способ записи вложения, как его анализирует браузер, а третий — эквивалент без вложенности.

Вложенный CSS

.foo {
  display: grid;
  @media (orientation: landscape) {
    grid-auto-flow: column;
  }
}

Расширенный вложенный CSS

.foo {
  display: grid;
  @media (orientation: landscape) {
    & {
      grid-auto-flow: column;
    }
  }
}

Эквивалент без вложенности

.foo {
  display: grid;
}

@media (orientation: landscape) {
  .foo {
    grid-auto-flow: column;
  }
}

Многократное вложение правил @media

Правила at-rule могут быть вложены друг в друга. Ниже показан пример этого и как это можно записать без вложенности.

Вложенные правила at-rules

.foo {
  display: grid;
  @media (orientation: landscape) {
    grid-auto-flow: column;
    @media (min-width: 1024px) {
      max-inline-size: 1024px;
    }
  }
}

Эквивалент без вложенности

.foo {
  display: grid;
}
@media (orientation: landscape) {
  .foo {
    grid-auto-flow: column;
  }
}
@media (orientation: landscape) and (min-width: 1024px) {
  .foo {
    max-inline-size: 1024px;
  }
}

Вложение уровней каскада (@layer)

Уровни каскада могут быть вложены для создания дочерних уровней. Они объединены с помощью . (точки).

Определение родительского и дочернего уровней

Мы начинаем с определения именованных уровней каскада до их использования без каких-либо назначений стилей.

@layer base {
  @layer support;
}

Назначение правил уровням с вложенностью

Здесь селектор .foo назначает свои правила базовому @layer. Вложенный селектор support @layer создает подслой base.support, и вложенный селектор & используется для создания правил для селектора .foo .bar.

.foo {
  @layer base {
    block-size: 100%;
    @layer support {
      & .bar {
        min-block-size: 100%;
      }
    }
  }
}

Эквивалент без вложенности

@layer base {
  .foo {
    block-size: 100%;
  }
}
@layer base.support {
  .foo .bar {
    min-block-size: 100%;
  }
}

См. также

  • Модуль CSS вложенности
  • & вложенный селектор
  • Использование вложенности CSS
  • Вложенность и специфичность
  • Вложенные запросы для контейнеров

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_nesting/Nesting_at-rules

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API