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

W3C 후보 권고안 스냅샷,

이 문서에 대한 추가 정보
이 버전:
https://www.w3.org/TR/2022/CR-css-cascade-4-20220113/
최신 공개 버전:
https://www.w3.org/TR/css-cascade-4/
편집자 초안:
https://drafts.csswg.org/css-cascade-4/
이전 버전:
히스토리:
https://www.w3.org/standards/history/css-cascade-4
구현 보고서:
https://wpt.fyi/results/css/css-cascade
피드백:
CSSWG 이슈 저장소
편집자:
Elika J. Etemad / fantasai (초청 전문가)
Tab Atkins Jr. (Google)
이 명세에 대한 수정 제안:
GitHub 편집자

요약

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

이 단계에서 새롭게 추가된 것은 revert 키워드와 <supports-condition>, 그리고 @import 규칙입니다.

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

이 문서의 상태

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

이 문서는 CSS 작업 그룹에 의해 후보 권고안 스냅샷으로 권고안 트랙을 사용하여 발행되었습니다. 후보 권고안으로 발행되었다고 해서 W3C와 그 회원들의 보증을 의미하지는 않습니다. 후보 권고안 스냅샷은 광범위한 검토를 받았으며, 구현 경험을 수집하기 위해 의도되었고, 작업 그룹 멤버들은 구현을 위한 로열티 프리 라이선스를 약속했습니다. 이 문서는 W3C 권고안이 될 예정이며, 추가 피드백을 수집하기 위해 최소 까지 후보 권고안 상태로 유지됩니다.

피드백은 GitHub 이슈 등록(권장)으로 보내주시기 바랍니다. 제목에 명세 코드 “css-cascade”를 포함하여 다음과 같이 작성해주세요: “[css-cascade] …코멘트 요약…”. 모든 이슈와 코멘트는 아카이브됩니다. 또는 (아카이브됨) 공개 메일링 리스트 www-style@w3.org로 피드백을 보낼 수 있습니다.

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

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

1. 소개

CSS는 문서의 렌더링을 지시하는 속성이라고 하는 한정된 매개변수 집합을 정의합니다. 각각의 속성은 이름(예: color, font-size, 또는 border-style), 값 공간(예: <color>, <length-percentage>, [ solid | dashed | dotted | … ]), 그리고 문서 렌더링에서 정의된 동작을 가집니다. 속성 값은 속성 선언을 통해 문서의 다양한 부분에 할당되며, 선언된 값(예: red, 12pt, dotted)이 관련된 요소 또는 박스에 할당됩니다.

CSS의 기본 설계 원칙 중 하나는 계단식(cascade)입니다. 이는 여러 스타일 시트가 문서의 표시 방식에 영향을 줄 수 있도록 합니다. 서로 다른 선언이 동일한 요소/속성 조합에 값을 설정하려고 할 때, 충돌은 반드시 해결되어야 합니다.

반대로 어떤 선언도 요소/속성 조합에 값을 설정하지 않을 때의 문제가 발생합니다. 이 경우, 상속 또는 속성의 초기값을 참고하여 값을 찾게 됩니다.

계단식기본값 처리 과정은 하나의 선언 집합을 입력으로 받아, 각 요소의 각 속성에 대해 지정값을 출력합니다.

문서의 모든 요소에 모든 속성의 지정값을 찾는 규칙은 본 명세서에서 설명합니다. 페이지 컨텍스트와 여백 박스에 대한 지정값을 찾는 규칙은 [css-page-3]에서 설명합니다.

1.1. 모듈 상호작용

이 섹션은 규범적입니다.

이 모듈은 [CSS2] 6장에 정의된 속성 값 할당, 계단식, 상속 규칙을 대체하고 확장합니다.

다른 CSS 모듈들은 여기서 정의된 일부 문법 및 기능의 정의를 확장할 수 있습니다. 예를 들어, Media Queries Level 4 명세는 이 모듈과 결합될 때, 본 명세에서 사용되는 <media-query> 값 유형의 정의를 확장합니다.

본 명세의 목적상, 텍스트 노드는 관련 요소의 요소 자식으로 간주되며, 전체 속성 집합을 가집니다. 셀렉터로 타겟팅할 수 없으므로 모든 계산값은 기본값 처리로 할당됩니다.

2. 스타일 시트 가져오기: @import 규칙

@import 규칙은 사용자가 다른 스타일 시트에서 스타일 규칙을 가져올 수 있도록 합니다. @import 규칙이 유효한 스타일 시트를 참조하는 경우, 사용자 에이전트는 스타일 시트의 내용을 @import 규칙 대신에 작성된 것처럼 취급해야 합니다. 단, 두 가지 예외가 있습니다:

예를 들어, 가져온 스타일 시트의 스타일 규칙에서 선언된 내용은 @import가 위치한 곳에 직접 작성된 것처럼 계단식과 상호작용합니다.

모든 @import 규칙은 스타일 시트 내의 다른 유효한 at-규칙과 스타일 규칙 모두보다 앞에 와야 하며 (@charset을 제외), 그렇지 않으면 @import 규칙은 무효입니다. @import의 문법은 다음과 같습니다:

@import [ <url> | <string> ]
        [ supports( [ <supports-condition> | <declaration> ] ) ]?
        <media-query-list>? ;

<url> 또는 <string>은 가져올 스타일 시트의 URL을 지정합니다. 선택적으로 [<supports-condition>|<declaration>] 및 <media-query-list> (통틀어 가져오기 조건) 해당 규칙의 적용 조건을 명시합니다.

아래 조건부 @import 규칙은 UA가 display: flex display: flex를 지원할 때만 스타일 시트를 로드하며, handheld 기기에서 최대 뷰포트 너비가 400px일 때만 스타일 시트를 적용합니다.
@import url("narrow.css") supports(display: flex) handheld and (max-width: 400px);

<string>이 제공된 경우, 동일한 값을 가진 <url>로 해석해야 합니다.

다음 두 줄은 의미상 동일하며 @import의 두 가지 문법(하나는 url() 사용, 하나는 문자열 직접 사용)을 보여줍니다:
@import "mystyle.css";
@import url("mystyle.css");

2.1. 조건부 @import 규칙

가져오기 조건을 통해 가져오기가 미디어 또는 기능 지원 여부에 따라 달라질 수 있습니다. 가져오기 조건이 없다면, 가져오기는 무조건적으로 적용됩니다. (all<media-query-list>로 지정하면 동일한 효과가 있습니다.) 가져오기 조건이 일치하지 않으면, 가져온 스타일 시트의 규칙은 적용되지 않으며, 이는 가져온 스타일 시트가 @media 및/또는 @supports 블록으로 감싸진 것과 동일하게 동작합니다.

