CSS 계단식 스타일과 상속 레벨 6

W3C 작업 초안,

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2024/WD-css-cascade-6-20240906/
최신 공개 버전:
https://www.w3.org/TR/css-cascade-6/
편집자 초안:
https://drafts.csswg.org/css-cascade-6/
이전 버전:
역사:
https://www.w3.org/standards/history/css-cascade-6/
피드백:
CSSWG 이슈 저장소
명세 내 인라인
편집자:
Elika J. Etemad / fantasai (Apple)
Miriam E. Suzanne (초청 전문가)
Tab Atkins Jr. (Google)
명세에 대한 수정 제안:
GitHub 편집기

요약

이 CSS 모듈은 스타일 규칙을 정리하고 모든 요소의 모든 속성에 값을 할당하는 방법을 설명합니다. 계단식과 상속을 통해 모든 요소의 모든 속성에 값이 전파됩니다.

이번 단계에서 새롭게 추가된 것은 § 2.5 스타일 범위 지정: @scope 규칙입니다.

CSS는 구조화된 문서(HTML, XML 등)를 화면, 종이 등에 렌더링하는 방식을 기술하는 언어입니다.

이 문서의 상태

이 섹션은 문서가 발행된 시점의 상태를 설명합니다. 현재 W3C 발행 목록과 이 기술 보고서의 최신 개정판은 W3C 기술 보고서 인덱스 https://www.w3.org/TR/에서 확인할 수 있습니다.

이 문서는 CSS 작업 그룹에서 작업 초안으로 권고안 트랙을 사용하여 발행되었습니다. 작업 초안으로 발행되었다고 해서 W3C 및 회원의 지지를 의미하지는 않습니다.

이 문서는 초안이며 언제든지 다른 문서에 의해 업데이트, 대체 또는 폐기될 수 있습니다. 진행 중인 작업 외의 용도로 이 문서를 인용하는 것은 적절하지 않습니다.

피드백은 GitHub에 이슈 등록(권장)으로 보내주시고, 제목에 명세 코드 “css-cascade”를 포함해 주세요. 예시: “[css-cascade] …코멘트 요약…”. 모든 이슈와 코멘트는 아카이브에 저장됩니다. 또는, 피드백은 (아카이브된) 공개 메일링 리스트 www-style@w3.org로 보낼 수도 있습니다.

이 문서는 2023년 11월 3일 W3C 프로세스 문서에 의해 관리됩니다.

이 문서는 W3C 특허 정책에 따라 운영되는 그룹에서 작성되었습니다. W3C는 해당 그룹의 결과물과 관련된 공개 특허 공개 목록을 유지하며, 해당 페이지에는 특허 공개 방법도 안내되어 있습니다. 한 개인이 자신이 알고 있는 특허가 필수 청구항을 포함한다고 판단할 경우, W3C 특허 정책 6절에 따라 정보를 공개해야 합니다.

1. 소개 및 누락된 섹션

이 문서는 CSS 계단식 스타일과 상속 5단계와의 차이 명세입니다. 현재는 탐색적 작업 초안입니다: 구현을 진행 중이라면 5단계를 참고하세요. 이 초안이 CR 단계에 도달하면 5단계의 내용을 병합할 예정입니다.

2. 계단식(Cascading)

계단식은 주어진 요소의 특정 속성에 대해 선언된 값의 무순서 목록을 받아, 아래에 설명된 선언의 우선순위에 따라 정렬하고, 단일 계단식 값을 산출합니다.

2.1. 계단식 정렬 순서

계단식은 선언을 우선순위가 높은 기준 순으로 아래 기준에 따라 정렬합니다:

출처와 중요성
선언의 출처는 어디서 왔는지에 따라 결정되며, 중요성!important로 선언되었는지 여부에 따라 결정됩니다(아래 참조). 다양한 출처의 우선순위는 다음과 같습니다(내림차순):
  1. 트랜지션 선언 [css-transitions-1]
  2. 중요한 사용자 에이전트 선언
  3. 중요한 사용자 선언
  4. 중요한 저자 선언
  5. 애니메이션 선언 [css-animations-1]
  6. 일반 저자 선언
  7. 일반 사용자 선언
  8. 일반 사용자 에이전트 선언

이 목록에서 앞부분 출처의 선언이 뒷부분 출처의 선언보다 우선합니다.

컨텍스트
문서 언어는 서로 다른 캡슐화 컨텍스트에서 비롯된 선언을 혼합할 수 있습니다. 예를 들어 트리 컨텍스트의 중첩(Shadow DOM의 섀도우 트리 등). [DOM]

서로 다른 캡슐화 컨텍스트에서 나온 두 선언을 비교할 때, 일반 규칙은 외부 컨텍스트의 선언이 우선하고, 중요한 규칙은 내부 컨텍스트의 선언이 우선합니다. 이때 [DOM] 트리 컨텍스트섀도우 포함 트리 순서로 중첩된 것으로 간주합니다.

참고: 일반 선언이 캡슐화 컨텍스트에 속할 경우 외부 컨텍스트에서 쉽게 덮어쓸 수 있는 기본값을 지정할 수 있고, 중요한 선언이 캡슐화 컨텍스트에 속할 경우 외부 컨텍스트에서 덮어쓸 수 없는 강제 요구사항을 지정할 수 있습니다.

스타일 속성
일반중요한 선언 각각에 대해, 요소에 직접 부착된 선언(예: style 속성의 내용) 은 스타일 규칙 셀렉터를 통해 간접적으로 매핑된 선언보다 같은 중요성에서 더 높은 우선순위를 가집니다.
레이어
출처컨텍스트 내의 선언계단식 레이어에 명시적으로 할당될 수 있습니다. 이 단계에서 명시적으로 레이어가 할당되지 않은 선언은 암시적 마지막 레이어에 추가됩니다.

계단식 레이어(선언과 마찬가지로)는 등장 순서대로 정렬되며, § 2.4.1 레이어 순서 참조. 서로 다른 레이어에 속한 선언을 비교할 때, 일반 규칙에서는 레이어 순서에서 가장 마지막에 위치한 선언이 우선하고, 중요한 규칙에서는 가장 처음에 위치한 선언이 우선합니다.

참고: 이것은 일반중요한 출처 우선순위와 동일한 논리를 따르므로, !important 플래그는 두 상황 모두에서 "오버라이드" 용도를 유지합니다.

특이성(Specificity)
Selectors 모듈 [SELECT]은 셀렉터의 특이성을 계산하는 방법을 설명합니다. 각 선언은 해당 스타일 규칙의 특이성과 동일한 특이성을 가집니다. 특이성이 가장 높은 선언이 우선합니다.
범위 근접성
서로 다른 범위 루트가 있는 스타일 규칙의 선언을 비교할 때, 범위 루트범위 지정 스타일 규칙 대상 사이의 세대 또는 형제 요소 hop 수가 가장 적은 선언이 우선합니다. 이때 범위 루트가 없는 스타일 규칙은 무한 hop로 간주합니다.
등장 순서
문서상 마지막 선언이 우선합니다. 이때:
  • 스타일 시트는 최종 CSS 스타일 시트와 동일한 순서로 정렬됩니다.
  • import된 스타일 시트의 선언은 해당 스타일 시트가 @import 규칙 위치에 대체된 것처럼 정렬됩니다.
  • 호스트 문서 언어가 결정한 링크 순서대로 독립적으로 연결된 스타일 시트의 선언들은 연결 순서대로 이어붙인 것처럼 처리합니다.
  • 스타일 속성의 선언은 해당 요소의 문서상 등장 순서대로 정렬되며, 모든 스타일 시트 이후에 위치합니다. [CSSSTYLEATTR]

