CSS 박스 사이징 모듈 레벨 3

W3C 작업 초안,

이 문서에 대한 추가 정보
이 버전:
https://www.w3.org/TR/2021/WD-css-sizing-3-20211217/
최신 공개 버전:
https://www.w3.org/TR/css-sizing-3/
편집자 초안:
https://drafts.csswg.org/css-sizing-3/
이전 버전:
히스토리:
https://www.w3.org/standards/history/css-sizing-3
피드백:
CSSWG 이슈 저장소
CSSWG GitHub
명세 내 인라인
편집자:
Tab Atkins (Google)
Elika J. Etemad / fantasai (초청 전문가)
이 명세에 대한 수정 제안:
GitHub 편집자

요약

이 모듈은 CSS 사이즈 속성에 콘텐츠 기반의 "내재적" 크기와 컨텍스트 기반의 "외재적" 크기를 나타내는 키워드를 확장하여, CSS가 콘텐츠에 맞는 박스나 특정 레이아웃 컨텍스트에 맞는 박스를 더 쉽게 설명할 수 있도록 합니다.

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

이 문서의 상태

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

이 문서는 CSS 작업 그룹작업 초안으로 권고 절차를 사용하여 공개했습니다. 작업 초안으로 공개된 것은 W3C 및 회원의 승인 의미가 아닙니다.

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

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

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

이 문서는 W3C 특허 정책에 따라 운영되는 그룹에 의해 작성되었습니다. W3C는 그룹 산출물과 관련해 공개된 특허 공개 목록을 유지합니다. 해당 페이지에는 특허 공개 방법도 포함되어 있습니다. 어떤 개인이 필수 청구(Essential Claim(s))가 있다고 판단되는 특허를 실제로 알고 있다면, W3C 특허 정책 6항을 따라 정보를 공개해야 합니다.

다음 기능들은 위험에 처해 있으며, CR 기간 중 제외될 수 있습니다:

“위험(at-risk)”은 W3C 프로세스 용어로, 해당 기능이 제외되거나 지연될 위험이 있다는 뜻은 아닙니다. 이는 WG가 해당 기능이 상호 운용적으로 적시에 구현되기 어려울 수 있다고 판단했으며, 제안 권고(Proposed Rec)로 전환 시 새 후보 권고(Candidate Rec)를 새로 공개하지 않고 기능을 제외할 수 있도록 표시한 것입니다.

1. 소개

이 섹션은 규범적이지 않습니다.

CSS 레이아웃에는 다양한 레이아웃 계산에 사용되는 여러 가지 자동 크기 지정 개념이 있습니다. 이 섹션에서는 이 명세의 레이아웃 동작을 다른 모듈에서 사용되는 계산과 연결하는 데 도움이 되는 보다 정확한 용어를 정의하고, widthheight 속성을 위한 새로운 키워드를 정의하여 작성자가 이러한 크기 계산 결과로 요소의 치수를 지정할 수 있도록 합니다.

이 명세에는 삽화가 필요합니다! 이슈를 참고하세요.

1.1. 모듈 상호작용

이 모듈은 width, height, min-width, min-height, max-width, max-heightcolumn-width 기능을 [CSS2] 10장과 [CSS3COL]에서 정의한 내용을 확장합니다.

이 모듈에서 box-sizing 속성의 정의는 [CSS-UI-3]의 정의를 대체합니다.

1.2. 값 정의

이 명세는 CSS 속성 정의 규약[CSS2]에서 따르며, 값 정의 문법[CSS-VALUES-3]에서 사용합니다. 이 명세에서 정의되지 않은 값 타입은 CSS 값 및 단위 [CSS-VALUES-3]에서 정의됩니다. 다른 CSS 모듈과 결합할 경우 이러한 값 타입의 정의가 확장될 수 있습니다.

각 속성의 정의에 나열된 속성별 값 외에도, 이 명세에서 정의된 모든 속성은 CSS-전역 키워드도 속성 값으로 허용합니다. 가독성을 위해 별도로 반복하지 않았습니다.

2. 용어

좌표 축과 치수에 관련된 주요 용어는 CSS Writing Modes 3 § 6 추상 박스 용어에서 정의되어 있습니다.

size
하나 또는 두 개의 차원 측정값: block size 및/또는 inline size; 또는 width 및/또는 height.
왼쪽에서 오른쪽, 위에서 아래로 쓰는 영어의 경우,
				          수평 width와 inline size가 동의어이며,
				          수직 height와 block size가 동의어입니다. 위에서 아래, 오른쪽에서 왼쪽으로 쓰는 일본어의 경우,
				           수평 width와 block size가 동의어이며,
				           수직 height와 inline size가 동의어입니다.
width 또는 heightinline size 또는 block size에 해당하는지는 쓰기 모드에 따라 달라집니다.
inner size
content-box sizebox에 대해 의미합니다.
Inner size
outer size
margin-box sizebox에 대해 의미합니다.
Outer size
definite size
레이아웃을 수행하지 않고도 결정할 수 있는 크기; 즉, <length>, 텍스트의 측정값(줄 바꿈 고려 없이), initial containing block의 크기, 또는 <percentage> 또는 기타 수식 (예를 들어 비-대체 블록의 “stretch-fit” 크기 지정 [CSS2]) 이 전적으로 definite 크기를 기준으로 해석되는 경우를 의미합니다.

또한, 절대 위치 지정된 요소의 containing block의 크기는 해당 요소에 대해 항상 definite입니다.

indefinite size
definite가 아닌 크기. Indefinite available space는 사실상 무한합니다.
available space
박스가 배치되는 공간을 나타내는 크기로, 해당 포맷팅 컨텍스트의 규칙에 따라 결정됩니다. 박스에 허용되는 공간은 보통 containing block의 측정값(만약 definite인 경우) 또는 무한 크기( indefinite인 경우)입니다. Available spacemin-content constraint 또는 max-content constraint가 될 수도 있으며, 이는 그 공간에 배치되는 박스가 해당 제약 조건 하에 배치되도록 강제합니다.
stretch fit
주어진 크기에 stretch fit하는 것은 해당 크기에서 박스의 계산된 마진(겹치지 않고, auto는 0으로 처리), 테두리, 패딩을 해당 차원에서 뺀 값 (즉, outer size가 완벽히 맞도록), 그리고 0이하일 경우 바닥값을 0으로 하여 (inner size가 음수가 되지 않도록) 계산합니다.