다음 규칙들은 @import 규칙이 미디어에 따라 적용될 수 있음을 보여줍니다:
@import url("fineprint.css") print;
@import url("bluish.css") projection, tv;
@import url("narrow.css") handheld and (max-width: 400px);

따라서 사용자 에이전트는 가져오기 조건이 일치하지 않는 한 조건부 가져오기를 가져오지 않을 수 있습니다. 추가로, <supports-condition>이 가져온 스타일 시트의 적용을 막는 경우, UA는 반드시 스타일 시트를 가져오지 않아야 하며(다른 링크로 로드되는 경우는 예외), import 규칙의 CSSImportRule.styleSheet 값에 반드시 null을 반환해야 합니다 (다른 링크로 로드된 경우에도).

아래 규칙은 저자가 구형 사용자 에이전트에 대한 대체 규칙을 제공하면서 최신 사용자 에이전트의 네트워크 성능에 영향을 주지 않는 방법을 보여줍니다:
@import url("fallback-layout.css") supports(not (display: flex));
@supports (display: flex) {
  ...
}

가져오기 조건<media-query-list>로 주어지며, 이는 미디어 쿼리 리스트로 파싱 및 해석됩니다. 그리고 <supports-condition>은 [[supports query]]로 파싱 및 해석됩니다. <supports-condition> 대신 <declaration>이 주어진 경우, 이는 <supports-condition>처럼 괄호가 추가된 것으로 해석되며, supports 조건으로 취급해야 합니다.

예를 들어, 다음 두 줄은 동일한 의미를 가집니다:
@import "mystyle.css" supports(display: flex);
@import "mystyle.css" supports((display: flex));

가져오기 조건의 평가 및 전체 문법은 Media Queries [MEDIAQ]CSS Conditional Rules [CSS-CONDITIONAL-3] 명세에서 정의됩니다.

2.2. 스타일시트 가져오기 처리

같은 스타일시트가 문서에 여러 곳에서 import되거나 링크될 경우, 사용자 에이전트는 각 링크를 독립적인 스타일시트로 취급하여 처리해야 합니다.

참고: 이는 리소스 가져오기(resource fetching)에 대한 요구사항이 아니라, CSSOM에서 스타일시트가 어떻게 반영되고 본 명세와 같은 곳에서 어떻게 사용되는지에 관한 것입니다. 적절한 캐싱이 이루어진다면, UA가 스타일시트를 한 번만 가져오더라도, 여러 번 링크 또는 import된 경우에도 문제 없습니다.

가져온 스타일시트의 계단식 원천(cascade origin)은 그것을 가져온 스타일시트의 계단식 원천입니다.

가져온 스타일시트의 환경 인코딩(environment encoding)은 그것을 가져온 스타일시트의 인코딩입니다. [css-syntax-3]

fetch an @import를 실행하려면, @import 규칙 rule이 주어졌을 때:
  1. parentStylesheetrule상위 CSS 스타일시트로 한다. [CSSOM]

  2. rule<supports-condition>이 있고, 조건이 true가 아니면, return.

  3. parsedUrlURL parser 단계의 결과로, rule의 URL과 parentStylesheetlocation을 넘긴다. 알고리즘이 오류를 반환하면, return. [CSSOM]

  4. Fetch a style resourceparsedUrl에서, 스타일시트 parentStylesheet와 함께, destination "style", CORS 모드 "no-cors", 그리고 processResponse는 response response와 byte stream, null 또는 failure byteStream을 인자로 받은 다음 단계이다:

    1. maybeByteStream이 바이트 스트림이 아니면, return.

    2. parentStylesheetquirks mode에 있고 responseCORS-same-origin이면, content type"text/css"로 한다. 그렇지 않으면, response의 Content Type 메타데이터를 content type으로 한다.

    3. content type"text/css"가 아니면, return.

    4. importedStylesheetparse a stylesheet 결과로, byteStramparsedUrl을 넘긴다.

    5. importedStylesheetorigin-clean flagparentStylesheetorigin-clean flag로 설정한다.

    6. responseCORS-same-origin이 아니면, importedStylesheetorigin-clean flag를 해제한다.

    7. rulestyleSheetimportedStylesheet로 설정한다.

2.3. CSS 스타일시트의 Content-Type

가져온 스타일시트의 처리 방식은 연결된 리소스의 실제 타입에 따라 달라집니다:

링크된 리소스의 타입이 text/css라면, CSS 스타일시트로 해석해야 합니다. 아니라면, 네트워크 오류로 해석해야 합니다.

3. 축약 속성

일부 속성은 축약 속성으로, 하나의 속성으로 여러 속성의 값을 지정할 수 있습니다. 축약 속성은 모든 하위 속성(longhand sub-properties)을 해당 위치에 확장된 것처럼 설정합니다.

축약 형식에서 값을 생략하면, 특별히 정의되어 있지 않는 한, 각 “누락된” 하위 속성초기값이 할당됩니다.

이는 축약 속성 선언이 항상 모든 하위 속성을 설정함을 의미합니다. 명확히 지정하지 않은 하위 속성도 모두 포함됩니다. 신중하지 않게 사용하면 하위 속성이 의도치 않게 초기화될 수 있습니다. 신중하게 사용하면, 축약을 통해 다른 소스에서 계단식으로 내려온 하위 속성을 모두 초기화하여 “빈 상태”를 보장할 수 있습니다.

예를 들어, background: greenbackground-color: green 대신 사용하면, 이전 선언에서 background-image로 이미지를 지정했더라도 배경색이 이를 덮어쓰게 됩니다.

예를 들어, CSS Level 1의 font 속성은 축약 속성으로, font-style, font-variant, font-weight, font-size, line-height, font-family까지 한 번에 설정합니다. 이 예시의 여러 선언은:
h1 {
  font-weight: bold;
  font-size: 12pt;
  line-height: 14pt;
  font-family: Helvetica;
  font-variant: normal;
  font-style: normal;
}

다음과 같이 다시 쓸 수 있습니다

h1 { font: bold 12pt/14pt Helvetica }

CSS에 더 많은 font 하위 속성이 추가되면, 축약 선언은 그것들도 초기값으로 초기화합니다.

일부 경우 축약은 다른 문법이나 하위 속성의 값과 직접적으로 대응하지 않는 특별 키워드를 가질 수 있습니다. (이런 경우 축약은 값의 확장을 명시적으로 정의합니다.)