계단식의 결과는 각 요소의 각 속성에 대한 (비어있을 수도 있는) 선언된 값의 정렬된 목록입니다.

2.2. 계단식 출처

CSS Cascading 5 § 6.2 계단식 출처

계단식 출처

2.3. 중요 선언: !important 어노테이션

CSS Cascading 5 § 6.3 중요 선언: !important 어노테이션

중요한 일반

2.4. 계단식 레이어

CSS Cascading 5 § 6.4 계단식 레이어

2.4.1. 레이어 순서

CSS Cascading 5 § 6.4.3 레이어 순서

2.5. 스타일 범위 지정: @scope 규칙

범위는 셀렉터가 좀 더 타겟팅된 매칭을 할 수 있도록 사용하는 문서의 서브트리 또는 프래그먼트입니다. 범위는 다음과 같이 결정하여 형성합니다:

다음 조건을 만족하면 요소는 범위 안에 있음으로 간주합니다:

참고: 섀도우 캡슐화와 달리, 이는 DOM에서 섀도우 호스트중첩된 섀도우 트리 사이의 1:1 관계를 설명하지만, 동일한 요소에 대해 여러 겹치는 범위를 정의할 수 있습니다.

범위 지정 스타일은 CSS에서 @scope 블록 at-규칙을 사용하여 기술합니다. 이는 범위 루트와 선택적 범위 한계를 선언하며, 스타일 규칙 집합과 연결됩니다.

예를 들어, 저자는 넓게 적용되는 색상 스킴 범위를 두고, 더 좁은 범위의 디자인 패턴(예: 미디어 오브젝트)이 그 위에 겹칠 수 있습니다. @scope 규칙의 셀렉터들은 범위 루트와 선택적 범위 한계 요소를 설정하며, 중첩된 셀렉터들은 결과 범위 안에 있는 요소에만 매칭됩니다:
@scope (.light-scheme) {
  /* light-scheme 내의 링크만 매칭 */
  a { color: darkmagenta; }
}

@scope (.dark-scheme) {
  /* dark-scheme 내의 링크만 매칭 */
  a { color: plum; }
}

@scope (.media-object) {
  /* media-object 내의 author 이미지만 매칭 */
  .author-image { border-radius: 50%; }
}
범위 한계를 지정하여, 저자는 더 깊이 중첩된 자손에 대한 매칭을 제한할 수 있습니다. 예시:
@scope (.media-object) to (.content > *) {
  img { border-radius: 50%; }
  .content { padding: 1em; }
}

img 셀렉터는 DOM 프래그먼트 내에서 .media-object로 시작하여 .content 클래스의 자식까지 모든 자손을 포함하는 구조에서만 이미지 태그를 매칭합니다.

범위 한계를 범위 지정 셀렉터의 정의에 추가해야 할까요?

2.5.1. @scope의 효과

@scope at-규칙은 그 안에 포함된 스타일 규칙에 대해 세 가지 주요 효과를 가집니다:

참고: Nesting과 달리, @scope 규칙 내의 셀렉터는 @scope 프렐류드의 부모 셀렉터 특이성을 상속하지 않습니다.

아래 셀렉터들은 동일한 특이성 (0,0,1)을 가집니다:
@scope (#hero) {
  img { border-radius: 50%; }
}