참고: 이는 auto 너비를 정상 흐름에 있는 비-대체 블록에 대해 CSS2.1§10.3.3에서 계산하는 데 사용되는 공식입니다.

fallback size
일부 크기 지정 알고리즘은 무한 크기와 잘 작동하지 않습니다. 이 경우에는 fallback size를 대신 사용합니다. 별도로 명시되지 않는 한, 이는 initial containing block의 크기입니다.

2.1. 자동 박스 크기

CSS에는 자동으로 결정되는 크기의 네 가지 유형이 있습니다 (컨텍스트에 따라 auto 크기 지정 규칙의 결과):

stretch-fit size
stretch-fit inline size
stretch-fit block size
박스의 size가 해당 축의 available spaceouter size가 채울 때의 값입니다; 다시 말해, stretch fitavailable space에 들어맞는 경우, 해당 공간이 definite일 때를 의미합니다. available spaceindefinite인 경우에는 정의되지 않습니다.

참고: inline axis에서는 이 값을 CSS2.1§10.3.5에서 "available width"라고 하며, CSS2.1§10.3.3 규칙으로 계산합니다.

참고: 이 크기를 사용하는 계산에서는 available spaceindefinite일 때의 대체 동작(fallback)을 지정해야 합니다.

max-content size
박스가 무한한 available space를 가질 때 해당 축에서의 "이상적" size입니다. 일반적으로 해당 축에서 박스가 콘텐츠를 감싸면서 가질 수 있는 가장 작은 size이며, 남는 공간을 최소화하면서 오버플로우를 방지합니다.
max-content inline size

박스가 size가 inline axis에서의 "이상적" 값. 보통, 박스 내의 모든 소프트 줄바꿈 기회를 사용하지 않을 때 콘텐츠를 감싸는 가장 좁은 inline size입니다. (§ 5 내재적 크기 결정 참고.)

참고: 이것은 CSS2.1§10.3.5에서 "preferred width", CSS2.1§17.5.2.2에서 "maximum cell width"라고 불립니다.

max-content block size

박스가 size가 block axis에서의 "이상적" 값. 보통은 레이아웃 후 콘텐츠의 block size입니다.

min-content size
명목상, 박스가 오버플로우를 피할 수 있는 가장 작은 size입니다. 더 큰 size를 선택하면 오버플로우를 피할 수 있지만, 그 외에는 오버플로우가 발생합니다. 공식적으로는 박스가 min-content constraint에서 크기 지정된 값입니다. § 5 내재적 크기 결정 참고.
min-content inline size

min-content size의 inline axis 값. 박스 내의 모든 소프트 줄바꿈 기회를 사용할 때 콘텐츠를 감싸는 inline size입니다.

참고: CSS2.1§10.3.5에서는 "preferred minimum width", CSS2.1§17.5.2.2에서는 "minimum content width"라고 불립니다.

min-content block size

min-content size의 block axis 값. block container, 테이블, inline box의 경우 max-content block size와 동일합니다.

fit-content size
fit-content inline size
fit-content block size
주어진 축의 available spacedefinite인 경우, clamp(min-content size, stretch-fit size, max-content size) (즉, max(min-content size, min(max-content size, stretch-fit size)))와 같습니다. min-content constraint 하에서는 min-content size와 같고, 그 외에는 해당 축의 max-content size와 같습니다.

참고: 이것은 CSS2.1§10.3.5와 CSS Multi-column Layout § 3.4에서 "shrink-to-fit" width라고 불립니다.

intrinsic size
max-content size 또는 min-content size처럼 주로 콘텐츠의 크기에서 발생하는 값입니다. (이 용어가 때로는 이 두 크기 중 하나에서 파생된 값을 뜻하기도 합니다.)

대체 요소(replaced elements)는 종종 intrinsic sizenatural dimensions에서 가져옵니다.

2.2. 내재적 크기 기여

max-content contribution
박스가 자신의 containing blockmax-content size에 기여하는 크기입니다.
min-content contribution
박스가 자신의 containing blockmin-content size에 기여하는 크기입니다.
intrinsic size contribution
max-content contribution, min-content contribution 또는 이와 유사하게 계산된 콘텐츠 기반 크기 기여입니다.

내재적 크기 기여는 박스의 outer size를 기준으로 계산되며, 이때 auto 마진은 0으로 처리됩니다.

2.3. 내재적 크기 제약

max-content constraint
박스의 containing block이 부여하는 크기 제약으로, max-content contribution을 산출하게 합니다.
min-content constraint
박스의 containing block이 부여하는 크기 제약으로, min-content contribution을 산출하게 합니다.
preferred aspect ratio
박스에 내재된 너비:높이 비율로, 여러 크기 지정 알고리즘이 가능한 한 다른 크기 입력을 존중하면서 해당 비율에 맞는 값을 산출하도록 합니다. 별도로 명시하지 않는 한, 박스의 preferred aspect rationatural aspect ratio가 있을 경우 그 값을 사용하며, content box에 적용됩니다. 대부분의 박스는 preferred aspect ratio가 없습니다.

3. 박스 크기 지정

3.1. 크기 속성

이 섹션에서는 크기 속성 width, height, min-width, min-height, max-width, 그리고 max-height를 정의합니다. 이들의 가능한 값은 다음 섹션 § 3.2 크기 값: <length-percentage>, auto | none, min-content, max-content, fit-content() 값에서 정의합니다.

참고: 이 속성들의 추가적인 플로우-상대 별칭은 [CSS-LOGICAL-1]에서 정의됩니다.

각 크기 속성 쌍별로 (예: widthheight) 축약형(shorthand)을 정의하고 싶으나 @page size 디스크립터와 이름 충돌이 있어 Level 4로 연기되었습니다. 이 문제의 해결 방법에 대한 제안을 환영합니다. 논의를 참고하세요.

3.1.1. 선호 크기 속성: widthheight 속성

이름: width, height
값: auto | <length-percentage> | min-content | max-content | fit-content(<length-percentage>)
초기값: auto
적용 대상: 모든 요소(단, 비-대체 inline 제외)
상속: 아니오
백분율: containing block의 width/height 기준
계산값: 지정값 그대로, <length-percentage> 값은 계산됨
정식 순서: 문법대로
애니메이션 타입: 계산값 타입별, fit-content() 내부로 재귀