다른 경우, 어떤 속성은 초기화 전용 하위 속성(reset-only sub-property)일 수 있습니다: 다른 하위 속성과 마찬가지로, 지정되지 않으면 축약에서 초기값으로 초기화되지만, 축약 구문에 그 하위 속성의 다른 값을 설정하는 방법이 없을 수 있습니다. 예를 들어, border 축약은 border-image를 초기값인 none으로 초기화하지만, 다른 값으로 설정하는 문법은 없습니다. [css-backgrounds-3]

축약CSS 공통 키워드 [css-values-3] 중 하나로 지정되면, 모든 하위 속성을 해당 키워드로 설정하며, 초기화 전용 하위 속성(reset-only sub-properties)도 포함합니다. (이 키워드는 한 선언에서 다른 값과 조합할 수 없습니다. 축약에서도 마찬가지입니다.)

축약 속성에 !important를 선언하는 것은 모든 하위 속성!important를 선언하는 것과 동일합니다.

3.1. 속성 별칭

속성은 지원된 후 이름이 변경되는 경우가 있습니다. 예를 들어, 공급업체 접두사가 붙은 속성이 표준화되는 경우 등입니다. 호환성 문제로 인해 기존 이름도 계속 지원되어야 하지만, 새로운 이름이 더 권장됩니다. 이를 위해 CSS는 옛 문법을 새 문법으로 “별칭(aliasing)”하는 두 가지 방법을 정의합니다.

레거시 이름 별칭(legacy name aliases)
이전 속성의 값 문법이 새 속성과 동일하다면, 두 이름은 대소문자 변환과 동등한 수준의 연산으로 별칭됩니다: 파싱 시, 이전 속성은 새로운 속성으로 변환됩니다. 이 변환은 CSSOM에서도 적용되며, 문자열 인자와 속성 접근자 모두에 해당합니다: 이전 속성 이름에 대한 요청은 자동으로 새 속성 이름에 전달됩니다.
예를 들어 old-name레거시 이름 별칭으로 new-name의 별칭이라면, getComputedStyle(el).oldNamenewName 속성의 계산 스타일을 반환하고, el.style.setPropertyValue("old-name", "value")new-name 속성에 "value"를 설정합니다.
레거시 축약(legacy shorthands)
이전 속성이 새 속성과 별도의 문법을 가진 경우, 두 이름은 축약 메커니즘을 통해 별칭됩니다. 이러한 축약은 레거시 축약으로 정의되며, 사용이 권장되지 않습니다(deprecated). 동작은 일반 축약과 동일하지만, CSSOM은 선언을 직렬화할 때 이를 사용하지 않습니다. [CSSOM]
예를 들어 page-break-* 속성은 break-* 속성의 레거시 축약입니다 (자세한 내용은 CSS Fragmentation 3 § 3.4 Page Break Aliases: the page-break-before, page-break-after, and page-break-inside properties 참조).

page-break-before: always를 설정하면, 파싱 시 break-before: page로 확장됩니다. 마찬가지로 break-before: page가 설정된 경우, getComputedStyle(el).pageBreakBefore를 호출하면 "always"를 반환합니다. 하지만 스타일 블록을 직렬화할 때 (자세한 내용은 CSSOM 1 § 6.7.2 Serializing CSS Values 참조), page-break-before 속성은 직렬화에 절대 선택되지 않고, 명시 여부와 상관없이 break-before가 항상 선택됩니다. break-before가 항상 사용됩니다.

3.2. 모든 속성 초기화: all 속성

Name: all
Value: initial | inherit | unset | revert
Initial: 개별 속성 참조
Applies to: 개별 속성 참조
Inherited: 개별 속성 참조
Percentages: 개별 속성 참조
Computed value: 개별 속성 참조
Animation type: 개별 속성 참조
Canonical order: 문법에 따름

all 속성은 축약으로, 모든 CSS 속성을 초기화합니다. 단, directionunicode-bidi는 제외됩니다. CSS 공통 키워드만 허용합니다. 사용자 정의 속성(custom properties)은 초기화하지 않습니다. [css-variables-1]

참고: 제외된 CSS 속성 directionunicode-bidi는 사실 마크업 레벨 기능입니다. 작성자의 스타일시트에서 설정하지 않아야 합니다. (이 속성들은 CSS 속성으로 존재하지만, UA가 지원하지 않는 문서 언어를 스타일링하기 위한 것입니다.) 작성자는 HTML의 dir 속성과 같은 적절한 마크업을 사용해야 합니다. [css-writing-modes-3]

예를 들어, 작성자가 어떤 요소에 all: initial을 지정하면, 모든 상속을 차단하고 모든 속성을 초기화하여, 작성자, 사용자, 사용자 에이전트 수준의 규칙이 없는 것처럼 동작합니다.

이는 페이지에 포함된 “위젯”의 루트 요소가 바깥 페이지의 스타일을 상속하지 않도록 할 때 유용할 수 있습니다. 하지만 해당 요소에 적용된 “기본” 스타일 (예: display: block 등 UA 스타일시트에서 <div> 같은 블록 요소에 지정된 값) 역시 모두 제거된다는 점에 유의하세요.

4. 값 처리

사용자 에이전트가 문서를 파싱하고 문서 트리를 구성하면, 평면 트리의 모든 요소와, 이에 대응하는 포맷팅 구조의 모든 박스에 대해, 대상 미디어 타입에 적용되는 모든 속성에 값을 할당해야 합니다.

특정 요소나 박스에 대해 CSS 속성의 최종 값은 다단계 계산의 결과입니다:

  1. 먼저, 각 요소의 각 속성에 적용된 선언된 값들을 모두 수집합니다. 한 요소에는 선언된 값이 0개 또는 여러 개 있을 수 있습니다.
  2. 계단식 처리로 계단식 값이 결정됩니다. 각 요소의 각 속성마다 최대 1개의 계단식 값이 있습니다.
  3. 기본값 처리로 지정값이 결정됩니다. 모든 요소의 각 속성마다 정확히 1개의 지정값이 있습니다.
  4. 값 의존성 해소로 계산값이 결정됩니다. 모든 요소의 각 속성마다 정확히 1개의 계산값이 있습니다.
  5. 문서 포맷팅으로 사용값이 결정됩니다. 해당 속성이 요소에 적용될 때만 사용값이 존재합니다.
  6. 마지막으로, 사용값은 표시 환경의 제약에 따라 실제값으로 변환됩니다. 사용값과 마찬가지로, 특정 속성의 실제값이 요소에 있을 수도, 없을 수도 있습니다.

