CSS 오버플로우 모듈 레벨 3

W3C 워킹 드래프트,

이 문서에 대한 추가 정보
이 버전:
https://www.w3.org/TR/2023/WD-css-overflow-3-20230329/
최신 공개 버전:
https://www.w3.org/TR/css-overflow-3/
에디터스 드래프트:
https://drafts.csswg.org/css-overflow-3/
이전 버전:
히스토리:
https://www.w3.org/standards/history/css-overflow-3
피드백:
CSSWG 이슈 저장소
명세 내 인라인
에디터:
Elika J. Etemad / fantasai (초청 전문가)
Florian Rivoal (블룸버그 대표)
이전 에디터:
L. David Baron (Mozilla)
명세 편집 제안:
GitHub 에디터

요약

이 모듈은 시각적 미디어에서 스크롤 가능한 오버플로우 처리를 위한 CSS 기능을 포함합니다. 이 레벨은 기존 오버플로우 기능에 대한 정확한 명세를 완성하는 데 중점을 두고 있으며, overflow 속성과 그 롱핸드, 그리고 text-overflow 속성을 포함합니다. [CSS-CONTAIN-1][CSS-CONTAIN-2] 지원을 위해 도입된 몇 가지 추가 기능도 정의되어 있습니다: overflow: clipoverflow-clip-margin 속성입니다.

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

이 문서의 상태

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

이 문서는 CSS 워킹 그룹에서 워킹 드래프트권고 트랙을 사용하여 발행되었습니다. 워킹 드래프트로 발행되었다고 해서 W3C 및 회원의 승인이나 지지를 의미하지는 않습니다.

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

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

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

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

overflow 및 그 롱핸드에 대한 설명은 이전 워킹 드래프트나 [CSS2]보다 훨씬 더 완전하고 정확하다고 간주되지만, 몇 가지 질문과 이슈가 남아 있습니다. 'overflow: clip' 및 overflow-clip-margin은 비교적 새로운 기능으로, 구현 경험이 부족합니다. text-overflow는 안정적이며, [CSS-UI-3]에서 정의된 내용과 동일합니다. 아직 구현 경험으로 완전히 검증되지는 않았지만, line-clamp 및 그 롱핸드의 설계는 대체로 완성된 것으로 간주됩니다. 이전 버전 명세에는 오버플로우를 분할(fragmentation)로 처리하는 실험적 아이디어가 포함되어 있었으나, 이 아이디어들은 폐기된 것이 아니라 레벨 4로 연기된 것입니다. 이 레벨이 안정화되면 분할 오버플로우 작업이 재개될 예정입니다.

다음 기능들은 위험군(at-risk)으로, CR 기간 중 삭제될 수 있습니다:

“위험군(at-risk)”은 W3C 프로세스 용어로, 해당 기능이 실제로 삭제되거나 지연될 위험이 있다는 의미는 아닙니다. WG가 해당 기능이 상호운용성 있게 구현되기 어려울 수 있다고 판단할 때, 권고 후보(Proposed Rec) 단계로 전환 시 해당 기능을 별도의 후보 권고를 발행하지 않고도 삭제할 수 있도록 표시하는 것입니다.

1. 소개

CSS Level 1 [CSS1]에서는, 지정된 크기를 가진 요소에 들어갈 수 있는 양보다 많은 콘텐츠를 배치하는 것이 일반적으로 작성 오류였습니다. 이렇게 하면 콘텐츠가 요소의 경계를 넘어 확장되어 다른 요소와 겹칠 가능성이 있었습니다.

CSS Level 2 [CSS2]에서는 overflow 속성이 도입되어, 오버플로우를 스크롤로 처리할 수 있게 하였으며, 더 이상 작성 오류가 아니게 되었습니다. 또한 오버플로우를 클리핑으로 처리하도록 지정할 수 있는데, 이는 작성자가 콘텐츠가 보이지 않기를 의도할 때 적합합니다.

이 명세는 오랫동안 사실상 표준처럼 사용되어 온 overflow-xoverflow-y 속성을 도입하고, clip 값을 추가하며, 오버플로우 처리를 더욱 명확하게 정의합니다.

[Something something max-lines.]

참고: 이 명세는 text-overflow 속성의 정의도 함께 포함하고 있습니다. [CSS-UI-3]에서 이미 정의된 내용과 동일하며, 추가나 수정 없이, text-overflowblock-ellipsis를 함께 제시하기 위함입니다.

1.1. 값 정의

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

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

1.2. 모듈 상호작용

이 모듈은 [CSS2]11.1 오버플로우 및 클리핑[CSS-UI-3]5.2. 오버플로우 생략부호: text-overflow 속성에서 정의된 기능을 대체(확장)합니다.

2. 오버플로우 개념 및 용어

CSS는 overflow라는 용어를 사용하여 박스의 한쪽 경계(즉, content edge, padding edge, border edge, margin edge)를 넘어 확장되는 박스의 내용을 설명합니다. 이 용어는 오버플로우를 유발하는 요소나 기능, 해당 기능이 차지하는 비직사각형 영역, 또는 일반적으로 그 영역을 감싸는 최소 사각형을 의미할 수 있습니다. 박스의 오버플로우는 박스 자체의 레이아웃과 스타일, 그리고 containing block chain에 박스가 포함된 모든 자손의 레이아웃과 스타일을 기반으로 계산됩니다.

대부분의 경우, overflow는 박스 자체의 경계와 속성, 그리고 각 자식의 overflow를 통해 계산할 수 있습니다. 하지만 항상 그런 것은 아니며, 예를 들어 자식 중 일부에 transform-style: preserve-3d [CSS3-TRANSFORMS]가 사용된 경우, 해당 자손의 transform-style: preserve-3d도 함께 고려해야 합니다.

오버플로우에는 두 가지 유형이 있으며, UA에서 서로 다른 목적으로 사용됩니다:

2.1. 잉크 오버플로우