widthheight (physical) 속성은 박스의 선호 widthheight를 각각 지정합니다.

3.1.2. 최소 크기 속성: min-widthmin-height 속성

이름: min-width, min-height
값: auto | <length-percentage> | min-content | max-content | fit-content(<length-percentage>)
초기값: auto
적용 대상: width 또는 height를 허용하는 모든 요소
상속: 아니오
백분율: containing block의 width/height 기준
계산값: 지정값 그대로, <length-percentage> 값은 계산됨
정식 순서: 문법대로
애니메이션 가능: 계산값 기준, fit-content() 내부로 재귀

min-widthmin-height 속성은 박스의 최소 너비(또는 “min width”) 및 최소 높이(또는 “min height”)를 각각 지정합니다.

참고: auto의 초기값은 새롭게 변경되었습니다. [CSS2]에서는 초기값이 0이었습니다.

3.1.3. 최대 크기 속성: max-widthmax-height 속성

이름: max-width, max-height
값: none | <length-percentage> | min-content | max-content | fit-content(<length-percentage>)
초기값: none
적용 대상: width 또는 height를 허용하는 모든 요소
상속: 아니오
백분율: containing block의 width/height 기준
계산값: 지정값 그대로, <length-percentage> 값은 계산됨
정식 순서: 문법대로
애니메이션 가능: 계산값 기준, fit-content() 내부로 재귀

max-widthmax-height 속성은 박스의 최대 너비(또는 “max width”) 및 최대 높이(또는 “max height”)를 각각 지정합니다.

3.2. 크기 값: <length-percentage>, auto | none, min-content, max-content, 그리고 fit-content()

<length-percentage>
<length> 및/또는 <percentage>를 사용하여 박스의 크기를 지정합니다. box-sizing 속성은 content box 또는 border box 중 어떤 영역이 측정되는지 나타냅니다.

백분율은 박스의 containing block의 width/height에 따라 해석됩니다. 만약 특정 축에서 containing block의 크기가 박스의 크기에 따라 달라지는 경우, 백분율 해석에 관한 특별 규칙은 해당 레이아웃 모듈을 참고하세요.

음수 값은 사용할 수 없습니다.

auto
width/height의 경우, 자동 크기 (자동 block size/자동 inline size) 를 지정합니다. 관련 레이아웃 모듈에서 계산 방법을 참고하세요.

min-width/min-height의 경우, 자동 최소 크기를 지정합니다. 관련 레이아웃 모듈에서 다르게 정의하지 않는 한, 사용 값은 0으로 처리됩니다. 하위 호환을 위해, 이 키워드의 resolved value는 모든 [CSS2] display type에 대해 0입니다: 블록 및 인라인 박스, 인라인 블록, 그리고 모든 테이블 레이아웃 박스에 대해. 박스가 생성되지 않는 경우에도 0으로 처리됩니다.

none
박스의 크기에 제한이 없습니다.
min-content
관련 축에서 min-content size를 사용합니다. 박스의 block size의 경우, 별도 명시가 없다면 자동 크기와 동일합니다.
max-content
관련 축에서 max-content size를 사용합니다. 박스의 block size의 경우, 별도 명시가 없다면 자동 크기와 동일합니다.
fit-content(<length-percentage>)
fit-content 공식에서 available space를 지정된 인수로 대체하여 사용합니다, 즉, min(max-content, max(min-content, <length-percentage>))와 같습니다. <length-percentage> 인수의 해석은 독립적으로 사용할 때와 동일하게 처리됩니다.

음수 <length-percentage> 값은 사용할 수 없습니다.

모든 경우에서, 사용 값은 음수가 되지 않도록 바닥값 처리되어 inner size가 음수가 되지 않습니다.

참고: min-content, max-content, fit-content() 값은 Level 3에서 새롭게 추가된 내용입니다.

참고: flex-basis 속성도 이 새로운 키워드를 지원하며, 값 정의는 <width>를 참조합니다.

참고: 이 섹션은 이전에 stretchfit-content를 각각 stretch-fit sizefit-content size를 나타내는 키워드로 정의했었습니다. 이 키워드는 Level 4로 연기되었으며, (추가적으로 contain 키워드도 stretch와 유사하게 동작하지만, preferred aspect ratio를 유지함) indefinite available space 상황에서의 동작을 더 잘 정리하기 위해 연기되었습니다.

3.2.1. auto처럼 동작”

width/heightauto로 계산되거나, auto가 지정된 것처럼 동작하도록 정의된 경우 (예: 블록 백분율 높이indefinite 크기 기준으로 해석될 때, CSS2§10.5 참고), 두 경우 모두 해당 속성이 auto처럼 동작한다고 합니다.

참고: 레거시 명세에서 레이아웃 동작을 정의할 때, 특히 [CSS2]에서는 width/height의 계산값이 auto인 조건을 명시적으로 언급할 수 있습니다; 이 중 일부는 auto처럼 동작으로 해석해야 하며, CSSWG에 업데이트 요청해야 합니다.

이 섹션을 새로운 용어 automatic size 참조로 대체해야 합니다.

3.2.2. 플로트 포함 또는 제외

이 섹션은 규범적이지 않습니다.

block box 경계는 일반적으로 플로트에 영향을 받지만, 때로는 작성자가 자신(자식)의 플로트만 포함하거나 외부 플로트를 제외해야 할 때가 있습니다. 블록 레이아웃의 경우, display: flow-root를 지정하면 해당 박스가 formatting context 루트가 되어 이러한 동작을 하게 됩니다.

참고: Flex, Grid, Table 레이아웃에 참여하는 박스는 자동으로 이 동작을 가집니다.

3.3. 크기 지정 박스 경계: box-sizing 속성

이름: box-sizing
값: content-box | border-box
초기값: content-box
적용 대상: width 또는 height를 허용하는 모든 요소
상속: 아니오
백분율: N/A
계산값: 지정된 키워드
정식 순서: 문법대로
애니메이션 타입: 불연속