:where(#hero) img { border-radius: 50%; }

#hero 셀렉터의 추가 특이성은 범위 지정 셀렉터의 특이성에 적용되지 않습니다. 그러나 한 img 셀렉터가 범위 지정된 경우, 해당 셀렉터는 범위 근접성이 적용되어 계단식에서 더 높은 우선순위를 가집니다.

기존 도구들 중 상당수는 "범위 지정 스타일"을 특정 범위 또는 "단일 파일 컴포넌트" 내의 모든 요소에 고유 클래스 또는 속성을 부여함으로써 구현합니다. 아래 예시에서는 두 개의 범위(main-componentsub-component)가 있고, 각 요소들은 data-scope 속성을 통해 한 범위 또는 두 범위 모두에 속함을 표시합니다:
<section data-scope="main-component">
  <p data-scope="main-component">...<p>

  <!-- sub-component 루트는 두 범위 모두에 속함 -->
  <section data-scope="main-component sub-component">
    <!-- 자식들은 내부 범위에만 속함 -->
    <p data-scope="sub-component">...<p>
  </section>
</section>

이러한 커스텀 범위 속성들은 CSS의 모든 셀렉터에 추가됩니다:

p[data-scope~='main-component'] { color: red; }
p[data-scope~='sub-component'] { color: blue; }

/* 두 섹션 모두 외부 범위에 속함 */
section[data-scope~='main-component'] { background: snow; }

/* 내부 섹션은 내부 범위에도 속함 */
section[data-scope~='sub-component'] { color: ghostwhite; }

@scope 규칙을 사용하면, 저자와 도구들은 고유 속성이나 클래스를 범위 루트에만 적용하여 유사한 동작을 구현할 수 있습니다:

<section data-scope="main-component">
  <p>...<p>
  <section data-scope="sub-component">
    <p>...<p>
  </section>
</section>

그 후 클래스나 속성을 사용해 상한과 하한을 모두 설정할 수 있습니다. 하한 셀렉터에 매칭된 요소는 결과 범위에서 제외되어, 저자는 기본적으로 겹치지 않는 범위를 생성할 수 있습니다:

@scope ([data-scope='main-component']) to ([data-scope]) {
  p { color: red; }

  /* 외부 섹션만 외부 범위에 포함됨 */
  section { background: snow; }
}

@scope ([data-scope='sub-component']) to ([data-scope]) {
  p { color: blue; }

  /* 내부 섹션은 내부 범위에만 포함됨 */
  section { color: ghostwhite; }
}

하지만 저자는 자식 결합자와 전체 선택자를 사용해 범위 경계를 겹치게 지정할 수 있으며, 이 경우 내부 범위 루트가 두 범위 모두에 속하게 됩니다:

@scope ([data-scope='main-component']) to ([data-scope] > *) {
  p { color: red; }

  /* 두 섹션 모두 외부 범위에 속함 */
  section { background: snow; }
}

2.5.2. @scope의 문법

@scope 규칙의 문법은 다음과 같습니다:

@scope [(<scope-start>)]? [to (<scope-end>)]? {
  <rule-list>
}

설명:

의사 요소(pseudo-elements)범위 루트범위 한계가 될 수 없습니다. <scope-start><scope-end> 내에서 사용하면 무효입니다.

2.5.3. 범위 지정 스타일 규칙

범위 지정 스타일 규칙은 비범위 규칙과 아래와 같은 차이점이 있습니다:

기본적으로, 범위 지정 스타일 규칙의 셀렉터는 상대 셀렉터이며, 범위 루트자손 결합자가 암시적으로 앞에 붙습니다. 아래 셀렉터들은 동일한 요소를 매칭합니다:
@scope (#my-component) {
  p { color: green; }
  :scope p { color: green; }
}

저자는 명시적 결합자를 추가하여 암시적 관계를 조정할 수 있습니다:

@scope (#my-component) {
  > p { color: green; }
  :scope > p { color: green; }
}

저자는 범위 루트를 타겟하거나 셀렉터 내에서 명시적으로 위치시킬 수 있으며, :scope 또는 &를 셀렉터에 포함시킬 수 있습니다:

@scope (#my-component) {
  :scope { border: thin solid; }
  & { border: thin solid; }

  main :scope p { color: green; }
  main & p { color: green; }
}

:scope 또는 & 셀렉터 모두 범위 루트를 참조할 수 있지만, 이 맥락에서는 서로 다른 의미를 갖습니다:

셀렉터 매칭의 차이점

:scope 셀렉터는 범위 루트 자체만 매칭하고, & 셀렉터는 <scope-start> 셀렉터 목록에 매칭되는 모든 요소를 매칭할 수 있습니다.

셀렉터 특이성의 차이점

:scope 셀렉터는 다른 의사 클래스와 동일한 특이성을 갖지만, & 셀렉터는 <scope-start> 내 가장 특이성이 높은 셀렉터와 동일한 특이성을 갖습니다.

2.5.4. 범위 루트와 한계 식별

@scope 규칙은 아래와 같이 하나 이상의 범위를 생성합니다:

범위 루트 찾기

<scope-start>에 매칭되는 각 요소에 대해, 해당 요소를 범위범위 루트로 사용하여 범위를 생성합니다. <scope-start>가 지정되지 않은 경우, 범위 루트는 해당 스타일시트 소유 노드부모 요소입니다. (해당 요소가 없고, 포함하는 노드 트리섀도우 트리라면, 범위 루트섀도우 호스트입니다. 그렇지 않으면, 범위 루트는 포함된 노드 트리루트입니다.) <scope-start>에서 :scope 또는 & 셀렉터는 바깥 컨텍스트에서 정의된 대로 해석됩니다.

범위 한계 찾기

범위 루트로 생성된 각 범위에 대해, 해당 범위 한계범위 안에 있음이며 <scope-end>에 매칭되는 모든 요소로 설정됩니다. :scope&범위 지정 스타일 규칙과 동일하게 해석됩니다.

저자는 style 요소에서 <scope-start> 셀렉터를 생략함으로써 로컬 범위를 지정할 수 있습니다. 예시:
<div>
  <style>
    @scope {
      p { color: red; }
    }
  </style>
  <p>this is red</p>
</div>
<p>not red</p>

이는 아래와 동일합니다:

<div id="foo">
  <style>
    @scope (#foo) {
      p { color: red; }
    }
  </style>
  <p>this is red</p>
</div>
<p>not red</p>
범위 한계:scope 의사 클래스(pseudo-class)를 사용하여 범위 루트와의 특정 관계를 요구할 수 있습니다:
/* .content는 :scope의 직접 자식일 때만 한계로 간주됨 */
@scope (.media-object) to (:scope > .content) { ... }

범위 한계:scope를 사용하여 범위 루트 외부의 요소도 참조할 수 있습니다. 예시:

/* .content는 :scope가 .sidebar 내부에 있을 때만 한계로 간주됨 */
@scope (.media-object) to (.sidebar :scope .content) { ... }

2.5.5. 범위 중첩

@scope 규칙은 중첩될 수 있습니다. 이 경우, 중첩 스타일 규칙과 마찬가지로, 내부 @scope의 프렐류드 셀렉터(그 범위를 정의하는 셀렉터)는 외부 셀렉터에 의해 범위가 지정됩니다.

참고: 결과적으로 scope에 대한 추가로 중첩된 scoped style rules는 외부 및 내부 @scope 규칙에 의해 실질적으로 제한되지만, scoping root는 가장 안쪽의 @scope에 의해 정의됩니다. scope proximityscoped style rule subjectscoping root 간의 거리를 측정하기 때문에, @scope의 가장 안쪽만이 nested @scope rulesscope proximity를 결정하는 데 중요합니다.

범위 근접성 계산이 범위 중첩에 영향을 받아야 할까요? [이슈 #10795]

@scope 규칙을 다른 @scope 규칙이나 셀렉터 안에 중첩시키면, <scope-start> 셀렉터는 중첩 컨텍스트에 상대적으로 해석되고, <scope-end> 및 모든 범위 지정 스타일 규칙범위 루트에 상대적으로 해석됩니다. 예를 들어 아래 코드는:
@scope (.parent-scope) {
  @scope (:scope > .child-scope) to (:scope .limit) {
    :scope .content {
      color: red;
    }
  }
}

다음과 동일합니다:

@scope (.parent-scope > .child-scope) to (.parent-scope > .child-scope .limit) {
  .parent-scope > .child-scope .content {
    color: red;
  }
}

전역 이름 정의 at-규칙 (@keyframes, @font-face, @layer 등)은 @scope 내부에 정의되어도 유효하지만, 이를 감싸는 @scope 규칙의 범위에는 적용되지 않으며 별도의 영향도 받지 않습니다. 다만, 해당 규칙에 포함된 스타일 규칙(예: @layer 내부)은 범위 지정됨입니다.

2.6. CSS가 아닌 표현 힌트의 우선순위

CSS 계단식 5 § 6.4 계단식 레이어

3. CSSOM

3.1. CSSScopeRule 인터페이스

CSSScopeRule 인터페이스는 @scope 규칙을 나타냅니다:

[Exposed=Window]
interface CSSScopeRule : CSSGroupingRule {
  readonly attribute CSSOMString? start;
  readonly attribute CSSOMString? end;
};
start 타입 CSSOMString
start 속성은 규칙의 <scope-start>를 (괄호 제외) 직렬화한 결과를 반환하며, <scope-start>가 없으면 null을 반환합니다.
end 타입 CSSOMString
end 속성은 규칙의 <scope-end>를 (괄호 제외) 직렬화한 결과를 반환하며, <scope-end>가 없으면 null을 반환합니다.

4. 변경 사항

이 부록은 참고용(informative)입니다.

4.1. 2023년 3월 21일 작업 초안 이후 변경점

2023년 3월 21일 작업 초안 이후 주요 변경점은 다음과 같습니다:

4.2. 2021년 12월 21일 첫 공개 작업 초안 이후 변경점

2021년 12월 21일 첫 공개 작업 초안 이후 주요 변경점은 다음과 같습니다:

4.3. 5단계 이후의 추가 사항

5단계 이후 추가된 기능은 다음과 같습니다:

4.4. 4단계 이후의 추가 사항

4단계 이후 추가된 기능은 다음과 같습니다:

4.5. 3단계 이후의 추가 사항

3단계 이후 추가된 기능은 다음과 같습니다:

4.6. 2단계 이후의 추가 사항

2단계 이후 추가된 기능은 다음과 같습니다:

감사의 글

David Baron, Tantek Çelik, Keith Grant, Giuseppe Gurgone, Theresa O’Connor, Florian Rivoal, Noam Rosenthal, Simon Sapin, Jen Simmons, Nicole Sullivan, Lea Verou, 그리고 Boris Zbarsky 가 이 명세에 기여했습니다.

5. 개인정보 보호 고려 사항

6. 보안 고려 사항

적합성(Conformance)

문서 관례

적합성 요구사항은 설명적 단언과 RFC 2119 용어의 조합으로 표현됩니다. 규범 부분에서 “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, “OPTIONAL”과 같은 주요 용어는 RFC 2119에서 설명된 대로 해석해야 합니다. 하지만 가독성을 위해 이 명세에서는 해당 단어를 모두 대문자로 표기하지 않습니다.

이 명세의 모든 텍스트는 명시적으로 비규범적임을 표시한 섹션, 예시, 참고를 제외하고 규범적입니다. [RFC2119]

이 명세의 예시는 “예를 들어(for example)”라는 단어로 시작하거나 class="example"와 같이 규범 텍스트와 구분되어 소개됩니다.

이것은 참고용 예시입니다.

참고 문구는 “참고(Note)”로 시작하며 class="note"와 같이 규범 텍스트와 구분됩니다.

참고, 이것은 참고용 문구입니다.

권고 사항은 특별한 주의를 불러일으키도록 스타일링된 규범 섹션으로, <strong class="advisement">로 구분되며 다음과 같습니다: UA는 반드시 접근 가능한 대안을 제공해야 합니다.

적합성 클래스

이 명세에 대한 적합성은 세 가지 적합성 클래스에 대해 정의됩니다:

스타일 시트
CSS 스타일 시트.
렌더러
스타일 시트의 의미를 해석하고 해당 스타일 시트를 사용하는 문서를 렌더링하는 UA.
저작 도구
스타일 시트를 작성하는 UA.

스타일 시트가 이 명세에 적합하려면, 이 모듈에서 정의된 문법을 사용하는 모든 구문은 일반 CSS 문법 및 각 기능의 개별 문법에 따라 유효해야 합니다.

렌더러가 이 명세에 적합하려면, 해당 스타일 시트를 적절한 명세에 따라 해석하는 것과 더불어, 이 명세에서 정의한 모든 기능을 올바르게 파싱하고 문서를 적절하게 렌더링해야 합니다. 하지만 UA가 장치의 제한으로 인해 문서를 올바르게 렌더링하지 못하는 경우, UA가 비적합하다고 볼 수 없습니다. (예: UA가 단색 모니터에서 색상을 렌더링할 필요는 없습니다.)

저작 도구가 이 명세에 적합하려면, 일반 CSS 문법 및 이 모듈 내 각 기능의 개별 문법에 따라 구문적으로 올바른 스타일 시트를 작성하고, 이 모듈에서 설명한 스타일 시트의 모든 기타 적합성 요구사항을 충족해야 합니다.

부분 구현

저자가 전방 호환 파싱 규칙을 활용해 폴백 값을 지정할 수 있도록, CSS 렌더러는 지원하지 않는 at-규칙, 속성, 속성 값, 키워드 등 모든 구문적 구조를 무효(그리고 적절히 무시)로 처리해야 합니다. 특히, 사용자 에이전트는 지원하지 않는 구성 값만 선택적으로 무시하고 지원하는 값만 적용하는 방식으로 여러 값이 있는 선언을 처리해서는 안 됩니다. 어떤 값이라도 무효(지원하지 않는 값은 반드시 무효)로 간주되면 CSS에서는 해당 선언 전체를 무시해야 합니다.

불안정 및 독점 기능의 구현

향후 안정적인 CSS 기능과 충돌을 피하기 위해, CSSWG는 모범 사례를 따라 불안정 기능 및 독점 확장을 구현할 것을 권장합니다.

비실험적 구현

명세가 후보 권고(Candidate Recommendation) 단계에 도달하면 비실험적 구현이 가능하며, 구현자는 명세에 따라 올바르게 구현되었음을 입증할 수 있는 CR 단계 기능에 대해 접두어 없는(unprefixed) 구현을 공개해야 합니다.

CSS의 상호운용성을 유지하기 위해, CSS 작업 그룹은 비실험적 CSS 렌더러가 접두어 없는 구현을 공개하기 전에 W3C에 구현 보고서(필요시 해당 테스트 케이스 포함)를 제출할 것을 요청합니다. W3C에 제출된 테스트 케이스는 CSS 작업 그룹의 검토와 수정이 이루어질 수 있습니다.

테스트 케이스 및 구현 보고서 제출에 관한 추가 정보는 CSS 작업 그룹 웹사이트 https://www.w3.org/Style/CSS/Test/에서 확인할 수 있습니다. 문의는 public-css-testsuite@w3.org 메일링 리스트로 보내면 됩니다.

색인

이 명세에서 정의된 용어

참조로 정의된 용어

참고문헌

규범적 참고문헌

[CSS-ANIMATIONS-1]
David Baron; 외. CSS Animations Level 1. 2023년 3월 2일. WD. URL: https://www.w3.org/TR/css-animations-1/
[CSS-CASCADE-4]
Elika Etemad; Tab Atkins Jr.. CSS 계단식 및 상속 4단계. 2022년 1월 13일. CR. URL: https://www.w3.org/TR/css-cascade-4/
[CSS-CASCADE-5]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS 계단식 및 상속 5단계. 2022년 1월 13일. CR. URL: https://www.w3.org/TR/css-cascade-5/
[CSS-CONDITIONAL-5]
Chris Lilley; David Baron; Elika Etemad. CSS 조건부 규칙 모듈 5단계. 2024년 7월 23일. WD. URL: https://www.w3.org/TR/css-conditional-5/
[CSS-FONTS-5]
Chris Lilley. CSS 폰트 모듈 5단계. 2024년 2월 6일. WD. URL: https://www.w3.org/TR/css-fonts-5/
[CSS-NESTING-1]
Tab Atkins Jr.; Adam Argyle. CSS 중첩 모듈. 2023년 2월 14일. WD. URL: https://www.w3.org/TR/css-nesting-1/
[CSS-SCOPING-1]
Tab Atkins Jr.; Elika Etemad. CSS 범위 지정 모듈 1단계. 2014년 4월 3일. WD. URL: https://www.w3.org/TR/css-scoping-1/
[CSS-SYNTAX-3]
Tab Atkins Jr.; Simon Sapin. CSS 문법 모듈 3단계. 2021년 12월 24일. CR. URL: https://www.w3.org/TR/css-syntax-3/
[CSS-TRANSITIONS-1]
David Baron; 외. CSS 트랜지션. 2018년 10월 11일. WD. URL: https://www.w3.org/TR/css-transitions-1/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS 값 및 단위 모듈 3단계. 2024년 3월 22일. CR. URL: https://www.w3.org/TR/css-values-3/
[CSS21]
Bert Bos; 외. 계단식 스타일 시트 2.1 단계(CSS 2.1) 명세. 2011년 6월 7일. REC. URL: https://www.w3.org/TR/CSS21/
[CSSOM-1]
Daniel Glazman; Emilio Cobos Álvarez. CSS 객체 모델(CSSOM). 2021년 8월 26일. WD. URL: https://www.w3.org/TR/cssom-1/
[CSSSTYLEATTR]
Tantek Çelik; Elika Etemad. CSS 스타일 속성. 2013년 11월 7일. REC. URL: https://www.w3.org/TR/css-style-attr/
[DOM]
Anne van Kesteren. DOM 표준. Living Standard. URL: https://dom.spec.whatwg.org/
[FETCH]
Anne van Kesteren. Fetch 표준. Living Standard. URL: https://fetch.spec.whatwg.org/
[RFC2119]
S. Bradner. RFC에서 요구 수준을 나타내는 키워드. 1997년 3월. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[SELECT]
Tantek Çelik; 외. 셀렉터 3단계. 2018년 11월 6일. REC. URL: https://www.w3.org/TR/selectors-3/
[SELECTORS-4]
Elika Etemad; Tab Atkins Jr.. 셀렉터 4단계. 2022년 11월 11일. WD. URL: https://www.w3.org/TR/selectors-4/
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL 표준. Living Standard. URL: https://webidl.spec.whatwg.org/

참고용 참고문헌

[HTML]
Anne van Kesteren; 외. HTML 표준. Living Standard. URL: https://html.spec.whatwg.org/multipage/

IDL 색인

[Exposed=Window]
interface CSSScopeRule : CSSGroupingRule {
  readonly attribute CSSOMString? start;
  readonly attribute CSSOMString? end;
};

이슈 색인

이것은 CSS 계단식 스타일과 상속 5단계와의 차이 명세입니다. 현재는 탐색적 작업 초안입니다: 구현을 진행 중이라면 5단계를 참고하세요. 이 초안이 CR 단계에 도달하면 5단계의 내용을 병합할 예정입니다.
CSS 계단식 5 § 6.2 계단식 출처
CSS 계단식 5 § 6.3 중요 선언: !important 어노테이션
CSS 계단식 5 § 6.4 계단식 레이어
CSS 계단식 5 § 6.4.3 레이어 순서
범위 한계를 범위 지정 셀렉터의 정의에 추가해야 할까요?
범위 근접성 계산이 범위 중첩에 영향을 받아야 할까요? [이슈 #10795]
CSS 계단식 5 § 6.4 계단식 레이어