잉크 오버플로우는 박스 및 그 내용이 박스의 border box 바깥에서 시각적 효과를 생성하는 부분입니다. 잉크 오버플로우는 레이아웃에 영향을 주지 않거나 스크롤 가능한 오버플로우 영역을 확장하지 않는 페인팅 효과의 오버플로우를 의미하며, box-shadow, border images, text decoration, 음수 사이드 베어링이나 em 박스 바깥으로 확장되는 글리프(ascender/descender), outlines 등이 이에 해당합니다.

CSS의 일부 효과(예: text-shadow [CSS-TEXT-3]box-shadow [CSS-BACKGROUNDS-3]의 블러 등)는 이론적으로 무한하며, 시각적 범위를 명확히 정의하지 않으므로 잉크 오버플로우의 범위는 정의되지 않습니다.

잉크 오버플로우 영역은 박스 및 그 내용의 잉크 오버플로우가 차지하는 비직사각형 영역이며, 잉크 오버플로우 사각형은 박스의 축에 맞춰진 최소 사각형으로, 잉크 오버플로우 영역을 포함합니다. 잉크 오버플로우 사각형은 박스의 좌표계에서는 사각형이지만, 변형(transform)으로 인해 다른 좌표계에서는 비직사각형일 수 있습니다. [CSS3-TRANSFORMS]

대체(replaced) 콘텐츠의 오버플로우는 항상 잉크 오버플로우입니다(스크롤 가능한 오버플로우와 구분).

2.2. 스크롤 가능한 오버플로우

스크롤 가능한 오버플로우는 박스의 padding edge 바깥으로 확장되어 스크롤 메커니즘이 제공되어야 하는 부분을 의미합니다.

스크롤 가능한 오버플로우 영역스크롤 가능한 오버플로우가 차지하는 비직사각형 영역이며, 스크롤 가능한 오버플로우 사각형은 박스의 축에 맞춰진 최소 사각형으로, 스크롤 가능한 오버플로우 영역을 포함합니다.

스크롤 가능한 오버플로우 영역은 다음의 합집합입니다:

또한, 웹 호환성 제약(작성자가 레거시 버그를 이용해 시각적 독자에게는 콘텐츠를 숨기고 검색엔진/음성 출력에는 노출시키는 경우 등)으로 인해, UA는 음수 스크롤 오버플로우 영역의 콘텐츠를 반드시 클리핑해야 하며, 스크롤 가능한 오버플로우scroll origin의 반대편에 없는 것처럼 동작해야 합니다.

참고: 스크롤 가능한 오버플로우 사각형은 박스의 좌표계에서는 항상 사각형이지만, 변형(transform)으로 인해 다른 좌표계에서는 비직사각형일 수 있습니다. [CSS3-TRANSFORMS] 이로 인해 실제로 필요하지 않은 경우에도 스크롤바가 나타날 수 있습니다.

2.3. 스크롤 오버플로우

박스의 overflow는 보이거나(visible) 클리핑될 수 있습니다. CSS는 박스가 스크롤 컨테이너가 되어, 사용자가 클리핑된 스크롤 가능한 오버플로우 영역을 스크롤로 볼 수 있도록 허용합니다. 스크롤 컨테이너의 시각적 뷰포트(스크롤 가능한 오버플로우 영역을 볼 수 있는 영역)는 padding box와 일치하며, scrollport라고 합니다. 박스의 가장 가까운 scrollport는 가장 가까운 스크롤 컨테이너 조상의 scrollport입니다.

스크롤 동작은 사용자가(예: 스크롤바 조작, 터치 스크린 스와이프, 키보드 조작 등) 또는 스크립트가 (예: scrollIntoView() 또는 focus() API 등) 시작할 수 있습니다. 스크롤 가능한 오버플로우 사각형scrollport 내에서 스크롤 동작이 적용되기 전의 초기 위치는 초기 스크롤 위치입니다. 초기 스크롤 위치는 일반적으로 스크롤 컨테이너writing mode에 따라 결정되며, 별도 명시가 없는 한 scroll origin position과 일치합니다. 단, align-contentjustify-content 속성([CSS-ALIGN-3])을 사용하면 초기 스크롤 위치를 변경할 수 있습니다. 자세한 내용은 CSS Box Alignment 3 § 5.3 Overflow and Scroll Positions를 참고하세요.

스크롤 위치스크롤 가능한 오버플로우 사각형scrollport 내에서 특정 정렬 상태를 의미합니다. 스크롤 오프셋scroll origin으로부터의 거리입니다.

scroll origin스크롤 가능한 오버플로우 사각형의 기준 좌표로, 스크롤 가능한 오버플로우 사각형이 이 좌표를 기준으로 확장됩니다. 별도 명시가 없는 한, block-start inline-start 코너가 기준입니다. (예: flex container에서는 main-start cross-start 코너가 기준입니다.) scroll origin을 기준으로 양 축의 바깥 영역은 음수 스크롤 오버플로우 영역으로 간주되며, 이 영역에 렌더링된 콘텐츠는 사용자에게 접근할 수 없습니다. 자세한 내용은 § 2.2 스크롤 가능한 오버플로우를 참고하세요. 스크롤 컨테이너scroll origin에 스크롤된 상태란, scroll originscrollport의 해당 코너와 일치하는 경우입니다. 이 스크롤 위치scroll origin position이라 하며, 일반적으로(항상은 아님) 초기 스크롤 위치와 일치합니다.

예를 들어, align-contentjustify-content 속성([CSS-ALIGN-3])과 scroll snapping([CSS-SCROLL-SNAP-1])은 초기 스크롤 위치scroll origin position에서 변경할 수 있습니다.

baseline alignment 등이 초기 스크롤 위치 또는 scroll origin position에 의존하는지 확인 필요.

스크롤 오프셋의 좌표계가 정의되어 있지 않습니다. 아래/오른쪽 증가, block/inline 축 끝 방향 증가, 또는 scroll origin에서 멀어지는 방향 등 각 API가 좌표 모델을 정의해야 할까요?