box-sizing 속성은 고정 크기(<length><percentage> 등)가 content box 또는 border box에 할당되는지 정의합니다. 이 속성은 모든 크기 속성의 해석에 영향을 주며, flex-basis도 포함됩니다.

값의 의미는 다음과 같습니다:

content-box
크기 속성<length-percentage>로 지정된 크기는 박스의 inner size를 의미하며, 마진/테두리/패딩은 제외됩니다: 해당 값은 content box에 적용됩니다. 박스의 패딩과 테두리는 지정된 widthheight 외부에 레이아웃/그려집니다.

참고: 이는 CSS2.1에서 width/height가 지정되는 기본 동작입니다.

border-box
크기 속성<length-percentage>로 지정된 크기는 시각적으로 보이는 박스 크기(테두리/패딩 포함, 마진 제외)를 의미하며, border box에 적용됩니다. 박스의 패딩과 테두리는 지정된 widthheight 내부에 레이아웃/그려지며, content box는 남은 공간을 채우고, 0 이하로는 바닥값 처리됩니다.

콘텐츠 width/height는 지정된 <length-percentage>에서 해당 면의 테두리/패딩 너비를 빼서 계산됩니다. 콘텐츠 width/height는 음수가 될 수 없으므로, 해당 계산은 0으로 바닥값 처리됩니다.

사용 값(예: getComputedStyle() 등으로 노출되는 값)은 border box 기준입니다.

box-sizing에 영향을 받는 값에는 원시 <length-percentage> 값과 fit-content()와 같은 함수적 표기 안의 값이 포함됩니다. 반대로, automin-content와 같은 비수치 값은 box-sizing의 영향을 받지 않습니다 (별도 명시가 없는 한).

예를 들어, 아래 속성은 박스의 content-box 크기를 100px로, border-box 크기를 120px로 설정합니다:
.box {
  box-sizing:   content-box; /* 기본값 */
  width:        100px;
  padding-left: 10px;
  border-left:  10px solid;
}

반면, border-box로 변경하면, border-box가 100px로 설정되고, content-box 크기가 80px로 계산됩니다:

.box {
  box-sizing:   border-box;
  width:        100px;
  padding-left: 10px;
  border-left:  10px solid;
}

inner size는 0보다 작을 수 없으므로, padding + border가 지정된 border-box 크기보다 크면 박스는 지정 크기보다 더 커집니다. 이 경우 content-box 크기는 0px로 바닥값 처리되고, border-box 크기는 120px이 됩니다. 즉, width: 100px가 border box에 지정되어 있어도 실제로는 다음과 같이 됩니다:

.box {
  box-sizing:   border-box;
  width:        100px;
  padding-left: 60px;
  border-left:  60px solid;
  /* padding + border = 120px */
}
이 예제는 box-sizing을 사용해 고정 크기 테두리를 가진 두 div를 div 컨테이너 내에서 수평으로 균등 분할합니다. 그렇지 않으면 추가 마크업이 필요할 수 있습니다.

CSS 예시:

div.container {
  width:38em;
  border:1em solid black;
}

div.split {
  box-sizing:border-box;
  width:50%;
  border:1em silver ridge;
  float:left;
}

HTML 예시 조각:

<div class="container">
<div class="split">이 div는 왼쪽 절반을 차지합니다.</div>
<div class="split">이 div는 오른쪽 절반을 차지합니다.</div>
</div>

CSS 및 HTML 예시 시연:

이 div는 왼쪽 절반을 차지합니다.
이 div는 오른쪽 절반을 차지합니다.
위의 두 div는 나란히 표시되며, 각각(테두리 포함) 컨테이너의 콘텐츠 너비의 50%를 차지해야 합니다. 만약 두 div가 위아래로 쌓이면, 사용 중인 브라우저는 box-sizing을 지원하지 않는 것입니다.

참고: button과 같은 일부 HTML 요소는 기본적으로 border-box 동작을 가집니다. 어떤 요소가 이 동작을 가지는지는 HTML에서 확인하세요.

레거시 CSS 명세에서는 width, height, 최소(min) 너비, 최소(min) 높이, 최대(max) 너비, 최대(max) 높이 용어가, 별도 명시가 없다면 보통 inner size (content-box 크기) 를 의미합니다. box의 경우도 마찬가지입니다.

명확한 용어 구분을 위해서는 CSS User Interface 3 § 3.1 박스 모델 변경: box-sizing 속성의 Visual formatting model details 섹션([CSS2])을 참고하세요.

모호함을 피하기 위해, 명세 작성자는 width 또는 height 등 용어를 추가 설명 없이 모호하게 사용하지 말고, 각 경우에 맞게 inner size, outer size, border-box의 크기, 계산값크기 속성의 계산값을 명확하게 언급하고 연결해야 합니다.

3.4. 새로운 컬럼 크기 값: min-content, max-content, fit-content()

이름: column-width
새 값: min-content | max-content | fit-content(<length-percentage>)
계산값: 지정된 대로, <length-percentage> 값은 계산됨
애니메이션 타입: 계산값 타입 기준

column-width의 값으로 사용할 때, 새로운 키워드는 최적의 컬럼 너비를 지정합니다:

min-content
멀티컬럼 컨테이너의 콘텐츠의 min-content inline size로 최적의 컬럼 너비를 지정합니다.
max-content
멀티컬럼 컨테이너의 콘텐츠의 max-content inline size로 최적의 컬럼 너비를 지정합니다.
fit-content(<length-percentage>)
최적의 컬럼 너비를 다음과 같이 지정합니다: min(max-content size, max(min-content size, <length-percentage>))

참고: 컬럼 너비는 컬럼마다 달라지지 않습니다. 컬럼 너비가 멀티컬럼 컨테이너의 콘텐츠에 의해 결정될 때 (위 키워드처럼), 모든 콘텐츠가 고려되며, 계산된 너비는 모든 컬럼에 동일하게 적용됩니다.

4. 외재적 크기 결정

외재적 크기 결정은 요소의 컨텍스트에 따라 크기를 결정하며, 콘텐츠는 고려하지 않습니다.

4.1. 백분율 크기 결정

백분율은 박스의 containing block 기준으로 박스의 크기를 지정합니다.

예를 들어, 다음 마크업에서:
<article style="height: 60em">
  <figure style="height: 50%;">
    <img style="height: 50%;">
  </figure>
</article>