연결되지 않은 요소나 문서의 평면화된 요소 트리의 일부가 아닌 요소는 CSS 값 처리에 관여하지 않으며, 선언값, 계단식값, 지정값, 계산값, 사용값, 실제값을 가지지 않습니다. style 선언이 할당되어 있어도 (예: style 속성으로) 처리되지 않습니다.

4.1. 선언값

각 속성 선언은 요소에 적용될 때 해당 요소에 연결된 해당 속성의 선언값을 제공합니다. 자세한 내용은 선언 필터링을 참조하세요.

이 값들은 계단식 처리를 거쳐 단일 “최종값”으로 결정됩니다.

4.1.1. 값 별칭

일부 속성 값은 레거시 값 별칭을 가집니다: 파싱 시 레거시 문법이 새로운 문법으로 변환되어, 파싱 입력과 다른 선언값이 됩니다. 이러한 별칭은 레거시 호환성 요구사항을 처리하는 데 주로 사용되며, 예를 들어 벤더 프리픽스 값을 표준 값으로 변환할 때 활용됩니다.

4.2. 계단식값

계단식값계단식 처리의 결과로, 계단식에서 우선순위가 가장 높은 선언값입니다 (계단식 출력에서 가장 앞에 정렬됨). 계단식 출력이 빈 리스트라면, 계단식값은 없습니다.

4.3. 지정값

지정값은 스타일시트 작성자가 해당 요소에 대해 의도한 특정 속성의 값입니다. 계단식값기본값 처리 과정에 넣어 모든 요소의 모든 속성에 지정값이 반드시 존재하도록 보장합니다.

많은 경우에 지정값계단식값과 같습니다. 하지만 계단식값이 없다면, 지정값기본값 처리를 통해 결정됩니다. CSS 공통 키워드가 속성의 계단식값일 경우에는 해당 키워드가 요구하는 대로 지정값을 설정합니다. 자세한 내용은 § 7.3 명시적 기본값 처리를 참조하세요.

4.4. 계산값

계산값은 속성 정의 테이블의 “계산값” 라인에서 정의된 대로 지정값을 해석한 결과로, 일반적으로 상속 준비를 위해 절대값화(absolutizing) 됩니다. 상속을 위해 준비됩니다.

참고: 계산값상속 시 부모에서 자식으로 전달되는 값입니다. 역사적 이유로, getComputedStyle() 함수가 반환하는 값과 항상 일치하지는 않으며, 때때로 사용값을 반환하기도 합니다. [CSSOM] 또한 계산값은 추상적 데이터 표현입니다. 정의는 데이터 표현을 반영하며, 데이터 직렬화 방식과는 다릅니다. 예를 들어, 직렬화 규칙에서는 파싱 시 암시되는 특정 값을 생략할 수도 있지만; 해당 값들은 계산값에 포함됩니다.

지정값은 절대값(예:red 또는 2mm)이나 상대값(예:auto, 2em)일 수 있습니다. 상대값을 계산할 때는 일반적으로 절대값으로 변환합니다:

아래 표의 (f), (g), (h) 예시를 참고하세요.

참고: 일반적으로 계산값지정값을 최대한 해석하지만, 문서 레이아웃이나 추가 네트워크 요청 등 비용이 크거나 병렬처리하기 어려운 연산은 하지 않습니다. 요소와 부모에서만 값을 가져옵니다.

계산값은 속성이 적용되지 않아도 존재합니다. 단, 일부 속성은 해당 속성이 요소에 적용되는지에 따라 계산값 산정 방식이 달라질 수 있습니다.

4.5. 사용값

사용값계산값을 받아, 남은 계산을 완료해서 문서 포맷팅에 사용될 절대 이론값으로 만드는 결과입니다.

예를 들어, width: auto는 요소의 레이아웃을 알기 전에는 길이로 해석할 수 없으므로, 계산값auto이고, 사용값100px과 같은 절대 길이입니다. [CSS2]

또 다른 예로, <div>는 계산된 break-before 값이 auto일 수 있지만, 첫 번째 자식의 전파로 사용값 break-before 값이 page가 될 수 있습니다. [css-break-3]

속성이 해당 요소나 박스 타입에 적용되지 않으면 해당 속성에 대해 사용값이 없습니다.

예를 들어, flex 속성은 사용값플렉스 아이템이 아닌 요소에는 가지지 않습니다.

4.5.1. 적용 가능한 속성

속성이 해당 요소나 박스 타입에 적용되면“Applies to” 라인에 명시됨—해당 박스나 요소에 직접적으로 영향을 줍니다.

참고: 적용되지 않는 속성도 간접적으로 포맷팅에 영향을 줄 수 있습니다. 예를 들어 계산값이 다른 적용되는 속성의 계산에 영향을 줄 수 있습니다. 또한 계산값은 항상 존재하므로, 자손으로 상속되어 영향을 미칠 수 있습니다.

writing-modetext-orientation 속성은 테이블 행에는 적용되지 않지만 (테이블 행이나 자식의 레이아웃에는 영향을 주지 않음), 해당 박스에 속성을 설정하면 ch와 같은 폰트 상대 단위의 계산에 영향을 줄 수 있고, 따라서 <length> 값을 사용하는 모든 속성에도 영향을 줄 수 있습니다.
text-transform을 HTML p 요소에 설정하면 (기본적으로 display: block임) 효과가 나타납니다. text-transform인라인 박스에만 적용되지만, 속성이 상속되어 문단의 익명 루트 인라인 박스에 적용되어 그 안의 텍스트에 영향을 줍니다.

참고: “모든 요소에 적용”이라고 정의된 속성은 모든 요소와 display 타입에 적용되지만, 모든 가상 요소 타입에는 반드시 적용되는 것은 아닙니다. 가상 요소는 특수한 렌더링 모델이나 제약이 있을 수 있기 때문입니다. 하지만 ::before::after 가상 요소는 일반 요소와 거의 동일하게 박스를 생성하므로, “모든 요소에 적용”되는 속성을 받아들입니다. 가상 요소에 대한 정보는 [CSS-PSEUDO-4]를 참고하세요.

4.6. 실제값

사용값은 원칙적으로 바로 사용될 수 있지만, 사용자 에이전트가 특정 환경에서 해당 값을 사용할 수 없을 수도 있습니다. 예를 들어, 사용자 에이전트가 테두리의 너비를 정수 픽셀 단위로만 렌더링할 수 있다면, 사용값을 근사값으로 변환해야 할 수 있습니다. 또한, 요소의 글꼴 크기는 사용 가능한 폰트나 font-size-adjust 속성 값에 따라 조정이 필요할 수 있습니다. 실제값은 이런 조정이 끝난 후의 사용값입니다.