페이지 canvas를 스크롤하는 루트 뷰포트는 주요 writing mode를 사용하여 scroll origin초기 스크롤 위치를 결정합니다.

참고: 스크롤 컨테이너(또는 그 조상)가 그래픽 변형(transform)의 대상인 경우, UA는 사용자 입력을 스크롤 동작에 매핑할 때 이 변형을 고려해야 할 수 있습니다. 예를 들어, 터치 스크린에서 사용자가 콘텐츠를 직접 드래그하여 스크롤할 때, 변형이 적용된 방향에 맞게 스크롤 방향이 맞춰져야 합니다. 반면, Page Down 키나 1D 스크롤 휠 등 다른 입력은 변형을 무시하는 것이 더 자연스러울 수 있습니다. 각 스크롤 메커니즘에 적합한 동작을 선택하는 것은 UA의 책임입니다.

3. 스크롤 및 클리핑 오버플로우

3.1. 오버플로우 관리: overflow-x, overflow-y, overflow 속성

이 속성들은 박스의 오버플로우가 클리핑되는지 여부와, 클리핑 시 스크롤 컨테이너가 되는지 여부를 지정합니다.

이름: overflow-x, overflow-y, overflow-block, overflow-inline
값: visible | hidden | clip | scroll | auto
초기값: visible
적용 대상: 블록 컨테이너 [CSS2], 플렉스 컨테이너 [CSS3-FLEXBOX], 그리드 컨테이너 [CSS3-GRID-LAYOUT]
상속: 아님
백분율: 해당 없음
계산값: 일반적으로 지정값, 단 일부 예외 있음
정식 순서: 문법에 따름
애니메이션 타입: 불연속
논리 속성 그룹: overflow

overflow-x 속성은 박스의 수평축(좌우) 오버플로우 처리를 지정하며, overflow-y는 수직축(상하) 오버플로우 처리를 지정합니다.

overflow-blockoverflow-inline 속성도 각각 오버플로우blockinline 축 처리를 지정합니다.

이 네 속성은 논리 속성 그룹을 이루며, overflow 축약형과 함께 CSS 논리 속성 1 § 4 흐름-상대 박스 모델 속성에 정의된 대로 상호작용합니다.

이름: overflow
값: <'overflow-block'>{1,2}
초기값: visible
적용 대상: 블록 컨테이너 [CSS2], 플렉스 컨테이너 [CSS3-FLEXBOX], 그리드 컨테이너 [CSS3-GRID-LAYOUT]
상속: 아님
백분율: 해당 없음
계산값: 각 속성별 정의 참조
애니메이션 타입: 불연속
정식 순서: 문법에 따름

overflow 속성은 축약형 속성으로, overflow-xoverflow-y의 지정값을 순서대로 설정합니다. 두 번째 값이 생략되면 첫 번째 값을 복사합니다.

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

visible
오버플로우에 특별한 처리를 하지 않으며, 박스의 콘텐츠가 경계 밖에 위치하면 그대로 렌더링됩니다. 박스는 스크롤 컨테이너가 아닙니다.
hidden
박스의 콘텐츠가 padding box로 클리핑되며, UA는 클리핑 영역 밖의 콘텐츠를 볼 수 있는 스크롤 UI를 제공하지 않습니다. 사용자가 직접 스크롤(터치 드래그, 마우스 휠 등)하는 것도 허용되지 않습니다. 단, [CSSOM-VIEW] 등 프로그래밍 방식의 스크롤은 허용되므로 박스는 여전히 스크롤 컨테이너입니다.
clip
박스의 콘텐츠가 overflow clip edge로 클리핑되며, UA는 클리핑 영역 밖의 콘텐츠를 볼 수 있는 스크롤 UI를 제공하지 않습니다. overflow: clipoverflow: hidden과 달리 프로그래밍 방식의 스크롤도 완전히 금지하므로 박스는 스크롤 컨테이너가 아닙니다.

hidden과 달리, 이 값은 새로운 포맷팅 컨텍스트를 생성하지 않습니다.

참고: 포맷팅 컨텍스트도 필요하다면 display: flow-rootoverflow: clip을 함께 사용하세요.

scroll
콘텐츠가 padding box로 클리핑되지만, 스크롤로 볼 수 있습니다(박스는 스크롤 컨테이너임). UA가 스크롤바 등 시각적 스크롤 메커니즘을 사용하는 경우, 콘텐츠가 클리핑되지 않아도 항상 표시해야 합니다. 동적 환경에서 스크롤바가 나타났다 사라지는 문제를 방지합니다. print 미디어에서는 오버플로우된 콘텐츠가 인쇄될 수 있으나, 인쇄 위치는 정의되지 않습니다.
auto
박스에 스크롤 가능한 오버플로우가 있으면 scroll과 같고, 없으면 hidden과 같습니다. UA가 스크롤바 등 시각적 스크롤 메커니즘을 사용하는 경우, 오버플로우가 있을 때만 표시합니다.

visible/clip 값은 overflow에서, overflow-x 또는 overflow-y 중 하나라도 visible이나 clip이 아니면, 각각 auto/hidden으로 계산됩니다.

overflow의 계산값이 블록 박스에서 visible, clip 또는 그 조합이 아니면, 해당 박스는 독립적인 포맷팅 컨텍스트를 생성합니다.

UA는 overlay 키워드를 auto레거시 값 별칭으로 지원해야 합니다.

3.1.1. visibilityoverflow의 상호작용

visibility의 계산값이 hidden(또는 collapsehidden과 동일하게 동작할 때)이고, overflowscroll 또는 auto인 경우:

3.1.2. border-radiusoverflow의 상호작용

CSS Backgrounds 3 § 4.3 코너 클리핑에서 설명한 대로, overflow가 설정한 클리핑 영역은 둥글게 만들 수 있습니다:

3.1.3. 인쇄 및 기타 정적 미디어에서의 오버플로우

정적 미디어(예: 인쇄)에서는 스크롤이 불가능하므로, 작성자는 모든 콘텐츠가 동시에 보이도록 @media print, (update: none) { … } 등으로 레이아웃을 조정해야 합니다.

비상호작용 미디어에서 스크롤 컨테이너overflow 값이 auto 또는 scroll(단, hidden은 제외)인 경우, UA는 스크롤 가능한 오버플로우를 표시(스크롤바, 생략부호 등)할 수 있습니다.

참고: 모든 페이징 미디어가 비상호작용인 것은 아닙니다. 예를 들어, e-book 리더는 페이징하면서도 상호작용이 가능합니다.

3.2. 클리핑 경계 확장: overflow-clip-margin 속성

이름: overflow-clip-margin
값: <visual-box> || <length [0,∞]>
초기값: 0px
적용 대상: overflow가 적용되는 박스
상속: 아님
백분율: 해당 없음
계산값: 계산된 <length><visual-box> 키워드
정식 순서: 문법에 따름
애니메이션 타입: <visual-box> 값이 일치하면 계산값에 따라, 아니면 불연속

이 속성은 박스의 overflow clip edge를 정의합니다. 즉, 박스의 경계에서 콘텐츠가 얼마나 멀리까지 페인팅될 수 있는지, overflow: clip 등 클리핑 효과가 overflow clip edge에 따라 클리핑하기 전까지 허용되는 범위를 지정합니다.

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

<visual-box>

클리핑 기준이 되는 박스의 edge를 지정합니다(오프셋이 0일 때의 기준). 생략 시 padding-box가 기본값입니다.

<length [0,∞]>

지정된 오프셋만큼 overflow clip edge를 기준 edge에서 확장합니다. 음수 값은 허용되지 않으며, 생략 시 0이 기본값입니다.

overflow clip edge의 코너 모양은, 동일한 누적 오프셋의 spread radius를 가진 outer box-shadow와 동일하게 처리됩니다. 자세한 공식은 CSS Backgrounds 3 § 4.2 코너 모양CSS Backgrounds 3 § 6.1.1 그림자 모양, 확장, 노크아웃을 참고하세요. 특히 border edge를 넘는 outsets 공식에 주의하세요.

참고: 이 속성은 overflow: hidden 또는 overflow: scroll이 적용된 박스에는 효과가 없습니다. 이들은 overflow clip edge를 사용하지 않습니다.

3.3. 오버플로우 뷰포트 전파

UA는 루트 요소에 설정된 overflow-* 값을, 루트 요소의 display 값이 none이 아닐 때 뷰포트에 적용해야 합니다.

단, 루트 요소가 [HTML] html 요소(HTML의 XML 문법 포함)이고, overflow 값이 양 축 모두 visible이며, 자식에 body 요소가 있고 그 display 값도 none이 아니라면, UA는 해당 자식의 overflow-* 값을 뷰포트에 적용해야 합니다. 이때 값이 전파된 요소의 사용된 overflow 값은 visible이어야 합니다.

참고: HTML html 또는 body 요소에 containment를 사용하면, body 요소에 대한 이 특수 처리가 비활성화됩니다. 자세한 내용은 CSS Containment 1 § 2 강한 컨테인먼트: contain 속성을 참고하세요.

참고: 루트 요소에 overflow: hidden을 적용해도, 초기 포함 블록(ICB)이 뷰포트보다 작으면 뷰포트 밖의 모든 것을 클리핑하지 않을 수 있습니다(모바일에서 발생 가능).

뷰포트에 visible이 적용되면 auto로 해석해야 하며, clip이 적용되면 hidden으로 해석해야 합니다.

3.4. 부드러운 스크롤: scroll-behavior 속성

이름: scroll-behavior
값: auto | smooth
초기값: auto
적용 대상: 스크롤 컨테이너
상속: 아님
백분율: 해당 없음
계산값: 지정값
정식 순서: 문법에 따름
애니메이션 타입: 애니메이션 불가

scroll-behavior 속성은 스크롤 컨테이너에서 내비게이션, [CSSOM-VIEW] 스크롤 API, 또는 사용자에 의해 시작되지 않은 [CSS-SCROLL-SNAP-1] 스크롤 스냅 동작에 대해 스크롤 동작을 지정합니다. 사용자가 직접 수행하는 스크롤에는 이 속성이 영향을 주지 않습니다. 루트 요소에 지정하면 뷰포트에 적용됩니다.

참고: HTML body 요소의 scroll-behavior 속성은 뷰포트에 전파되지 않습니다.

auto
스크롤 컨테이너즉시 스크롤됩니다.
smooth
스크롤 컨테이너부드럽게 스크롤되며, UA가 정의한 타이밍 함수와 기간을 사용합니다. UA는 플랫폼 관례를 따라야 합니다(있는 경우).

UA는 이 속성을 무시할 수 있습니다.

4. 스크롤바와 레이아웃

4.1. 스크롤바가 크기 산정에 미치는 영향

요소 박스의 가장자리에 스크롤바 공간을 예약할 때, 이 공간은 내부 border edge와 외부 padding edge 사이에 삽입됩니다. background positioning areabackground painting area의 관점에서는, 이 예약된 공간도 padding box의 일부로 간주됩니다.

다음 문서 조각에서, 절대 위치 요소와 배경 이미지가 박스의 오른쪽 상단에 배치됩니다.
<style>
          article {
            background: top right no-repeat url(circle.png);
            position: relative;
            overflow: auto; }
          aside { position: absolute; top: 0; right: 0; }
        </style>
        <article>
          <aside>×</aside>
        </article>
        

