1 CSS 2.2 명세에 대하여

목차

1.1 CSS 2.2와 CSS 2의 비교

CSS 커뮤니티는 1998년에 CSS2 명세가 권고안이 된 이후로 CSS2 명세에 대해 상당한 경험을 쌓았습니다. CSS2 명세의 오류는 이후 2011년 첫 개정판 [CSS21]에서 수정되었으나, 새로운 오류 수정 사항이 필요했습니다.

많은 문제들은 곧 발표될 CSS3 명세에서 다루어질 예정이지만, 현재의 상황은 CSS2의 구현과 상호 운용성을 저해하고 있습니다. CSS 2.2 명세는 이러한 상황을 해결하고자 다음과 같은 노력을 기울였습니다:

따라서 CSS2 스타일 시트가 반드시 CSS 2.2와 전방 호환되는 것은 아니지만, CSS 2.2 기능만을 사용하는 스타일 시트는 오늘날 더 쉽게 호환되는 사용자 에이전트를 찾을 수 있고, 미래에도 전방 호환성을 유지할 가능성이 높습니다. 전방 호환성 파괴는 바람직하지 않지만, CSS 2.2의 개정이 가져다주는 이점이 더 크다고 생각합니다.

CSS 2.2는 CSS 2.1 및 CSS2를 기반으로 하며, 이들을 대체하도록 설계되었습니다. CSS2의 일부는 CSS 2.2에서 변경되지 않았으며, 일부는 수정되었고 일부는 삭제되었습니다. 삭제된 부분은 향후 CSS3 명세에서 사용할 수 있습니다. 향후 명세는 CSS 2.2를 참조해야 하며, 만약 CSS 2.2에서 제외된 기능이 필요하다면 해당 기능에 한하여 CSS2를 참조하거나, 해당 기능을 포함하는 CSS3 모듈을 참조하는 것이 바람직합니다.

1.2 명세 읽기

이 섹션은 비규범적입니다.

이 명세는 CSS 작성자와 CSS 구현자 두 유형의 독자를 염두에 두고 작성되었습니다. 우리는 명세가 작성자에게 효율적이고, 보기 좋으며, 접근 가능한 문서를 작성할 수 있는 도구를 제공하되, CSS의 구현 세부사항을 과도하게 노출하지 않기를 바랍니다. 구현자는 호환되는 사용자 에이전트를 만들기 위한 모든 정보를 찾을 수 있을 것입니다. 명세는 CSS에 대한 일반적인 소개로 시작하여, 끝으로 갈수록 점점 더 기술적이고 구체적으로 변합니다. 빠른 정보 접근을 위해 일반 목차, 각 섹션 시작 부분의 개별 목차, 그리고 색인이 전자 및 인쇄 버전 모두에서 쉬운 탐색을 제공합니다.

명세는 전자 및 인쇄 두 가지 표현 모드를 염두에 두고 작성되었습니다. 두 표현 방식은 대체로 비슷하겠지만, 독자들은 몇 가지 차이점을 발견할 수 있습니다. 예를 들어, 인쇄 버전에서는 링크가 작동하지 않으며, 전자 버전에는 페이지 번호가 표시되지 않습니다. 불일치가 있을 경우 전자 버전이 문서의 권위 있는 버전으로 간주됩니다.

1.3 명세의 구성 방식

이 섹션은 비규범적입니다.

명세는 다음과 같은 섹션으로 구성되어 있습니다:

섹션 2: CSS 2.2 소개
소개에는 CSS 2.2에 대한 간단한 튜토리얼과 설계 원칙에 대한 논의가 포함되어 있습니다.
섹션 3 - 18: CSS 2.2 참조 매뉴얼
참조 매뉴얼의 대부분은 CSS 2.2 언어 참조로 구성되어 있습니다. 이 참조는 CSS 2.2 스타일 시트에 들어갈 수 있는 내용(문법, 속성, 속성 값)과 사용자 에이전트가 호환성을 주장하기 위해 스타일 시트를 해석해야 하는 방법을 정의합니다.
부록:
부록에는 청각 속성(비규범적), HTML 4용 샘플 스타일 시트, CSS 2.1에서 변경된 사항, CSS 2.2의 문법, 규범적 및 정보성 참고 문헌 목록, 그리고 속성일반 색인을 위한 두 개의 색인이 포함되어 있습니다.