참고: 요소의 실제값을 조사하면 문서 레이아웃에 대한 많은 정보를 알 수 있습니다. 하지만 모든 정보가 실제값에 기록되지는 않습니다. 예를 들어, page-break-after 속성의 실제값은 해당 요소 뒤에 실제로 페이지가 나뉘었는지 나타내지 않습니다. 마찬가지로 orphans의 실제값은 특정 요소 내에 고아 줄(orphans)이 몇 줄 있는지 반영하지 않습니다. 아래 표의 (j), (k) 예시를 참고하세요.

4.7. 예시

CSS 값 계산 예시
속성 최종 선언 계단식값 지정값 계산값 사용값 실제값
(a) text-align text-align: left left left left left left
(b) border-top-width, border-right-width, border-bottom-width, border-left-width border-width: inherit inherit 4.2px 4.2px 4.2px 4px
(c) width (없음) (없음) auto (초기값) auto 120px 120px
(d) list-style-position list-style-position: inherit inherit inside inside inside inside
(e) list-style-position list-style-position: initial initial outside (초기값) outside outside outside
(f) font-size font-size: 1.2em 1.2em 1.2em 14.1px 14.1px 14px
(g) width width: 80% 80% 80% 80% 354.2px 354px
(h) width width: auto auto auto auto 134px 134px
(i) height height: auto auto auto auto 176px 176px
(j) page-break-after (없음) (없음) auto (초기값) auto auto auto
(k) orphans orphans: 3 3 3 3 3 3

5. 필터링

선언값을 찾기 위해, 구현체는 먼저 각 요소에 적용되는 모든 선언을 식별해야 합니다. 선언이 요소에 적용되는 조건은 다음과 같습니다:

적용되는 선언의 값들은 각 요소의 각 속성마다 선언값 리스트를 만듭니다. 다음 섹션인 계단식에서 이 리스트들의 우선순위가 결정됩니다.

6. 계단식 처리

계단식은 특정 요소의 특정 속성에 대한 선언값의 무순서 리스트를 받아, 아래에서 결정된 선언의 우선순위에 따라 정렬하고, 하나의 계단식값을 출력합니다.

6.1. 계단식 정렬 순서

계단식은 다음 기준에 따라 선언을 정렬합니다. 우선순위는 아래에서 위로 높습니다:

원천 및 중요도
선언의 원천은 선언이 어디서 왔는지에 따라 결정되고, 중요도!important(아래 참조)로 선언되었는지에 따라 결정됩니다. 다양한 원천의 우선순위는 다음과 같이, 높은 순서대로 나열됩니다:
  1. 트랜지션 선언 [css-transitions-1]
  2. 중요 사용자 에이전트 선언
  3. 중요 사용자 선언
  4. 중요 작성자 선언
  5. 애니메이션 선언 [css-animations-1]
  6. 일반 작성자 선언
  7. 일반 사용자 선언
  8. 일반 사용자 에이전트 선언

이 리스트에서 앞에 있는 원천의 선언이 뒤에 있는 원천의 선언보다 우선합니다.

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

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

참고: 이것은 일반 선언이 캡슐화 컨텍스트에 속할 때 외부 컨텍스트에서 쉽게 덮어쓸 수 있지만, 중요 선언이 캡슐화 컨텍스트에 속할 때는 외부 컨텍스트에서 덮어쓸 수 없게 강제할 수 있음을 의미합니다.

특이성
Selectors 모듈 [SELECT]에서 셀렉터의 특이성을 계산하는 방법을 설명합니다. 각 선언은 속해있는 스타일 규칙과 동일한 특이성을 갖습니다. 이 단계에서, 스타일 규칙에 속하지 않는 선언 (예: style 속성의 내용 등) 은 어떤 셀렉터보다 높은 특이성을 갖는 것으로 간주합니다. 특이성이 가장 높은 선언이 우선합니다.
등장 순서
문서 순서에서 마지막에 등장하는 선언이 우선합니다. 이때:
  • 가져온 스타일시트의 선언은 해당 스타일시트가 @import 규칙 대신에 삽입된 것처럼 순서가 정해집니다.
  • 원본 문서에서 독립적으로 링크된 스타일시트의 선언은 문서 언어가 정한 링크 순서대로 이어붙인 것처럼 처리됩니다.
  • style 속성의 선언은 해당 속성이 나타나는 요소의 문서 순서에 따라 정렬되며, 모든 스타일시트 뒤에 위치합니다.

계단식의 출력은 각 요소의 각 속성에 대해 선언값을 우선순위에 따라 정렬한 (비어 있을 수도 있는) 리스트입니다.

6.2. 계단식 원천

각 스타일 규칙은 계단식 원천을 가지며, 계단식에 진입하는 위치를 결정합니다. CSS는 세 가지 핵심 원천을 정의합니다:

작성자 원천
작성자는 문서 언어의 관례에 따라 소스 문서에 스타일시트를 지정합니다. 예를 들어, HTML에서는 스타일시트를 문서에 포함하거나 외부에 링크할 수 있습니다.
사용자 원천
사용자는 특정 문서에 스타일 정보를 지정할 수 있습니다. 예를 들어, 사용자가 스타일시트를 포함한 파일을 지정하거나, 사용자 에이전트가 사용자 스타일시트를 생성하는 인터페이스를 제공할 수 있습니다 (혹은 그렇게 동작하는 경우도 있음).
사용자 에이전트 원천
적합한 사용자 에이전트는 기본 스타일시트를 적용해야 하며 (혹은 그렇게 동작해야 함). 사용자 에이전트의 기본 스타일시트는 문서 언어의 요소를 일반적인 표현 방식에 맞게 표시해야 합니다 (예: 시각적 브라우저에서 HTML의 EM 요소는 이탤릭 폰트로 표시됨). 예시: HTML 사용자 에이전트 스타일시트. [HTML]

CSS 확장에서는 다음과 같은 추가 원천을 정의합니다:

애니메이션 원천
CSS 애니메이션 [css-animations-1]은 실행 중에 효과를 나타내는 “가상” 규칙을 생성합니다.
트랜지션 원천
CSS 애니메이션과 유사하게, CSS 트랜지션 [css-transitions-1]도 실행 중에 효과를 나타내는 “가상” 규칙을 생성합니다.

6.3. 중요 선언: !important 주석