상위 박스의 크기가 콘텐츠에 따라 달라질 때 백분율을 해석하는 방법은 § 5.2.1 백분율 크기 박스의 내재적 기여에서 확인하세요.

5. 내재적 크기 결정

내재적 크기 결정은 요소의 콘텐츠를 바탕으로 크기를 결정하며, 컨텍스트는 고려하지 않습니다.

5.1. 내재적 크기

박스의 각 축에서의 min-content size는 해당 축에서 float 요소가 auto 크기를 가지며 (그리고 해당 축에 최소 또는 최대 크기가 없고) containing block이 해당 축에서 0 크기일 때의 크기입니다. (즉, “shrink-to-fit”로 크기가 지정될 때의 최소 크기입니다.)

박스의 각 축에서의 max-content size는 해당 축에서 float 요소가 auto 크기를 가지며 (그리고 해당 축에 최소 또는 최대 크기가 없고) containing block이 해당 축에서 무한대 크기일 때의 크기입니다. (즉, “shrink-to-fit”로 크기가 지정될 때의 최대 크기입니다.)

min-content sizemax-content size를 합쳐 내재적 크기라고 부릅니다.

참고: 박스에 preferred aspect ratio가 있으면, 반대 방향의 크기 제약이 전달되어 해당 축의 auto 크기에 영향을 줄 수 있습니다. CSS2§10 참고.

이 명세는 float의 크기 결정 방법을 정의하지 않습니다. [CSS2]를 참고하세요. 다만, 내재적 크기대체 요소natural size가 없는 경우 아래처럼 정의합니다:

preferred aspect ratio가 있는 경우:
min-content size는 0을 사용합니다.

max-content size의 경우:

  • available spacedefiniteinline axis라면, 해당 크기로 stretch fit하여 inline size를 구하고, aspect ratio로 block size를 계산합니다.

  • 그 외의 경우 박스의 <length>계산값으로 min-width 또는 min-height에 지정되어 있다면, 해당 크기를 사용해 다른 방향을 aspect ratio로 계산합니다; 두 방향 모두 <length> 최소값이면, 더 큰 전체 크기가 되도록 선택합니다.

    참고: 이 경우는 이전까지 300x150 기본값에서 계산했으나, 이제 박스의 min size에서 계산합니다. 이 방식이 더 적절하고 웹 호환성도 높을 것으로 보이지만, 문제가 있다면 CSSWG에 피드백을 주세요.

  • 그 외의 경우 inline sizeinitial containing block의 해당 방향과 맞추고, 다른 방향은 aspect ratio로 계산합니다.

preferred aspect ratio가 없는 경우:
min-content sizemax-content size 모두에 대해:
  • 박스가 해당 방향에 <length>계산된 최소 크기 (min-width/min-height)가 지정되어 있다면, 해당 크기를 사용합니다.

    참고: 이 동작은 auto 값이 min size properties에 추가되어 가능해졌습니다. 더 나은 동작이라 생각되지만, 웹 호환성에 문제가 있으면 CSSWG에 피드백을 주세요.

  • 그 외의 경우, 너비에 300px, 높이에 150px을 사용합니다.

height 또는 widthauto처럼 동작하는 블록/인라인 대체 요소의 경우, 사실상 max-content size(CSS2§10.3.2)를 사용하게 되므로, 이 명세는 heightwidth가 모두 auto처럼 동작하는 대체 요소의 미정의 케이스에 대해 위 규칙을 적용합니다.

참고: 이 명세는 float의 크기 결정 방법을 정의하지 않습니다. [CSS2] 및 해당 display type의 CSS 명세, 또는 기존 구현을 참고하시기 바랍니다. 향후 명세에서 자세히 정의할 예정이며, CSS2의 “정의”를 대체할 것입니다.


HTML의 <input type=text><textarea>와 같은 텍스트 입력 컨트롤의 auto 크기는 일반적으로 고정 크기이지만, 해당 요소의 콘텐츠를 활용해 비대체 블록 컨테이너처럼 콘텐츠 기반 내재적 크기를 결정할 수 있습니다. min-content, max-content 키워드는 크기 속성에서 값으로 사용될 때, 폼 컨트롤의 값이 박스 내 텍스트로 렌더링되는 경우 콘텐츠 기반 크기를 의미하며, 일반 비대체 요소처럼 시각적 콘텐츠에 맞게 크기를 조정할 수 있습니다.

이 경우 콘텐츠는 입력 컨트롤의 값 (textarea의 경우 raw value, input의 경우 value)이며, 사람이 읽기 쉽거나/로컬라이즈된 형태로 변환될 수 있습니다. 이 값이 입력 컨트롤의 자식 text run으로 처리되어, 입력 컨트롤이 실제로 줄바꿈을 허용하는 곳에만 소프트 줄바꿈 기회를 허용합니다. 입력 컨트롤에 플레이스홀더 텍스트가 값 표시 영역에 오버레이되도록 지정된 경우, 해당 텍스트도 콘텐츠 기반 크기 계산에 포함됩니다—현재 플레이스홀더가 보이는지와 관계없이 측정됩니다. (즉, 입력 컨트롤의 콘텐츠 기반 내재적 크기는 플레이스홀더 텍스트에 맞추는 크기와 값에 맞추는 크기 중 더 큰 값입니다.)

UA는 폼 컨트롤의 min-contentmax-content size에 최소값을 지정할 수 있습니다 (예: 0폭 문자 1개를 포함할 수 있는 크기, 또는 터치 타겟의 최소 사용 가능 크기 등). 이를 통해 캐럿 표시 공간 확보 및 폼 컨트롤의 사용성을 보장합니다.

참고: 이는 iframe 또는 기타 콘텐츠 포함 대체 요소에도 확장될 수 있습니다 (논의 참고), 하지만 텍스트 입력이 주요 사례이며, 문서 내부 요소라 추가적인 복잡성이 가장 적습니다.

5.2. 내재적 기여

박스의 각 축에서 min-content contribution/max-content contribution은 해당 박스만 포함하는 가상의 auto 크기 float의 콘텐츠 박스 크기이며, 그 float의 containing block이 0 크기/무한 크기일 때를 기준으로 합니다.