<article>에 스크롤바가 없으면, 두 요소 모두 오른쪽 상단 padding edge 코너에 겹칩니다. 하지만 스크롤바가 있으면 <aside>는 스크롤바 옆 padding-box 가장자리에서 완전히 보이고, 배경 이미지는 스크롤바 아래에 위치하게 됩니다(스크롤바 확장 background positioning area의 오른쪽 상단 코너).

박스가 내재적으로 크기가 결정되는 경우, 이 예약 공간은 콘텐츠 크기에 더해집니다. 그렇지 않으면 content area에 할당된 공간에서 빼게 됩니다. 스크롤바의 존재가 크기 산정에 영향을 줄 수 있으므로, UA는 처음에는 스크롤바가 필요 없다고 가정하고, 실제로 필요하면 크기를 다시 계산해야 합니다.

다음 문서 조각에서, 바깥 <article>height: automax-height: 5em을 갖습니다. 안쪽 <section>은 큰 마진을 갖고, 보통은 딱 맞게 들어갑니다:
...
            article { overflow: auto; max-height: 5em;  width: max-content; }
            section { margin: 2em; line-height: 1 }
        ...
        <article>
          <section>
            This section has big margins.
          </section>
        </article>
        

만약 <article>에 스크롤바가 필요하다고 가정하면, <section>의 높이(한 줄 텍스트 + 2em 마진 ×2)는 5em + 스크롤바가 되어, 5em을 초과하므로 스크롤바가 필요하다고 판단할 수 있습니다.

하지만 처음에 스크롤바가 필요 없다고 가정하면, <article>의 콘텐츠 높이는 정확히 최대 높이 5em이 되어, 실제로 스크롤바가 필요 없음을 증명합니다.

4.2. 스크롤바 공간 예약: scrollbar-gutter 속성

UA가 스크롤바를 표시하기 위해 내부 border edge와 외부 padding edge 사이에 예약할 수 있는 공간을 scrollbar gutter라 합니다.

scrollbar-gutter 속성은 작성자가 scrollbar gutter의 존재를 직접 제어할 수 있게 하며, overflow 속성으로 스크롤바 자체의 존재를 제어하는 것과는 별개입니다.

이름: scrollbar-gutter
값: auto | stable && both-edges?
초기값: auto
적용 대상: 스크롤 컨테이너
상속: 아님
백분율: 해당 없음
계산값: 지정된 키워드
정식 순서: 문법에 따름
애니메이션 타입: 불연속

이 속성은 박스의 scrollbar gutterinline start 또는 inline end에 배치되는지에 영향을 줍니다.

scrollbar gutterblock start 또는 block end에 배치되는지는 이 레벨에서는 제어할 수 없으며, scrollbar-gutterauto일 때와 동일하게 결정됩니다.

기본적으로 콘텐츠 박스 위에 배치되어 scrollbar gutter를 생성하지 않는 스크롤바를 오버레이 스크롤바라 하며, 보통 반투명으로 콘텐츠가 보입니다. 사용자 상호작용 여부에 따라 모양과 크기가 달라질 수 있습니다.

항상 scrollbar gutter에 배치되어 공간을 차지하는 스크롤바를 클래식 스크롤바라 하며, 보통 불투명합니다.

클래식 스크롤바오버레이 스크롤바 중 어떤 것이 사용되는지, 스크롤바의 모양과 크기, 어느 쪽에 나타나는지는 UA가 결정합니다.

참고: 스크롤바가 어느 쪽에 나타나는지는 운영체제 관례, 양방향성, 기타 인체공학적 고려에 따라 달라질 수 있습니다.

클래식 스크롤바의 경우, scrollbar gutter의 너비(존재할 때)는 스크롤바의 너비와 동일합니다. 오버레이 스크롤바의 경우 scrollbar gutter가 없습니다.

참고: 오버레이 스크롤바에도 scrollbar gutter를 적용해야 하는 요구가 있지만, 아직 만족스러운 설계가 합의되지 않았습니다. 향후 속성 확장으로 해결될 수 있습니다. CSS Overflow 4 § B scrollbar-gutter 확장 가능성 참고.

이 속성의 값 의미는 다음과 같습니다:

auto
클래식 스크롤바overflowscroll이거나, overflowauto이고 박스가 오버플로우될 때 scrollbar gutter 공간을 차지합니다. 오버레이 스크롤바는 공간을 차지하지 않습니다.
stable
클래식 스크롤바overflowhidden, scroll, auto일 때, 박스가 실제로 오버플로우되는지와 관계없이 scrollbar gutter 공간을 항상 차지합니다. 오버레이 스크롤바는 공간을 차지하지 않습니다.

참고: 이 값은 스크롤바 자체의 표시 여부를 바꾸지 않고, gutter 공간의 존재만 제어합니다.

both-edges
박스의 inline start 또는 inline end에 scrollbar gutter가 존재하면, 반대쪽에도 scrollbar gutter를 추가해야 합니다.

scrollbar gutter는 스크롤바가 없거나, 스크롤바가 투명하거나 완전히 gutter를 가리지 않을 때, padding의 확장처럼 배경이 칠해져야 합니다.

overflow 속성과 마찬가지로, scrollbar-gutter가 루트 요소에 지정되면 UA는 뷰포트에 적용해야 하며, 루트 요소의 사용값은 scrollbar-gutter: auto가 됩니다. 단, overflow 속성과 달리, UA는 HTML body 요소에서 scrollbar-gutter를 전파하면 안 됩니다.

참고: 아래 표는 overflowscrollbar-gutter의 상호작용을 요약한 것으로, 클래식 스크롤바scrollbar gutter 공간이 언제 예약되는지 보여줍니다.
클래식 스크롤바scrollbar gutter 공간이 예약되는가?
overflow scrollbar-gutter 오버플로우 발생 오버플로우 없음
scroll auto yes yes
stable yes yes
auto auto yes
stable yes yes
hidden auto
stable yes yes
visible, clip auto
stable

5. 자동 생략부호

5.1. 오버플로우 생략부호: text-overflow 속성