CSS는 작성자와 사용자 스타일시트 간의 권한 균형을 시도합니다. 기본적으로, 작성자 스타일시트의 규칙이 사용자 스타일시트의 규칙을 덮어쓰고, 사용자 스타일시트의 규칙은 사용자 에이전트의 기본 스타일시트를 덮어씁니다. 이를 균형 맞추기 위해, 선언은 중요로 표시할 수 있으며, 계단식에서 가중치가 높아지고 우선순위가 반대로 바뀝니다.

선언이 중요이 되려면 !important 주석이 있어야 하며, 이는 [css-syntax-3]에서 정의됩니다. 즉, 값의 마지막 두(공백/주석 제외) 토큰이 구분자 !와 식별자 important이면 해당됩니다. 그 외의 선언은 일반 선언(비-중요)입니다.

[hidden] { display: none !important; }

중요 선언은 일반 선언보다 우선합니다. 작성자와 사용자 스타일시트 모두 중요 선언을 포함할 수 있으며, 사용자 원천 중요 선언이 작성자 원천중요 선언을 덮어씁니다. 이 CSS 기능은 특정 요구(큰 글꼴, 색상 조합 등)를 가진 사용자가 프레젠테이션을 제어할 수 있도록 하여 문서 접근성을 높입니다.

중요 선언은 모든 원천에서 애니메이션보다 우선합니다. 이를 통해 작성자는 중요한 경우 애니메이션 값을 덮어쓸 수 있습니다. (애니메이션 값은 일반적으로 다른 모든 규칙보다 우선함.) [css-animations-1]

사용자 에이전트 스타일시트중요 선언을 포함할 수 있습니다. 이는 모든 작성자사용자 선언을 덮어씁니다.

다음 예시에서 사용자의 스타일시트 첫 번째 규칙에 !important 선언이 포함되어 있어, 작성자 스타일시트의 해당 선언을 덮어씁니다. 두 번째 규칙의 선언도 !important로 표시되어 덮어씁니다. 하지만 세 번째 규칙의 선언은 !important가 아니므로, 작성자 스타일시트의 두 번째 규칙에 밀려납니다 (이 규칙은 축약 속성에 스타일을 설정함). 또한, 작성자의 세 번째 규칙은 두 번째 규칙에 밀려나는데, 두 번째 선언이 !important이기 때문입니다. 이는 !important 선언이 작성자 스타일시트 내에서도 의미가 있음을 보여줍니다.
/* 사용자의 스타일시트 */
p { text-indent: 1em !important }
p { font-style: italic !important }
p { font-size: 18pt }

/* 작성자의 스타일시트 */
p { text-indent: 1.5em !important }
p { font: normal 12pt sans-serif !important }
p { font-size: 24pt }
속성 최종 값
text-indent 1em
font-style italic
font-size 12pt
font-family sans-serif

6.4. 비-CSS 프리젠테이션 힌트의 우선순위

UA는 소스 문서의 마크업에 포함된 프리젠테이션 힌트(bgcolor 속성, s 요소 등)를 존중할 수 있습니다. [HTML] 모든 문서 언어 기반 스타일링은 해당 CSS 규칙으로 변환되어, UA 원천 또는 사용자 원천작성자 원천 사이의 특수 목적 작성자 프리젠테이션 힌트 원천으로 계단식에 진입해야 합니다. 계단식에서 이 작성자 프리젠테이션 힌트 원천은 독립 원천으로 취급하지만, revert 키워드에서는 작성자 원천의 일부로 간주합니다.

문서 언어는 이러한 프리젠테이션 힌트가 계단식UA 원천 또는 작성자 원천으로 들어가는지 정의할 수 있습니다; 정의된 경우 UA는 반드시 이에 따라 동작해야 합니다. 예를 들어 [SVG11]은 프리젠테이션 속성을 작성자 원천으로 매핑합니다.

참고: 프리젠테이션 힌트가 계단식UA 원천 규칙으로 진입하면 작성자 원천이나 사용자 원천 스타일로 덮어쓸 수 있습니다. 작성자 프리젠테이션 힌트 원천으로 계단식에 진입한 힌트는 작성자 원천 스타일로 덮어쓸 수 있지만, 비-중요 사용자 원천 스타일로는 덮어쓸 수 없습니다. 호스트 언어는 프리젠테이션 힌트의 적절한 원천을 위 사항을 고려해 선택해야 합니다.

7. 기본값 처리

계단식 처리에서 값이 결정되지 않으면, 지정값을 다른 방식으로 찾아야 합니다. 상속 속성상속을 통해 부모 요소에서 기본값을 가져오며; 기타 모든 속성은 초기값을 사용합니다. 작성자는 inheritinitial 키워드로 상속이나 초기화를 명확하게 요청할 수 있습니다.

7.1. 초기값

각 속성은 속성 정의 테이블에 초기값이 정의되어 있습니다. 속성이 상속 속성이 아니고, 계단식 처리에서 값이 결정되지 않으면, 해당 속성의 지정값초기값이 됩니다.

7.2. 상속

상속은 부모 요소의 속성 값을 자식에게 전파합니다. 요소의 특정 속성의 상속값은 부모 요소에서 해당 속성의 계산값입니다. 루트 요소는 부모가 없으므로, 상속값은 해당 속성의 초기값입니다.

[DOM] 트리에서 섀도우가 있을 경우, 상속은 평면화된 요소 트리에서 동작합니다. 즉, 슬롯에 할당된 요소는 slot 요소에서 상속받으며, 직접 light tree 부모로부터 직접 상속받지 않습니다. 가상 요소는 각 가상 요소에 대해 설명된 가상의 태그 시퀀스에 따라 상속됩니다. [CSS-PSEUDO-4]

일부 속성은 속성 정의 테이블에 상속 속성으로 정의되어 있습니다. 즉, 계단식 처리에서 값이 결정되지 않으면, 값은 상속에 의해 결정됩니다.

속성은 명시적으로 상속될 수도 있습니다. inherit 키워드를 참조하세요.

참고: 상속은 문서 트리를 따르며, 익명 박스에 의해 중단되거나, 박스 트리의 조작에 의해 영향을 받지 않습니다.

7.3. 명시적 기본값 처리

아래에 여러 CSS 공통 속성값이 정의되어 있습니다; 속성에 이 값을 선언하면 특정 기본값 처리 동작을 명시적으로 지정하게 됩니다. CSS 값과 단위 [css-values-3]에 지정된 대로, 모든 CSS 속성은 이 값을 사용할 수 있습니다.

7.3.1. 속성 초기화: initial 키워드

속성의 계단식값initial 키워드라면, 해당 속성의 지정값초기값이 됩니다.