참고: 이 명세는 이러한 크기를 정확히 어떻게 결정하는지 정의하지 않습니다. [CSS2]와 관련 display type의 CSS 명세, 아래의 백분율 처리 규칙, 그리고 기존 구현을 참고하세요.

5.2.1. 백분율 크기 박스의 내재적 기여

때때로 백분율 크기 박스의 containing block의 크기가 박스 자체의 내재적 크기 기여에 따라 달라져서, 순환적 의존성이 생길 수 있습니다. 이러한 박스의 내재적 크기 기여(콘텐츠 기반 automatic minimum size 계산 포함)를 계산할 때, 동일 축의 크기를 기준으로 해석되는 백분율 값 (순환 백분율 크기) 은 특별히 해석됩니다:

  1. 박스가 비-대체(non-replaced)일 경우, 최대 크기 속성 또는 선호 크기 속성 (width/max-width/height/max-height) 값에 백분율이 포함되어 있고 그 값이 순환적인 경우, 박스의 내재적 크기 기여만 계산할 때 해당 속성의 초기값으로 취급합니다. 예를 들어, width: calc(20px + 50%)인 박스의 max-content contribution은 widthauto인 것처럼 계산합니다. (실제 박스 크기 산정 시에는 백분율이 정상적으로 적용됩니다; 아래 참고.)
  2. 박스가 대체(replaced)일 경우도 마찬가지로, 최대 크기 속성 또는 선호 크기 속성 값에 백분율이 포함되고 그 값이 순환적이면, 박스의 max-content contribution만 계산할 때 초기값으로 취급합니다.
  3. 박스가 대체(replaced)인 경우, 순환 백분율최대 크기 속성 또는 선호 크기 속성 (width/max-width/height/max-height) 값에 있으면, 해당 축에서 min-content contribution 계산 시 0으로 해석합니다. (HTML에서 적용되는 요소 목록은 § 5.2.2 압축 가능한 대체 요소 참고.) 박스에 preferred aspect ratio가 있다면, 이 min-content contribution은 반대 축의 <length-percentage> 최소 크기로 바닥값 처리합니다—해당 백분율도 0으로 해석—aspect ratio를 통해 전달합니다.

    전달된 백분율을 0이 아닌 containing block 기준으로 해석할지 논의 필요. 논의

    UA는 UI 요소가 항상 보여야 할 때 등 UI 고려에 따라 min-content contribution의 바닥값을 추가로 지정할 수 있습니다 (예: select의 드롭다운 화살표 등).

    참고: min-content contribution은 항상 해당 축의 최소 크기로도 바닥값 처리됩니다.

    이 규칙은 콘텐츠 기반 automatic minimum size 또는 그에 상응하는 크기 기여 계산에도 적용되며, definite “지정 크기 제안”을 산출합니다.

    예를 들어, inputwidth: calc(50% + 50px)가 지정된 경우 min-content contribution50px이 되며, 추가로 수평 마진/테두리/패딩이 더해집니다.
  4. 최소 크기 속성, 마진, 패딩, gutter의 경우, 순환 백분율은 내재적 크기 기여 산정 시 0으로 해석합니다.
순환 백분율 내재적 크기 기여 규칙 요약(위 내용)
요소 유형 대체 비-대체
기여 유형 min-content max-content min-content max-content
최소 크기 & 마진/패딩 zeroᵈ zeroᵈ zeroᵈ zeroᵈ
최대 & 선호 크기 zeroᶜ initialᵇ initialᵃ initialᵃ

그런 다음, 별도 명시가 없는 한 containing block의 콘텐츠의 실제 크기와 위치를 계산할 때:

참고: 이 규칙은 CSS2§10.2, CSS2§8.3, CSS2§8.4 등에서 이전에 정의되지 않았던 순환 케이스의 동작을 명확히 지정합니다. CSS2§10.5의 동작은 각 레이아웃 모드(예: flex layout)별 명세에서 재정의됩니다.

예를 들면, 다음 마크업에서:
<article style="width: min-content">
  <aside style="width: 50%;">
  LOOOOOOOOOOOOOOOOOOOONG
  </aside>
</article>

외부 <article>의 너비 계산 시, 내부 <aside>width: auto처럼 동작하므로, <article>은 긴 단어의 너비로 설정됩니다. <article>의 너비가 "실제" 레이아웃에 의존하지 않으므로, <aside>의 너비 해석에 definite로 취급되어, <aside><article>의 절반 너비로 해석됩니다.

이 예제에서,
<article style="height:auto">
  <aside style="height: 50%;">
    <div class=block style="height: 150px;"></div>
  </aside>
  <section style="height: 30px;"></section>
</article>

블록 레벨 요소의 백분율 block size (여기서는 height)는 콘텐츠 기반 containing block에서는 해석되지 않도록 정의되어 있으므로, <aside>의 백분율 높이는 무시되고, auto가 지정된 것처럼 동작합니다.

min-height가 내재적일 때에도 definite height 기준으로 백분율이 해석되는 것은 오픈 이슈입니다. (CSS2에는 "height depending on contents" 일반 규칙이 있는데, 이 경우에도 해당되며, 실제로는 CSS2에 min-height에 콘텐츠 기반 키워드가 없었지만, 새 동작이므로 달라질 수 있습니다.)

아래 예제들은 블록 축 백분율이 콘텐츠 기반 크기 containing block에서 어떻게 해석되는지 보여줍니다.

<article style="height:100px; min-height: min-content;">
  <aside style="height: 50%;">
    <div style="height: 150px;"></div>
  </aside>
  <section style="height: 30px;"></section>
</article>

<article>의 초기 높이는 100px로 지정되어 있으므로, <aside>가 백분율을 해석할 때 50px 높이가 됩니다. 그러나 min-height를 계산해야 하므로, height 대신 대입합니다. 이로 인해 <aside>의 백분율이 auto처럼 동작하게 되어, <aside>는 150px 높이가 됩니다. 전체 콘텐츠 높이는 180px입니다. 이는 지정된 100px보다 크므로, <article>은 180px로 조정됩니다.

그 다음, 백분율이 원래는 (100px) 높이에 대해 해석될 수 있으므로, 이제는 180px 높이에 대해 해석되어, <aside>는 90px 높이가 됩니다.

<article style="height:auto; min-height: min-content;">
  <aside style="height: 50%;">
    <div class=block style="height: 150px;"></div>
  </aside>
  <section style="height: 30px;"></section>