이름: text-overflow
값: clip | ellipsis
초기값: clip
적용 대상: 블록 컨테이너
상속: 아니오
백분율: N/A
계산값: 지정된 키워드
정규 순서: 문법에 따름
애니메이션 타입: 불연속

이 속성은 인라인 콘텐츠가 블록 컨테이너 요소("블록")의 인라인 진행 방향 끝 end 라인 박스 엣지를 넘칠 때, overflowvisible이 아닌 경우의 렌더링을 지정합니다.

텍스트는 줄바꿈이 방지되거나(white-space: nowrap 등) 단어가 너무 길어 맞지 않을 때 오버플로우될 수 있습니다. 값의 의미는 다음과 같습니다:

clip
블록 컨테이너를 넘치는 인라인 콘텐츠를 잘라냅니다. 문자가 부분적으로만 렌더링될 수 있습니다.
ellipsis
잘린 인라인 콘텐츠를 나타내기 위해 생략부호(U+2026) 문자를 렌더링합니다. 구현체는 언어, 스크립트, 쓰기 모드에 더 적합한 생략부호 문자나, 생략부호 문자가 없을 경우 "..."(점 3개)로 대체할 수 있습니다.

이 속성 정의에서 "문자"라는 용어는 가독성을 위해 사용되며, 실제 구현에서는 "그래프 클러스터" [UAX29]를 의미합니다.

ellipsis 값의 경우, 구현체는 라인의 원자적 인라인 레벨 요소와 문자를 생략부호가 들어갈 수 있도록 end 엣지에서 숨겨야 하며, 생략부호는 남은 인라인 콘텐츠의 end 엣지에 바로 붙여 배치해야 합니다. 한 줄의 첫 번째 문자나 원자적 인라인 레벨 요소는 생략부호 대신 잘라내야 합니다.

양방향 생략부호 예시

이 예시들은 양방향 상황에서 생략부호 공간을 만들기 위해 어떤 문자가 숨겨지는지 보여줍니다: 시각적으로 라인 끝 엣지에 있는 문자들입니다.

샘플 CSS:

div {
          font-family: monospace;
          white-space: pre;
          overflow: hidden;
          width: 9ch;
          text-overflow: ellipsis;
        }
        

샘플 HTML 조각, 렌더링, 그리고 브라우저:

HTML 참고 렌더링 브라우저
<div>שלום 123456</div>
123456 ם…
שלום 123456
<div dir=rtl>שלום 123456</div>
…456 שלום
שלום 123456

생략부호 처리 세부사항

생략부호와 사용자 상호작용

예시:

text-overflow 예시

이 예시들은 블록 컨테이너 요소의 text-overflow를 설정하여 텍스트가 요소 크기를 넘길 때의 동작을 보여줍니다:

div에 대한 샘플 CSS:

div {
          font-family:Helvetica,sans-serif; line-height:1.1;
          width:3.1em; padding:.2em; border:solid .1em black; margin:1em 0;
        }
        

샘플 HTML 조각, 렌더링, 그리고 브라우저:

HTML 샘플 렌더링 브라우저
<div>
        CSS IS AWESOME, YES
        </div>
        
첫 번째: 텍스트가 박스 밖으로 그려진 모습.
CSS IS AWESOME, YES
<div style="text-overflow:clip; overflow:hidden">
        CSS IS AWESOME, YES
        </div>
        
두 번째: 텍스트가 박스 밖으로 잘려진 모습.
CSS IS AWESOME, YES
<div style="text-overflow:ellipsis; overflow:hidden">
        CSS IS AWESOME, YES
        </div>
        
세 번째: 잘린 텍스트를 생략부호로 표시한 모습.
CSS IS AWESOME, YES
<div style="text-overflow:ellipsis; overflow:hidden">
        NESTED
         <p>PARAGRAPH</p>
        WON’T ELLIPSE.
        </div>
        
네 번째: 중첩된 단락에서 익명 블록 박스 동등성과 중첩 요소에 상속되지 않음을 보여줌.
NESTED

PARAGRAPH

WON’T ELLIPSE.

참고: 생략부호가 배치되는 라인 쪽은 블록의 direction에 따라 달라집니다. 예를 들어, overflow hidden인 오른쪽-왼쪽(direction: rtl) 블록은 인라인 콘텐츠를 왼쪽에서 잘라내므로, 잘린 콘텐츠를 나타내기 위해 왼쪽에 생략부호가 표시됩니다.

생략부호와 스크롤 인터페이스의 상호작용

이 절은 text-overflow:clip이 아닌(non-clip text-overflow) 요소와 overflow:scroll에 적용됩니다.

non-clip text-overflow가 설정된 요소가 텍스트의 인라인 진행 방향에 대해 overflow:scroll을 갖고, 브라우저가 스크롤바나 터치 스와이프 등 스크롤 메커니즘을 제공하는 경우, 더 나은 사용자 경험을 위한 추가 구현 세부사항이 있습니다:

요소가 스크롤될 때(사용자 또는 DOM 조작 등), 더 많은 콘텐츠가 표시됩니다. text-overflow 값은 더 많은 콘텐츠가 표시되는지에 영향을 주지 않아야 합니다. non-clip text-overflow가 설정된 경우, 더 많은 콘텐츠가 뷰에 들어오면 구현체는 들어오는 추가 콘텐츠를 보여주고, 생략부호/문자열을 위한 공간이 필요할 때만 콘텐츠를 잘라내야 하며, 요소가 충분히 스크롤되어 콘텐츠의 엣지가 보이면 생략부호 대신 해당 콘텐츠를 보여야 합니다.

이 예시는 overflow:scroll이 있는 요소에 text-overflow를 적용하여 위에서 설명한 동작을 보여줍니다.

샘플 CSS:

div.crawlbar {
          text-overflow: ellipsis;
          height: 2em;
          overflow: scroll;
          white-space: nowrap;
          width: 15em;
          border:1em solid black;
        }
        

