CSS 조건부 규칙 모듈 레벨 4

W3C 후보 권고안 스냅샷,

이 문서에 대한 추가 정보
이 버전:
https://www.w3.org/TR/2022/CR-css-conditional-4-20220217/
최신 공개 버전:
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 (Mozilla)
Elika J. Etemad / fantasai (초청 전문가)
Chris Lilley (W3C)
이 명세서에 대한 편집 제안:
GitHub 에디터
델타 명세서:

요약

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

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

이 문서의 상태

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

이 문서는 CSS 워킹 그룹후보 권고안 스냅샷으로 권고안 트랙을 이용해 공개한 것입니다. 후보 권고안으로 출판되었다고 해서 W3C 및 회원의 보증을 의미하지는 않습니다. 후보 권고안 스냅샷은 광범위한 검토를 받았으며, 구현 경험을 수집하기 위한 것이고, 워킹 그룹 구성원들이 구현에 대해 로열티 없는 라이선스를 약속합니다. 이 문서는 W3C 권고안이 되는 것을 목표로 하며, 추가 의견을 수집하기 위해 까지 후보 권고안 상태를 유지할 예정입니다.

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

이 문서는 2021년 11월 2일 W3C 프로세스 문서에 따라 관리됩니다.

이 문서는 W3C 특허 정책 하에 운영되는 그룹에서 작성되었습니다. W3C는 해당 그룹 결과물과 관련하여 제출된 공개 특허 공개 목록을 유지합니다. 해당 페이지에는 특허 공개 방법도 안내되어 있습니다. 만약 개인이 본인 지식으로 필수 청구권(Essential Claim(s))이 포함된 특허를 알고 있다고 생각되면, 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를 통해서도 확인할 수 있습니다. 하지만, 이 명세서의 기능은 이러한 정보가 웹에서 노출되는 방법 중 하나입니다.

이 정보는 또한 집계 시 사용자 핑거프린팅의 정확도를 높이는 데 사용될 수 있습니다.

감사의 글

에디터들은 이 모듈의 이전 레벨에 기여해 주신 모든 분들께 감사드립니다.

변경사항

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

Level 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"로 규범 텍스트와 구분됩니다:

Note, 이것은 참고 노트입니다.

권고(advisement)는 특별한 주의를 환기하도록 스타일링된 규범 섹션이며, <strong class="advisement">로 구분됩니다: UA는 반드시 접근 가능한 대체 수단을 제공해야 합니다.

테스트

이 명세서의 내용과 관련된 테스트는 이와 같은 “테스트” 블록에 문서화될 수 있습니다. 이러한 블록은 모두 비규범적입니다.


적합성 클래스

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

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

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

렌더러가 이 명세서에 적합하려면, 스타일 시트를 적절한 명세서에 정의된 대로 해석하는 것 외에도, 이 명세서에서 정의된 모든 기능을 올바르게 파싱하고 문서를 그에 따라 렌더링해야 합니다. 단, UA가 기기 제한 때문에 문서를 올바르게 렌더링하지 못해도 UA가 적합하지 않은 것은 아닙니다. (예: UA가 단색 모니터에서 색상을 렌더링할 필요는 없음)

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

부분 구현

작성자가 앞으로도 호환 가능한 파싱 규칙을 활용하여 대체 값을 지정할 수 있도록, CSS 렌더러는 반드시 지원하지 않는 at-rule, 속성, 속성 값, 키워드, 기타 구문 구조를 모두 무효로 취급(및 적절히 무시)해야 합니다. 특히, UA는 지원되지 않는 구성 값만 무시하고, 지원되는 값은 적용하는 식의 선택적 무시는 절대 금지입니다. 한 속성 선언에서 값 중 하나라도 무효(미지원 값)로 간주되면 CSS에서는 전체 선언을 무시해야 합니다.

불안정 및 독점 기능 구현

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

비실험적 구현

명세서가 후보 권고 단계에 도달하면, 비실험적 구현이 가능하며, 구현자는 명세서대로 올바르게 구현되었음을 입증할 수 있는 CR-level 기능에 대해 접두어 없는 구현을 릴리스해야 합니다.

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

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

CR 종료 기준

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

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

이 명세서는 최소 6개월간 후보 권고 상태를 유지합니다.

색인

이 명세서에서 정의된 용어

참고로 정의된 용어

참고문헌

규범적 참고문헌

[CSS-CONDITIONAL-3]
David Baron; Elika Etemad; Chris Lilley. CSS Conditional Rules Module Level 3. 2022년 1월 13일. CR. URL: https://www.w3.org/TR/css-conditional-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS 값 및 단위 모듈 레벨 4. 2021년 12월 16일. WD. URL: https://www.w3.org/TR/css-values-4/
[RFC2119]
S. Bradner. RFC에서 요구 수준을 나타내는 키워드. 1997년 3월. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[SCROLL-ANIMATIONS]
스크롤 연동 애니메이션. cg-draft. URL: https://wicg.github.io/scroll-animations/
[SELECTORS-4]
Elika Etemad; Tab Atkins Jr.. 셀렉터 레벨 4. 2018년 11월 21일. WD. URL: https://www.w3.org/TR/selectors-4/

참고용 참고문헌

[CSS-NAMESPACES-3]
Elika Etemad. CSS 네임스페이스 모듈 레벨 3. 2014년 3월 20일. REC. URL: https://www.w3.org/TR/css-namespaces-3/

이슈 색인

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