CSS 조건부 규칙 모듈 레벨 4

W3C 후보 권고안 초안,

이 문서에 대한 추가 정보
이 버전:
https://www.w3.org/TR/2025/CRD-css-conditional-4-20250904/
최신 공개 버전:
https://www.w3.org/TR/css-conditional-4/
편집자 초안:
https://drafts.csswg.org/css-conditional-4/
이전 버전:
변경 기록:
https://www.w3.org/standards/history/css-conditional-4/
구현 보고서:
https://wpt.fyi/results/css/css-conditional
테스트 스위트:
https://wpt.fyi/results/css/css-conditional
https://wpt.fyi/results/css/css-conditional/
피드백:
CSSWG 이슈 저장소
명세 내 인라인
편집자:
L. David Baron (Google)
Elika J. Etemad / fantasai (Apple)
Chris Lilley (W3C)
이 명세에 편집 제안:
GitHub 편집자
델타 명세:

요약

이 모듈은 스타일 시트의 일부를 조건부로 처리하기 위한 CSS의 기능을 포함하고 있으며, 스타일 시트가 적용되는 프로세서의 역량이나 환경에 따라 동작합니다. CSS Conditional 3 [css-conditional-3]의 기능을 포함하고 확장하며, 새로운 selector() 표기법을 통해 특정 셀렉터 [SELECTORS-4] 지원 여부를 질의할 수 있도록 supports 쿼리 기능을 추가합니다.

CSS는 구조화된 문서(HTML, XML 등)의 렌더링을 화면, 인쇄물 등에서 기술하기 위한 언어입니다.

이 문서의 상태

이 섹션은 출판 시점의 이 문서 상태를 설명합니다. 최신 W3C 출판물 목록과 이 기술 보고서의 최신 개정판은 W3C 표준 및 초안 색인에서 확인할 수 있습니다.

이 문서는 CSS 작업 그룹에 의해 후보 권고안 초안으로 권고안 트랙을 통해 출판되었습니다. 후보 권고안으로 출판된 것은 W3C 및 회원의 지지를 의미하지 않습니다. 후보 권고안 초안은 이전 후보 권고안에서 작업 그룹이 다음 후보 권고안 스냅샷에 포함하려는 변경사항을 통합합니다.

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

피드백은 GitHub 이슈 등록(권장), 제목에 “css-conditional” 사양 코드를 포함하여 “[css-conditional] …코멘트 요약…” 형식으로 제출해 주세요. 모든 이슈와 코멘트는 아카이브됩니다. 또는 피드백은 (아카이브됨) 공개 메일링 리스트 www-style@w3.org로 보낼 수 있습니다.

이 문서는 2025년 8월 18일 W3C 프로세스 문서의 적용을 받습니다.

이 문서는 W3C 특허 정책에 따라 운영되는 그룹에서 작성되었습니다. W3C는 그룹 산출물과 관련하여 공개된 특허 공개 목록을 유지합니다; 해당 페이지에는 특허 공개 방법도 포함되어 있습니다. 특정 특허에 대한 실제 지식을 가진 개인은 필수적 청구항이 있다고 판단될 경우, W3C 특허 정책 6절에 따라 정보를 공개해야 합니다.

1. 소개

3레벨의 기능들은 아직 [css-conditional-3]에서 정의되어 있으며, 이곳에 복사되지 않았습니다.

이 레벨에서는 @supports 규칙에 대한 확장 기능을 추가하여, 지원되는 셀렉터를 테스트할 수 있도록 합니다.

2. @supports 규칙의 확장

이 명세의 이 레벨에서는 <supports-feature> 문법을 다음과 같이 확장합니다:

<supports-feature> = <supports-selector-fn> | <supports-decl>
<supports-selector-fn> = selector( <complex-selector> )
<supports-selector-fn>

함수의 인자로 전달된 셀렉터를 UA가 지원하면 결과가 true입니다.

테스트
이 예제는 column 결합자 (||) 셀렉터 지원 여부를 테스트하며, 지원되는 경우 테이블의 특정 셀을 스타일링합니다.
@supports selector(col || td) {
  col.selected || td {
    background: tan;
  }
}

조건부 그룹 규칙에서 사용되는 네임스페이스 접두사는 반드시 선언되어 있어야 하며, 그렇지 않으면 [css-conditional-3]에 따라 무효입니다. 이는 selector 함수 내의 네임스페이스 접두사도 포함합니다.