7.3.2. 명시적 상속: inherit 키워드

속성의 계단식값inherit 키워드라면, 해당 속성의 지정값계산값상속값이 됩니다.

7.3.3. 모든 선언 지우기: unset 키워드

속성의 계단식값unset 키워드라면, 상속 속성이면 inherit처럼 처리하고, 상속 속성이 아니면 initial처럼 처리합니다. 이 키워드는 계단식 처리에서 앞서 등장한 선언값을 모두 지우고, 해당 속성에 맞게 적절히 상속하거나 초기화합니다 (혹은 축약의 모든 하위 속성에 적용).

7.3.4. 계단식 원천 롤백: revert 키워드

속성의 계단식값revert 키워드라면, 동작은 선언이 속한 계단식 원천에 따라 달라집니다:

사용자 에이전트 원천
unset과 동일하게 처리합니다.
사용자 원천
계단식값을 사용자 에이전트 수준으로 롤백하여, 해당 속성의 지정값을 작성자/사용자 수준 규칙이 해당 요소의 해당 속성에 지정되지 않은 것처럼 계산합니다.
작성자 원천
계단식값을 사용자 수준으로 롤백하여, 해당 속성의 지정값을 작성자 수준 규칙이 해당 요소의 해당 속성에 지정되지 않은 것처럼 계산합니다. revert에서 이 원천은 애니메이션 원천도 포함합니다.

8. 변경사항

8.1. 2021년 10월 15일 작업초안 이후 변경사항

2021년 10월 15일 작업초안 이후의 주요 변경사항:

8.2. 2018년 8월 28일 후보 권고안 이후 변경사항

2021년 3월 19일 작업초안 이후의 주요 변경사항:

2020년 8월 18일 작업초안 이후의 주요 변경사항:

2018년 8월 28일 후보 권고안 이후의 주요 변경사항:

8.3. 2016년 1월 14일 후보 권고안 이후 변경사항

2016년 1월 14일 작업초안 이후의 주요 변경사항:

의견 처리 현황을 볼 수 있습니다.

8.4. 2015년 4월 21일 작업초안 이후 변경사항

2015년 4월 21일 작업초안 이후의 변경사항:

8.5. 3단계 이후 추가사항

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

8.6. 2단계 이후 추가사항

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

감사의 글

David Baron, Tantek Çelik, Simon Sapin, Noam Rosenthal, Boris Zbarsky가 본 명세에 기여하였습니다.

개인정보 및 보안 관련 사항

적합성

문서 규칙

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

명세의 모든 텍스트는, 명시적으로 비규범적임을 표시했거나 예시, 노트가 아닌 한 규범적입니다. [RFC2119]

예시(example)는 “for example”로 시작하거나 class="example"로 구분된 블록으로 제시됩니다.

이것은 정보성 예시입니다.

정보성 노트(note)는 “Note”로 시작하며 class="note"로 구분된 블록입니다.

Note, 이것은 정보성 노트입니다.

권고(advisement)는 규범적 섹션이며, 특별한 주의가 필요함을 강조하기 위해 <strong class="advisement">로 구분됩니다: UA는 반드시 접근성 대안을 제공해야 합니다.

적합성 클래스

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

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

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

렌더러는, 스타일시트를 관련 명세에 따라 해석함과 더불어, 이 명세에서 정의한 모든 기능을 올바르게 파싱 및 렌더링해야 적합합니다. 단, UA가 기기 한계로 문서를 올바르게 렌더링하지 못해도 비적합으로 간주하지 않습니다. (예: UA가 흑백 모니터에서 색상을 렌더링할 필요는 없음)

저작도구가 적합하려면, 작성하는 스타일시트가 이 모듈의 일반 CSS 문법 및 각 기능별 개별 문법에 따라 문법적으로 올바르며, 이 모듈의 스타일시트 적합성 요구사항을 모두 충족해야 합니다.

부분 구현

작성자가 향후 호환성 파싱 규칙을 활용하여 폴백 값을 지정할 수 있도록, CSS 렌더러는 사용 가능한 수준의 지원이 없는 at-규칙, 속성, 속성값, 키워드, 기타 문법 구조를 반드시 무효로 처리(적절히 무시)해야 합니다. 특히 UA는 여러 값을 가진 속성 선언에서 지원되지 않는 값을 선택적으로 무시하고 지원되는 값만 적용해서는 안 되며: 값 중 하나라도 무효(지원되지 않음)이면 CSS는 전체 선언을 무시해야 합니다.

불안정 및 독점 기능 구현

향후 안정적 CSS 기능과 충돌을 피하려면, CSSWG는 최선의 사례에 따라 불안정독점 확장 기능을 구현할 것을 권장합니다.

비실험적 구현

명세가 후보 권고안 단계에 도달하면, 비실험적 구현이 가능해지며, 구현자는 명세에 따라 올바르게 구현되었음을 입증할 수 있는 모든 CR 수준 기능을 접두사 없이 릴리스해야 합니다.

CSS 구현 간의 상호운용성을 확보하고 유지하기 위해, CSS 작업 그룹은 비실험적 CSS 렌더러에게 구현 보고서(및 필요한 경우 해당 테스트케이스)를 W3C에 제출할 것을 요청합니다. W3C에 제출된 테스트케이스는 CSS 작업 그룹에서 검토 및 수정될 수 있습니다.

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

CR 종료 기준

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

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

명세는 최소 6개월간 후보 권고안(Candidate Recommendation) 상태를 유지합니다.

색인

이 명세에서 정의된 용어

참조로 정의된 용어

참고문헌

규범적 참고문헌