샘플 HTML 조각:

<div class="crawlbar">
        CSS is awesome, especially when you can scroll
        to see extra text instead of just
        having it overlap other text by default.
        </div>
        

샘플 CSS와 HTML의 데모:

CSS is awesome, especially when you can scroll to see extra text instead of just having it overlap other text by default.

콘텐츠가 스크롤되는 동안, 구현체는 생략부호의 렌더링을 조정할 수 있습니다(예: 라인 엣지 대신 박스 엣지에 정렬).

부록 A. 개인정보 보호 고려사항

이 명세는 새로운 개인정보 보호 문제를 도입하지 않습니다.

부록 B. 보안 고려사항

이 명세는 새로운 보안 문제를 도입하지 않습니다.

부록 C. 변경사항

이 부록은 참고용입니다.

2021-12-02 워킹 드래프트 이후 변경사항 2021-12-02 Working Draft

2020-06-03 워킹 드래프트 이후 변경사항 2020-06-03 Working Draft

2018-07-31 워킹 드래프트 이후 변경사항 2018-07-31 Working Draft

2018-07-31 워킹 드래프트 이전 변경사항 2018-07-31 Working Draft

2018-07-31 워킹 드래프트 이전의 변경사항은 다음 변경 로그에서 확인할 수 있습니다:

감사의 글

특히 아래 분들의 피드백에 감사드립니다: Rossen Atanassov, Bert Bos, Tantek Çelik, John Daggett, Daniel Glazman, Vincent Hardy, Håkon Wium Lie, Peter Linss, Robert O’Callahan, Florian Rivoal, Alan Stearns, Steve Zilles, 그리고 www-style 커뮤니티의 모든 분들.

적합성(Conformance)

문서 관례(Document conventions)

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

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

이 명세의 예시는 “예를 들어(for example)”라는 단어로 시작하거나, class="example"로 구분되어 규범적 텍스트와 분리됩니다. 예시:

이것은 참고용 예시입니다.

참고(Informative note)는 “참고(Note)”라는 단어로 시작하며, class="note"로 규범적 텍스트와 구분됩니다. 예시:

참고: 이것은 참고용 노트입니다.

권고(Advisement)는 규범적 섹션으로, 특별한 주의를 환기시키기 위해 <strong class="advisement">로 스타일링되어 규범적 텍스트와 구분됩니다. 예시: UA는 반드시 접근 가능한 대안을 제공해야 합니다.

적합성 클래스(Conformance classes)

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

스타일 시트(style sheet)
CSS 스타일 시트.
렌더러(renderer)
UA가 스타일 시트의 의미를 해석하고, 해당 스타일 시트를 사용하는 문서를 렌더링함.
저작 도구(authoring tool)
UA가 스타일 시트를 작성함.

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

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

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

부분 구현(Partial implementations)

작성자가 미래 호환 파싱 규칙을 활용해 폴백 값을 지정할 수 있도록, CSS 렌더러는 사용 가능한 수준의 지원이 없는 모든 at-rule, 속성, 속성 값, 키워드, 기타 구문 구조를 반드시 무효로 처리하고 적절히 무시해야 합니다. 특히, UA는 지원하지 않는 구성 값만 선택적으로 무시하고, 지원되는 값만 적용해서는 안 됩니다: 어떤 값이라도 무효로 간주되면(지원하지 않는 값은 반드시 무효로 간주됨), CSS는 전체 선언을 무시해야 합니다.

불안정 및 독점 기능 구현(Implementations of Unstable and Proprietary Features)

향후 안정적인 CSS 기능과의 충돌을 피하기 위해, CSSWG는 최선의 구현 관례를 따를 것을 권장합니다. 불안정 기능 및 독점 확장 구현 시 참고하세요.

비실험적 구현(Non-experimental implementations)

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

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

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

색인(Index)

이 명세에서 정의된 용어(Terms defined by this specification)

참조로 정의된 용어(Terms defined by reference)

참고문헌(References)

규범적 참고문헌(Normative References)

[CSS-ALIGN-3]
Elika Etemad; Tab Atkins Jr.. CSS Box Alignment Module Level 3. 2023년 2월 17일. WD. URL: https://www.w3.org/TR/css-align-3/
[CSS-BACKGROUNDS-3]
Bert Bos; Elika Etemad; Brad Kemper. CSS Backgrounds and Borders Module Level 3. 2023년 2월 14일. CR. URL: https://www.w3.org/TR/css-backgrounds-3/
[CSS-BOX-4]
Elika Etemad. CSS Box Model Module Level 4. 2022년 11월 3일. WD. URL: https://www.w3.org/TR/css-box-4/
[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-CASCADE-5]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS Cascading and Inheritance Level 5. 2022년 1월 13일. CR. URL: https://www.w3.org/TR/css-cascade-5/
[CSS-CONTAIN-2]
Tab Atkins Jr.; Florian Rivoal; Vladimir Levin. CSS Containment Module Level 2. 2022년 9월 17일. WD. URL: https://www.w3.org/TR/css-contain-2/
[CSS-DISPLAY-3]
Tab Atkins Jr.; Elika Etemad. CSS Display Module Level 3. 2023년 3월 16일. CR. URL: https://www.w3.org/TR/css-display-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-INLINE-3]
Dave Cramer; Elika Etemad. CSS Inline Layout Module Level 3. 2022년 11월 14일. WD. URL: https://www.w3.org/TR/css-inline-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-MASKING-1]
Dirk Schulze; Brian Birtles; Tab Atkins Jr.. CSS Masking Module Level 1. 2021년 8월 5일. CR. URL: https://www.w3.org/TR/css-masking-1/
[CSS-OVERFLOW-4]
David Baron; Florian Rivoal; Elika Etemad. CSS Overflow Module Level 4. 2023년 3월 21일. WD. URL: https://www.w3.org/TR/css-overflow-4/
[CSS-PSEUDO-4]
Daniel Glazman; Elika Etemad; Alan Stearns. CSS Pseudo-Elements Module Level 4. 2022년 12월 30일. WD. URL: https://www.w3.org/TR/css-pseudo-4/
[CSS-SCROLL-SNAP-1]
Matt Rakow; et al. CSS Scroll Snap Module Level 1. 2021년 3월 11일. CR. URL: https://www.w3.org/TR/css-scroll-snap-1/
[CSS-TEXT-DECOR-4]
Elika Etemad; Koji Ishii. CSS Text Decoration Module Level 4. 2022년 5월 4일. WD. URL: https://www.w3.org/TR/css-text-decor-4/
[CSS-TRANSFORMS-2]
Tab Atkins Jr.; et al. CSS Transforms Module Level 2. 2021년 11월 9일. WD. URL: https://www.w3.org/TR/css-transforms-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/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 3. 2022년 12월 1일. 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. 2022년 10월 19일. 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/
[CSS3-FLEXBOX]
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/
[CSS3-GRID-LAYOUT]
Tab Atkins Jr.; et al. CSS Grid Layout Module Level 1. 2020년 12월 18일. CR. URL: https://www.w3.org/TR/css-grid-1/
[CSS3-TRANSFORMS]
Simon Fraser; et al. CSS Transforms Module Level 1. 2019년 2월 14일. CR. URL: https://www.w3.org/TR/css-transforms-1/
[CSSOM-VIEW]
Simon Pieters. CSSOM View Module. 2016년 3월 17일. WD. URL: https://www.w3.org/TR/cssom-view-1/
[HTML]
Anne van Kesteren; et al. HTML Standard. Living 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
[UAX29]
Christopher Chapman. Unicode Text Segmentation. 2022년 8월 26일. Unicode Standard Annex #29. URL: https://www.unicode.org/reports/tr29/tr29-41.html