테스트
이 예제는 CSS 한정 이름을 가진 속성 셀렉터 지원 여부를 확인하려 하지만, 네임스페이스 접두사가 선언되지 않아 무효입니다.
@supports selector(a[xlink|href]) {
  // do something, but fail
}
이 예제는 CSS 한정 이름을 가진 속성 셀렉터가 지원되는지 확인합니다.
@namespace x url(http://www.w3.org/1999/xlink);
@supports selector(a[x|href]) {
  // do something
}

2.1. 지원 정의의 확장

CSS 프로세서는 셀렉터의 모든 부분을 재귀적으로 허용하고(구문의 일부를 알 수 없거나 무효로 간주하지 않고) 해당 셀렉터에 알 수 없는 -webkit- 의사 요소가 포함되어 있지 않을 경우, CSS 셀렉터를 지원한다고 간주합니다.

참고: 일부 함수형 셀렉터는 관대하게 파싱되므로, 인자 중 일부가 알 수 없거나 무효여도 셀렉터 자체가 무효화되지 않습니다. 이러한 경우에도 지원되지 않은 것으로 간주합니다.

보안 고려사항

이 문서에 대해 제기된 보안 이슈는 없습니다.

프라이버시 고려사항

selector() 함수는 사용자의 소프트웨어 버전이나 특정 기능을 활성화/비활성화하는 비기본 설정 등 사용자의 소프트웨어 정보 일부를 제공할 수 있습니다.

이 정보는 다른 API를 통해서도 알 수 있습니다. 하지만, 본 명세의 기능은 웹에서 이러한 정보를 노출하는 방법 중 하나입니다.

또한 이 정보는 집계될 경우 사용자의 지문(fingerprinting) 정확도를 높이는 데 사용될 수 있습니다.

감사의 글

편집자들은 이 모듈의 이전 레벨에 기여한 모든 분들께 감사를 드립니다.

변경사항

2022년 2월 17일 후보 권고안 스냅샷 이후 변경사항

2020년 3월 3일 첫 공개 작업 초안 이후 변경사항

레벨 3 이후 추가사항

적합성

문서 관례

적합성 요구사항은 설명적인 단정문과 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-규칙, 속성, 속성값, 키워드 및 기타 문법 구조를 무효로 간주하고 적절히 무시해야 합니다. 특히, UA는 지원되지 않는 구성값만 선택적으로 무시하고 지원되는 값은 적용해서는 안 됩니다: 하나의 다중값 속성 선언에서 값 중 하나라도 무효(지원되지 않은 값)라면 CSS는 전체 선언을 무시하도록 요구합니다.

불안정 및 독점 기능의 구현

미래에 안정화될 CSS 기능과의 충돌을 피하기 위해, CSSWG는 최선의 구현 관례를 따를 것을 권장합니다. 불안정 기능 및 독점 확장의 구현 시 참고하십시오.

비실험적 구현

명세가 후보 권고안 단계에 도달하면 비실험적 구현이 가능해지며, 구현자는 명세에 맞게 올바르게 구현된 CR 레벨의 기능에 대해 접두사 없는 구현을 배포해야 합니다.

CSS의 구현 간 상호운용성을 확립하고 유지하기 위해, CSS 작업 그룹은 비실험적 CSS 렌더러에게 구현 보고서(필요시 해당 보고서에 사용된 테스트케이스 포함)를 W3C에 제출한 후 CSS 기능의 비접두사 구현을 배포할 것을 요청합니다. W3C에 제출된 테스트케이스는 CSS 작업 그룹의 검토 및 수정 대상이 됩니다.

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

CR 종료 기준

이 명세가 제안 권고안(Proposed Recommendation)으로 진전되려면 각 기능에 대해 최소 두 개의 독립적이고 상호운용 가능한 구현이 있어야 합니다. 각 기능은 서로 다른 제품군에서 구현될 수 있으며, 모든 기능을 단일 제품에서 구현할 필요는 없습니다. 이 기준의 목적을 위해 다음 용어를 정의합니다:

독립적
각 구현은 서로 다른 당사자가 개발해야 하며, 다른 구현에 사용된 코드와 공유, 재사용, 파생될 수 없습니다. 이 명세의 구현과 관련 없는 코드 영역은 이 요구사항에서 제외됩니다.
상호운용 가능
공식 CSS 테스트 스위트의 해당 테스트케이스(들)를 통과하거나, 구현이 웹 브라우저가 아니면 이에 상응하는 테스트를 통과해야 합니다. 해당 UA(사용자 에이전트)를 상호운용성 주장에 사용할 경우, 모든 관련 테스트에 대해 동등한 테스트가 생성되어야 하며, 추가적으로 해당 테스트를 동일하게 통과하는 하나 이상의 UA가 있어야 상호운용성 목적을 충족합니다. 동등 테스트는 동료 검토(peer review) 목적으로 공개되어야 합니다.
구현
사용자 에이전트(UA)로서:
  1. 명세를 구현합니다.
  2. 일반 대중에게 제공됩니다. 구현은 출시 제품일 수도 있고, 공개된 기타 버전(베타, 프리뷰, "야간 빌드" 등)일 수도 있습니다. 출시되지 않은 제품 버전의 경우, 해당 기능을 최소 한 달간 구현해 안정성을 증명해야 합니다.
  3. 실험적이지 않아야 합니다(즉, 테스트 스위트를 통과하기 위해 특별히 설계된 버전이 아니며 지속적인 일반 사용을 위한 버전이어야 함).

이 명세는 최소 6개월 동안 후보 권고안(Candidate Recommendation)으로 유지됩니다.

색인

이 명세에서 정의한 용어

참고 정의 용어

참고 문헌

규범적 참고문헌

[CSS-CONDITIONAL-3]
Chris Lilley; David Baron; Elika Etemad. CSS Conditional Rules Module Level 3. 2024년 8월 15일. CRD. URL: https://www.w3.org/TR/css-conditional-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 4. 2024년 3월 12일. WD. URL: https://www.w3.org/TR/css-values-4/
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. 1997년 3월. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[SELECTORS-4]
Elika Etemad; Tab Atkins Jr.. Selectors Level 4. 2022년 11월 11일. WD. URL: https://www.w3.org/TR/selectors-4/

비규범적 참고문헌

[CSS-NAMESPACES-3]
Elika Etemad. CSS Namespaces Module Level 3. 2014년 3월 20일. REC. URL: https://www.w3.org/TR/css-namespaces-3/

이슈 색인

3레벨의 기능들은 아직 [css-conditional-3] 에서 정의되어 있으며, 이곳에 복사되지 않았습니다.