</article>

이 경우 <aside>의 백분율은 보통 해석되지 않으며, containing block의 높이가 auto이기 때문입니다(즉, 콘텐츠 크기에 따라 달라짐). 대신 auto처럼 동작하여, <aside>는 150px 높이가 되고, <article>의 초기 높이는 180px이 됩니다. min-height 값은 영향을 주지 않으며; height: min-content;height: auto;와 유사하게 동작하여 동일한 크기를 만듭니다.

<article style="height:100px; min-height: min-content;">
  <aside style="height: 200%;">
    <div style="height: 150px;"></div>
  </aside>
  <section style="height: 30px;"></section>
</article>

이 코드는 첫 번째 예제의 변형으로, <aside>는 처음에는 200px(100px containing block 높이의 200%)을 원합니다. min-height의 효과를 계산하면, 백분율이 auto처럼 동작하여 150px이 되고, containing block의 전체 min-content 높이는 180px이 됩니다. 지정값 100px보다 크므로, <article>은 180px로 조정되고, 백분율은 이 새 높이에 대해 해석되어, <aside>는 360px이 되어 <article>을 오버플로우합니다.

5.2.2. 압축 가능한 대체 요소

대체 요소 목록(HTML§14.4 [HTML]) 외에도, 아래 HTML 요소들도 위의 백분율 크기 대체 요소 규칙에서 대체 요소로 간주되며, min-content contributionwidth/height 또는 max-width/max-height가 순환 백분율 크기로 지정될 때 압축될 수 있습니다:

이 규칙을 max-width/height에 적용한 웹 호환성과 구현 현황은 이슈 6348에서 추적 중입니다. [Issue #6348]

변경 사항

최근 변경 사항

2020년 12월 18일 작업 초안 이후 변경 사항:

2019년 5월 22일 작업 초안 이후 주요 변경 사항:

2018년 3월 4일 작업 초안 이후 주요 변경 사항:

2017년 2월 7일 작업 초안 이후 주요 변경 사항:

CSS Level 2 이후 추가 사항

다양한 자동/콘텐츠 기반 크기 알고리즘을 대폭 상세화함과 더불어, 다음과 같은 새로운 기능이 [CSS2] 이후 추가되었습니다:

감사의 글

특별히 L. David Baron, Aaron Gustafson, Daniel Holbert, Mats Palmgren 에 감사드립니다.

개인정보 및 보안 고려사항

자동 레이아웃을 지원하기 위해 CSS는 박스를 그 콘텐츠에 맞게 사이즈를 조정합니다. [DOM][CSSOM] API와 결합해 스크립트에서 박스 크기를 반환할 수 있는데, 이는 콘텐츠에 대한 정보를 노출할 수 있습니다. 하지만 이런 정보는 박스 크기보다 DOM에서 직접 콘텐츠를 조회하는 것이 더 쉽고 직접적입니다. 콘텐츠를 조회할 수 없는 컨테이너(예: 교차 출처 iframe 등)는 이미지와 같은 대체 요소가 자연 크기/비율을 노출하는 경우를 제외하고는 외부 페이지에 크기 정보를 노출하지 않습니다.

적합성

문서 규약

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

명세의 모든 텍스트는 명시적으로 비규범, 예시, 참고로 표시된 부분을 제외하고 규범적입니다. [RFC2119]

예시는 “for example”라는 말로 시작하거나 class="example"로 구분합니다. 예시 예:

이것은 안내용 예시입니다.

안내 문구(Informative notes)는 “Note”로 시작하며 class="note"로 구분합니다. 예시:

Note, 이것은 안내용 참고입니다.

강조 문구(Advisement)는 규범적 섹션으로 특별한 주의를 환기하도록 스타일링되며 <strong class="advisement">으로 구분합니다. 예: UA는 접근 가능한 대안을 반드시 제공해야 합니다.

적합성 클래스

이 명세의 적합성은 세 가지 적합성 클래스로 정의됩니다:

style sheet
CSS 스타일 시트.
renderer
UA, 스타일 시트 의미를 해석하고 문서를 렌더링하는 UA.
authoring tool
UA, 스타일 시트를 작성하는 도구.

스타일 시트가 이 명세에 적합하려면 이 모듈에서 정의한 문법과 각 기능별 문법에 맞는 구문을 모두 유효하게 사용해야 합니다.

렌더러가 이 명세에 적합하려면 해당 명세들을 따라 스타일 시트를 해석할 뿐만 아니라, 이 명세에서 정의한 모든 기능을 올바르게 파싱 및 렌더링해야 합니다. 단, UA가 디바이스 한계(예: 흑백 모니터에서 색상 렌더 불가)로 문서를 올바르게 렌더링하지 못해도 UA가 비적합한 것은 아닙니다.

작성 도구가 이 명세에 적합하려면 이 모듈에서 정의한 문법과 각 기능별 문법에 맞는 구문으로 스타일 시트를 작성하고, 이 모듈에서 설명한 스타일 시트의 다른 모든 적합성 요구사항도 충족해야 합니다.

부분 구현

작성자가 미래 호환 구문 해석 규칙을 활용해 대체값을 지정할 수 있도록, CSS 렌더러는 반드시 지원하지 않는 at-rule, 속성, 속성값, 키워드, 기타 구문 구조를 무효(및 적합하게 무시)로 처리해야 합니다. 특히 UA는 지원하지 않는 값만 선택적으로 무시하고, 지원하는 값만 적용해서는 안 됩니다. 다중 값 선언에서 일부 값이라도 무효(지원하지 않는 값은 반드시 무효)라면 전체 선언을 무시해야 합니다.

불안정 및 독점 기능 구현

향후 안정 CSS 기능과 충돌을 피하기 위해, CSSWG는 최선의 관행에 따라 불안정 기능 및 독점 확장을 구현할 것을 권장합니다.

비실험적 구현

명세가 후보 권고 단계(CR)에 도달하면, 비실험적 구현이 가능하며, 구현자는 스펙에 따라 올바르게 구현된 CR 수준 기능은 프리픽스 없는 구현을 공개해야 합니다.

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

테스트케이스 및 구현 보고서 제출 방법 등 추가 정보는 CSS 작업 그룹 웹사이트 https://www.w3.org/Style/CSS/Test/에서 확인하세요. 문의는 public-css-testsuite@w3.org 메일링 리스트로 보내주세요.

색인

이 명세에서 정의한 용어

참고로 정의된 용어

참고문헌

규범적 참고문헌

[CSS-ALIGN-3]
Elika Etemad; Tab Atkins Jr.. CSS Box Alignment Module Level 3. 2020년 4월 21일. WD. URL: https://www.w3.org/TR/css-align-3/
[CSS-BOX-4]
Elika Etemad. CSS Box Model Module Level 4. 2020년 4월 21일. WD. URL: https://www.w3.org/TR/css-box-4/
[CSS-CASCADE-5]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS Cascading and Inheritance Level 5. 2021년 12월 3일. WD. URL: https://www.w3.org/TR/css-cascade-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-FLEXBOX-1]
Tab Atkins Jr.; et al. CSS Flexible Box Layout Module Level 1. 2018년 11월 19일. CR. URL: https://www.w3.org/TR/css-flexbox-1/
[CSS-IMAGES-3]
Tab Atkins Jr.; Elika Etemad; Lea Verou. CSS Images Module Level 3. 2020년 12월 17일. CR. URL: https://www.w3.org/TR/css-images-3/
[CSS-LOGICAL-1]
Rossen Atanassov; Elika Etemad. CSS Logical Properties and Values Level 1. 2018년 8월 27일. WD. URL: https://www.w3.org/TR/css-logical-1/
[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-4]
Tab Atkins Jr.; Elika Etemad; Jen Simmons. CSS Box Sizing Module Level 4. 2021년 5월 20일. WD. URL: https://www.w3.org/TR/css-sizing-4/
[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-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년 10월 16일. WD. URL: https://www.w3.org/TR/css-values-4/
[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/
[CSS2]
Bert Bos; et al. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. 2011년 6월 7일. REC. URL: https://www.w3.org/TR/CSS21/
[CSS3COL]
Florian Rivoal; Rachel Andrew. CSS Multi-column Layout Module Level 1. 2021년 10월 12일. CR. URL: https://www.w3.org/TR/css-multicol-1/
[CSSOM]
Daniel Glazman; Emilio Cobos Álvarez. CSS Object Model (CSSOM). 2021년 8월 26일. WD. URL: https://www.w3.org/TR/cssom-1/
[HTML]
Anne van Kesteren; et al. HTML Standard. 리빙 스탠다드. URL: https://html.spec.whatwg.org/multipage/
[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

참고 참고문헌

[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-GRID-2]
Tab Atkins Jr.; Elika Etemad; Rossen Atanassov. CSS Grid Layout Module Level 2. 2020년 12월 18일. CR. URL: https://www.w3.org/TR/css-grid-2/
[CSS-UI-3]
Tantek Çelik; Florian Rivoal. CSS Basic User Interface Module Level 3 (CSS3 UI). 2018년 6월 21일. REC. URL: https://www.w3.org/TR/css-ui-3/
[DOM]
Anne van Kesteren. DOM Standard. 리빙 스탠다드. URL: https://dom.spec.whatwg.org/

속성 색인

이름 초기값 적용 대상 상속 백분율 애니메이션 가능 애니메이션 타입 정식 순서 계산값
box-sizing content-box | border-box content-box width 또는 height를 허용하는 모든 요소 아니오 N/A 불연속 문법대로 지정된 키워드
height auto | <length-percentage> | min-content | max-content | fit-content(<length-percentage>) auto 비-대체 인라인 제외 모든 요소 아니오 containing block의 width/height 기준 계산값 타입별, fit-content() 내부로 재귀 문법대로 지정값 그대로, <length-percentage> 값은 계산됨
max-height none | <length-percentage> | min-content | max-content | fit-content(<length-percentage>) none width 또는 height를 허용하는 모든 요소 아니오 containing block의 width/height 기준 계산값 기준, fit-content() 내부로 재귀 문법대로 지정값 그대로, <length-percentage> 값은 계산됨
max-width none | <length-percentage> | min-content | max-content | fit-content(<length-percentage>) none width 또는 height를 허용하는 모든 요소 아니오 containing block의 width/height 기준 계산값 기준, fit-content() 내부로 재귀 문법대로 지정값 그대로, <length-percentage> 값은 계산됨
min-height auto | <length-percentage> | min-content | max-content | fit-content(<length-percentage>) auto width 또는 height를 허용하는 모든 요소 아니오 containing block의 width/height 기준 계산값 기준, fit-content() 내부로 재귀 문법대로 지정값 그대로, <length-percentage> 값은 계산됨
min-width auto | <length-percentage> | min-content | max-content | fit-content(<length-percentage>) auto width 또는 height를 허용하는 모든 요소 아니오 containing block의 width/height 기준 계산값 기준, fit-content() 내부로 재귀 문법대로 지정값 그대로, <length-percentage> 값은 계산됨
width auto | <length-percentage> | min-content | max-content | fit-content(<length-percentage>) auto 비-대체 인라인 제외 모든 요소 아니오 containing block의 width/height 기준 계산값 타입별, fit-content() 내부로 재귀 문법대로 지정값 그대로, <length-percentage> 값은 계산됨

이슈 색인

이 명세에는 삽화가 필요합니다! 이슈.
각 크기 속성 쌍별로 축약형을 정의하고 싶으나 (widthheight 등) @page size 디스크립터와 이름 충돌로 인해 Level 4로 연기됨. 이 문제의 해결 방법에 대한 제안 환영, 논의 참고.
이 섹션을 새로운 용어 automatic size 참조로 대체해야 합니다.
전달된 백분율을 0이 아닌 containing block 기준으로 해석할지 논의 필요. 논의.
min-height가 내재적일 때에도 definite height 기준으로 백분율이 해석되는 것은 오픈 이슈입니다. (CSS2에는 "height depending on contents" 일반 규칙이 있는데, 이 경우에도 해당되며, 실제로는 CSS2에 min-height에 콘텐츠 기반 키워드가 없었지만, 새 동작이므로 달라질 수 있습니다.)
이 규칙을 max-width/height에 적용한 웹 호환성과 구현 현황은 이슈 6348에서 추적 중입니다. [Issue #6348]