1.4 관례

1.4.1 문서 언어 요소 및 속성

1.4.2 CSS 속성 정의

각 CSS 속성 정의는 다음과 유사한 주요 정보 요약으로 시작합니다:

이름: property-name
값: 허용 값 및 문법
초기값: 초기 값
적용 대상: 이 속성이 적용되는 요소
상속: 이 속성이 상속되는지 여부
백분율: 백분율 값 해석 방식
미디어: 이 속성이 적용되는 미디어 그룹
계산값: 계산된 값 산출 방식

1.4.2.1

이 부분은 'property-name'이라는 속성에 대해 유효한 값 집합을 지정합니다. 속성 값은 하나 이상의 구성 요소로 이루어질 수 있습니다. 구성 값 유형은 여러 방식으로 지정됩니다:

  1. 키워드 값(예: auto, disc 등)
  2. 기본 데이터 타입은 "<"와 ">" 사이에 표기됩니다(예: <length>, <percentage> 등). 전자 문서 버전에서는 각 기본 데이터 타입이 정의로 링크됩니다.
  3. 해당 이름의 속성과 동일한 값 범위를 가지는 타입(예: <'border-width'>, <'background-attachment'> 등). 이 경우 타입 이름은 홑따옴표를 포함하여 "<"와 ">" 사이에 표기됩니다(예: <'border-width'>). 이러한 타입에는 'inherit' 값이 포함되지 않습니다. 전자 문서 버전에서는 해당 비단말 타입이 각각의 속성 정의로 링크됩니다.
  4. 속성 이름과 동일하지 않은 이름을 가진 비단말(non-terminal) 타입. 이 경우 비단말 이름은 "<"와 ">" 사이에 표기되며, 예를 들어 <border-width>처럼 나타납니다. <border-width>와 <'border-width'>의 차이에 주목하세요. 후자는 전자를 기반으로 정의됩니다. 비단말 정의는 명세에서 처음 등장하는 위치 근처에 있습니다. 전자 문서 버전에서는 해당 값 정의로 링크됩니다.

이 정의들에 사용된 기타 단어들은 반드시 따옴표 없이 그대로 사용되어야 하는 키워드입니다(예: red). 슬래시(/)와 쉼표(,)도 그대로 사용되어야 합니다.

구성 값은 다음과 같이 속성 값으로 배열될 수 있습니다:

나란히 배열된 값이 더블 앰퍼샌드보다 우선하며, 더블 앰퍼샌드는 더블 바보다, 더블 바는 바보다 우선합니다. 따라서 다음 줄들은 동일합니다:

    a b   |   c ||   d &&   e f
  [ a b ] | [ c || [ d && [ e f ]]]

각 타입, 키워드 또는 대괄호로 그룹화된 값 뒤에는 다음과 같은 수정자를 붙일 수 있습니다:

다음 예시는 다양한 값 유형을 보여줍니다:

값: N | NW | NE
값: [ <length> | thick | thin ]{1,4}
값: [<family-name> , ]* <family-name>
값: <uri>? <color> [ / <color> ]?
값: <uri> || <color>
값: inset? && [ <length>{2,4} && <color>? ]

구성 값은 부록 G.2에 설명된 토큰 기준으로 지정됩니다. 문법상 expr 생성 규칙의 구성 요소 사이에 공백이 허용되므로, 속성 값의 토큰 사이에도 공백이 나타날 수 있습니다.