[CSS-2021]
Tab Atkins Jr.; Elika Etemad; Florian Rivoal. CSS Snapshot 2021. 2021년 12월 31일. NOTE. URL: https://www.w3.org/TR/css-2021/
[CSS-ANIMATIONS-1]
Dean Jackson; 외. CSS Animations Level 1. 2018년 10월 11일. WD. URL: https://www.w3.org/TR/css-animations-1/
[CSS-BACKGROUNDS-3]
Bert Bos; Elika Etemad; Brad Kemper. CSS Backgrounds and Borders Module Level 3. 2021년 7월 26일. CR. URL: https://www.w3.org/TR/css-backgrounds-3/
[CSS-COLOR-4]
Tab Atkins Jr.; Chris Lilley; Lea Verou. CSS Color Module Level 4. 2021년 12월 15일. WD. URL: https://www.w3.org/TR/css-color-4/
[CSS-CONDITIONAL-3]
David Baron; Elika Etemad; Chris Lilley. CSS Conditional Rules Module Level 3. 2021년 12월 23일. CR. URL: https://www.w3.org/TR/css-conditional-3/
[CSS-CONDITIONAL-5]
David Baron; Elika Etemad; Chris Lilley. CSS Conditional Rules Module Level 5. 2021년 12월 21일. WD. URL: https://www.w3.org/TR/css-conditional-5/
[CSS-DISPLAY-3]
Tab Atkins Jr.; Elika Etemad. CSS Display Module Level 3. 2021년 9월 3일. CR. URL: https://www.w3.org/TR/css-display-3/
[CSS-FONTS-5]
Myles Maxfield; Chris Lilley. CSS Fonts Module Level 5. 2021년 12월 21일. WD. URL: https://www.w3.org/TR/css-fonts-5/
[CSS-PSEUDO-4]
Daniel Glazman; Elika Etemad; Alan Stearns. CSS Pseudo-Elements Module Level 4. 2020년 12월 31일. WD. URL: https://www.w3.org/TR/css-pseudo-4/
[CSS-SCOPING-1]
Tab Atkins Jr.; Elika Etemad. CSS Scoping Module Level 1. 2014년 4월 3일. WD. URL: https://www.w3.org/TR/css-scoping-1/
[CSS-SYNTAX-3]
Tab Atkins Jr.; Simon Sapin. CSS Syntax Module Level 3. 2021년 12월 24일. CR. URL: https://www.w3.org/TR/css-syntax-3/
[CSS-TRANSITIONS-1]
David Baron; 외. CSS Transitions. 2018년 10월 11일. WD. URL: https://www.w3.org/TR/css-transitions-1/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 3. 2019년 6월 6일. CR. URL: https://www.w3.org/TR/css-values-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 4. 2021년 12월 16일. WD. URL: https://www.w3.org/TR/css-values-4/
[CSS-VARIABLES-1]
Tab Atkins Jr.. CSS Custom Properties for Cascading Variables Module Level 1. 2021년 11월 11일. CR. URL: https://www.w3.org/TR/css-variables-1/
[CSS-WRITING-MODES-3]
Elika Etemad; Koji Ishii. CSS Writing Modes Level 3. 2019년 12월 10일. REC. URL: https://www.w3.org/TR/css-writing-modes-3/
[CSS2]
Bert Bos; 외. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. 2011년 6월 7일. REC. URL: https://www.w3.org/TR/CSS21/
[CSSOM]
Daniel Glazman; Emilio Cobos Álvarez. CSS Object Model (CSSOM). 2021년 8월 26일. WD. URL: https://www.w3.org/TR/cssom-1/
[DOM]
Anne van Kesteren. DOM Standard. Living Standard. URL: https://dom.spec.whatwg.org/
[FETCH]
Anne van Kesteren. Fetch Standard. Living Standard. URL: https://fetch.spec.whatwg.org/
[HTML]
Anne van Kesteren; 외. HTML Standard. Living Standard. URL: https://html.spec.whatwg.org/multipage/
[MEDIAQ]
Florian Rivoal; Tab Atkins Jr.. Media Queries Level 4. 2021년 12월 25일. CR. URL: https://www.w3.org/TR/mediaqueries-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
[SELECT]
Tantek Çelik; 외. Selectors Level 3. 2018년 11월 6일. REC. URL: https://www.w3.org/TR/selectors-3/
[SELECTORS-4]
Elika Etemad; Tab Atkins Jr.. Selectors Level 4. 2018년 11월 21일. WD. URL: https://www.w3.org/TR/selectors-4/
[URL]
Anne van Kesteren. URL Standard. Living Standard. URL: https://url.spec.whatwg.org/

참고용 참고문헌

[CSS-ALIGN-3]
Elika Etemad; Tab Atkins Jr.. CSS Box Alignment Module Level 3. 2021년 12월 24일. WD. URL: https://www.w3.org/TR/css-align-3/
[CSS-BREAK-3]
Rossen Atanassov; Elika Etemad. CSS Fragmentation Module Level 3. 2018년 12월 4일. CR. URL: https://www.w3.org/TR/css-break-3/
[CSS-BREAK-4]
Rossen Atanassov; Elika Etemad. CSS Fragmentation Module Level 4. 2018년 12월 18일. WD. URL: https://www.w3.org/TR/css-break-4/
[CSS-FLEXBOX-1]
Tab Atkins Jr.; 외. CSS Flexible Box Layout Module Level 1. 2018년 11월 19일. CR. URL: https://www.w3.org/TR/css-flexbox-1/
[CSS-FONTS-4]
John Daggett; Myles Maxfield; Chris Lilley. CSS Fonts Module Level 4. 2021년 12월 21일. WD. URL: https://www.w3.org/TR/css-fonts-4/
[CSS-INLINE-3]
Dave Cramer; Elika Etemad; Steve Zilles. CSS Inline Layout Module Level 3. 2020년 8월 27일. WD. URL: https://www.w3.org/TR/css-inline-3/
[CSS-LISTS-3]
Elika Etemad; Tab Atkins Jr.. CSS Lists and Counters Module Level 3. 2020년 11월 17일. WD. URL: https://www.w3.org/TR/css-lists-3/
[CSS-PAGE-3]
Elika Etemad; Simon Sapin. CSS Paged Media Module Level 3. 2018년 10월 18일. WD. URL: https://www.w3.org/TR/css-page-3/
[CSS-SIZING-3]
Tab Atkins Jr.; Elika Etemad. CSS Box Sizing Module Level 3. 2021년 12월 17일. WD. URL: https://www.w3.org/TR/css-sizing-3/
[CSS-TEXT-3]
Elika Etemad; Koji Ishii; Florian Rivoal. CSS Text Module Level 3. 2021년 4월 22일. CR. URL: https://www.w3.org/TR/css-text-3/
[CSS-WRITING-MODES-4]
Elika Etemad; Koji Ishii. CSS Writing Modes Level 4. 2019년 7월 30일. CR. URL: https://www.w3.org/TR/css-writing-modes-4/
[SVG11]
Erik Dahlström; 외. Scalable Vector Graphics (SVG) 1.1 (Second Edition). 2011년 8월 16일. REC. URL: https://www.w3.org/TR/SVG11/

속성 색인

이름 초기값 적용 대상 상속 백분율 애니메이션 타입 정규 순서 계산값
all initial | inherit | unset | revert 개별 속성 참조 개별 속성 참조 개별 속성 참조 개별 속성 참조 개별 속성 참조 문법에 따름 개별 속성 참조