CSS 중첩 @-규칙

CSS 중첩을 이용하면 어떠한 @-규칙 이든 다른 스타일 규칙 안에 또 다른 중첩 스타일을 가질 수 있습니다. @-규칙 내에 중첩된 스타일 규칙은 그것의 가장 가까운 조상으로부터 스타일 중첩 선택자 정의를 가져옵니다. 속성은 직접적으로 @-규칙 안에 포함될 수 있는데, 이는 마치 & {...} 블록 안에 중첩된 것과 같은 동작을 합니다.

중첩 가능한 @-규칙들

예제

중첩 @media @-규칙

이 예제에서는 CSS 블록들을 확인할 수 있습니다. 처음 블록은 전형적인 @-규칙 중첩을 사용하는 방법을, 두번째 블록은 브라우저가 중첩을 파싱할 때 중첩을 작성하는 확장된 방법을, 그리고 마지막 블록은 중첩되지 않은 것과 동일한 형태를 보여줍니다.

중첩 CSS

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

확장된 중첩 CSS

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

중첩되지 않은 형태

css
.foo {
  display: grid;
}

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

다중 중첩 @media @-규칙들

@-규칙은 다른 @-규칙에 중첩될 수 있습니다. 아래에서 이러한 예제를 확인할 수 있으며, 중첩 없이 작성된 방식도 함께 확인할 수 있습니다.

중첩 @-규칙들

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

중첩되지 않은 형태

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

중첩 종속 계층 (@layer)

종속 계측자식 계층 생성 과 중첩될 수 있습니다. 이들은 .(온점) 으로 결합됩니다.

부모 & 자식 계층 정의하기

스타일을 지정하고 그것을 사용하기 전에 명명된 종속 계층을 정의하는 것부터 알아보겠습니다.

css
@layer base {
  @layer support;
}

중첩 계층에 규칙 지정하기

여기 .foo 선택자는 자신의 규칙을 base @layer 에 할당합니다. 중첩된 support @layerbase.support 하위 레이어를 생성하고, & 중첩 선택자는 .foo .bar 규칙을 생성하는 데에 사용되었습니다.

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

중첩이 사용되지 않은 형태

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

같이 보기