참고: 많은 경우 토큰을 구분하기 위해 실제로 공백이 필요합니다. 예를 들어 '1em2em' 값은 숫자 '1'과 식별자 'em2em'으로 된 하나의 DIMEN 토큰으로 해석되어, 올바르지 않은 단위가 됩니다. 이 경우 두 길이 '1em'과 '2em'으로 해석하려면 '2' 앞에 공백이 필요합니다.

1.4.2.2 초기값

이 부분은 해당 속성의 초기 값을 지정합니다. 스타일 시트에서 지정된 값, 상속된 값, 초기 값 간의 상호작용에 대해서는 캐스케이드 섹션을 참고하세요.

1.4.2.3 적용 대상

이 부분은 속성이 적용되는 요소를 나열합니다. 모든 요소는 모든 속성을 갖고 있다고 간주되지만, 일부 속성은 특정 요소 유형에 렌더링 효과가 없습니다. 예를 들어, 'clear' 속성은 블록 레벨 요소에만 영향을 줍니다.

1.4.2.4 상속

이 부분은 속성 값이 상위 요소로부터 상속되는지 여부를 나타냅니다. 스타일 시트에서 지정된 값, 상속된 값, 초기 값 간의 상호작용에 대해서는 캐스케이드 섹션을 참고하세요.

1.4.2.5 백분율 값

이 부분은 속성 값에 백분율이 포함될 경우, 그 해석 방식을 나타냅니다. 여기 "N/A"가 표시되면 해당 속성은 값에 백분율을 허용하지 않는다는 뜻입니다.

1.4.2.6 미디어 그룹

이 부분은 속성이 적용되는 미디어 그룹을 나타냅니다. 미디어 그룹에 대한 정보는 비규범적입니다.

1.4.2.7 계산값

이 부분은 속성의 계산된 값에 대해 설명합니다. 계산된 값 섹션을 참고하세요.

1.4.3 축약 속성

일부 속성은 축약 속성입니다. 즉, 하나의 속성으로 여러 속성 값을 지정할 수 있습니다.

예를 들어, '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 }

이 예시에서 'font-variant', 'font-style'는 초기값을 가집니다.

1.4.4 참고 및 예시

잘못된 사용을 설명하는 모든 예시는 "ILLEGAL EXAMPLE"로 명확히 표시됩니다.

DOCTYPE 선언이 없는 HTML 예시는 HTML 4.01 Strict DTD [HTML4]에 부합하는 SGML 텍스트 엔티티입니다. 기타 HTML 예시는 각 예시에서 제시된 DTD를 따릅니다.

모든 참고는 정보 제공용입니다.

예시와 참고는 명세의 출처 HTML 내에서 표시되며, CSS 사용자 에이전트는 이를 특별하게 렌더링합니다.

1.4.5 이미지 및 상세 설명

전자 명세의 대부분의 이미지는 그 내용을 설명하는 "상세 설명"과 함께 제공됩니다. 상세 설명 링크는 이미지 뒤에 "[D]"로 표시됩니다.

이미지와 상세 설명은 정보 제공용입니다.

1.5 감사의 글

이 섹션은 비규범적입니다.

CSS 2.2는 CSS2 및 CSS 2.1을 기반으로 합니다. CSS2에 기여한 사람들은 CSS2 감사의 글 섹션과 CSS 2.1에 기여한 사람들은 CSS 2.1 감사의 글 섹션에서 확인할 수 있습니다.

다음 분들께 감사드립니다. 이 분들은 www-style 메일링 리스트에서 의견과 피드백을 통해 본 명세 작성에 도움을 주셨습니다: 추후 작성 예정.

추가로, 특별히 감사의 말씀을 전하고 싶은 분들: 추후 작성 예정.

테스트 스위트 작성에 도움을 주신 다음 분들께도 깊이 감사드립니다: 추후 작성 예정 … 그리고 CSS1 테스트 스위트에 기여한 모든 분들께도 감사드립니다.