참고용 참고문헌(Informative References)

[CSS-CONTAIN-1]
Tab Atkins Jr.; Florian Rivoal. CSS Containment Module Level 1. 2022년 10월 25일. REC. URL: https://www.w3.org/TR/css-contain-1/
[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. 2023년 2월 13일. CR. URL: https://www.w3.org/TR/css-text-3/
[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/
[CSS1]
Håkon Wium Lie; Bert Bos. Cascading Style Sheets, level 1. 2018년 9월 13일. REC. URL: https://www.w3.org/TR/CSS1/
[MEDIAQUERIES-5]
Dean Jackson; et al. Media Queries Level 5. 2021년 12월 18일. WD. URL: https://www.w3.org/TR/mediaqueries-5/

속성 색인

이름 초기값 적용 대상 상속 백분율 애니메이션 유형 정식 순서 계산된 값 논리 속성 그룹
overflow <'overflow-block'>{1,2} visible 블록 컨테이너 [CSS2], 플렉스 컨테이너 [CSS3-FLEXBOX], 그리드 컨테이너 [CSS3-GRID-LAYOUT] 아니오 해당 없음 불연속 문법에 따라 개별 속성 참조
overflow-block visible | hidden | clip | scroll | auto visible 블록 컨테이너 [CSS2], 플렉스 컨테이너 [CSS3-FLEXBOX], 그리드 컨테이너 [CSS3-GRID-LAYOUT] 아니오 해당 없음 불연속 문법에 따라 일반적으로 지정된 값, 단 텍스트 참조 overflow
overflow-clip-margin <visual-box> || <length [0,∞]> 0px overflow가 적용되는 박스 아니오 해당 없음 <visual-box> 값이 일치하면 계산된 값에 따라, 아니면 불연속 문법에 따라 계산된 <length>와 <visual-box> 키워드
overflow-inline visible | hidden | clip | scroll | auto visible 블록 컨테이너 [CSS2], 플렉스 컨테이너 [CSS3-FLEXBOX], 그리드 컨테이너 [CSS3-GRID-LAYOUT] 아니오 해당 없음 불연속 문법에 따라 일반적으로 지정된 값, 단 텍스트 참조 overflow
overflow-x visible | hidden | clip | scroll | auto visible 블록 컨테이너 [CSS2], 플렉스 컨테이너 [CSS3-FLEXBOX], 그리드 컨테이너 [CSS3-GRID-LAYOUT] 아니오 해당 없음 불연속 문법에 따라 일반적으로 지정된 값, 단 텍스트 참조 overflow
overflow-y visible | hidden | clip | scroll | auto visible 블록 컨테이너 [CSS2], 플렉스 컨테이너 [CSS3-FLEXBOX], 그리드 컨테이너 [CSS3-GRID-LAYOUT] 아니오 해당 없음 불연속 문법에 따라 일반적으로 지정된 값, 단 텍스트 참조 overflow
scroll-behavior auto | smooth auto 스크롤 컨테이너 아니오 해당 없음 애니메이션 불가 문법에 따라 지정된 값
scrollbar-gutter auto | stable && both-edges? auto 스크롤 컨테이너 아니오 해당 없음 불연속 문법에 따라 지정된 키워드
text-overflow clip | ellipsis clip 블록 컨테이너 아니오 해당 없음 불연속 문법에 따라 지정된 키워드

이슈 색인

변환(transform) 처리에 대한 설명이 충분히 정확한가요?
이 부분은 추가 테스트와 조사가 필요하며, 이번 초안에서는 보류되었습니다.
scrollable overflow가 무엇을 클리핑해야 하는지 평가가 필요합니다. [이슈 #8607]
baseline alignment와 같은 것들이 초기 스크롤 위치 또는 스크롤 원점 위치에 의존하는지 확인이 필요합니다.
scroll offsets에 대한 좌표계를 정의하지 않았습니다. 아래/오른쪽, 블록/인라인 축 끝 방향, 또는 scroll origin에서 멀어지는 방향으로 증가하는지 정의되어 있지 않습니다. 각 API가 자체 좌표 모델을 정의해야 할까요?