CSS 간격 장식 모듈 레벨 1

W3C 최초 공개 작업 초안,

이 문서에 대한 추가 정보
이 버전:
https://www.w3.org/TR/2025/WD-css-gaps-1-20250417/
최신 게시 버전:
https://www.w3.org/TR/css-gaps-1/
편집자 초안:
https://drafts.csswg.org/css-gaps-1/
기록:
https://www.w3.org/standards/history/css-gaps-1/
피드백:
CSSWG 이슈 저장소
명세 내 인라인
편집자:
Kevin Babbitt (Microsoft)
이 명세에 수정 제안:
GitHub 편집자

요약

이 모듈은 그리드와 플렉스와 같은 컨테이너 레이아웃 타입에 행 및 열 간격 장식을 추가하기 위한 여러 속성을 소개합니다.

CSS는 구조화된 문서(예: HTML 및 XML)를 화면, 인쇄물 등에서 렌더링하는 방법을 설명하는 언어입니다.

이 문서의 상태

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

이 문서는 CSS 작업 그룹에 의해 최초 공개 작업 초안으로 권고안 트랙을 사용하여 발행되었습니다. 최초 공개 작업 초안으로 발행되었다고 해서 W3C 및 회원사의 지지를 의미하지는 않습니다.

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

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

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

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

1. 소개

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

CSS Multicol 1 § 4 열 간격 및 규칙멀티컬럼 컨테이너에서 열 사이에 규칙을 그릴 수 있도록 허용합니다. 이 명세는 column-rule-width, column-rule-style, column-rule-color 속성을 확장하여 행 방향에도 동일한 속성을 추가하고, 적용 대상을 다른 컨테이너 레이아웃으로 확대하며, 간격 장식이 어디에 어떻게 그려질지에 대해 더 정교한 제어를 제공합니다.

1.1. 값 정의

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

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

2. 간격 장식

CSS의 멀티컬럼 컨테이너, 플렉스 컨테이너, 그리드 컨테이너, 매손리 컨테이너 등 다양한 레이아웃은 자식 박스를 서로 인접하게 배치하며, 이 사이에 간격(또는 거터)이 존재합니다. 각 간격에는 간격 장식이 있을 수 있으며, 이는 인접한 박스 사이에 그려지는 눈에 보이는 구분선(예: 선 등)입니다.

.grid-with-spans {
  display: grid;
  grid-template: repeat(4, 100px) / repeat(4, 100px);
  gap: 20px;
  row-rule: 6px solid red;
  column-rule: 6px solid blue;
}
항목이 겹치는 그리드와 간격 장식.
.flex {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  width: 500px;
  row-rule: 6px solid red;
  column-rule: 6px solid blue;
}
간격 장식이 적용된 플렉스박스.

2.1. 레이아웃 및 페인팅

이 명세는 컨테이너 레이아웃에서 간격의 기하학적 형태를 일반적으로 정의하지 않습니다; 이는 다른 명세에서 다루고 있습니다. CSS Box Alignment 3 § 8 박스 사이의 간격에서 멀티컬럼 컨테이너, 플렉스 컨테이너, 그리드 컨테이너에 관한 정의를 참고하세요.

간격 장식은 공간을 차지하지 않습니다. 즉, 간격 장식의 존재나 너비는 다른 요소의 배치에 영향을 주지 않습니다. 만약 간격 장식이 간격보다 넓으면, 인접 박스가 장식과 겹칠 수 있으며, 경우에 따라 장식이 컨테이너 박스 바깥으로 확장될 수 있습니다. 간격 장식은 컨테이너 테두리 바로 위에 그려집니다. 스크롤 가능한 컨테이너의 경우, 컨테이너의 테두리와 배경은 스크롤되지 않지만, 장식은 컨테이너 내 항목과 함께 스크롤되어야 합니다.

간격 교차점은 다음 위치에 존재하도록 정의됩니다:

다음 예시는 간격 교차점의 위치를 보여줍니다. 각 경우마다 자주색 +로 표시되어 있습니다.

.grid {
  display: grid;
  grid-template: repeat(4, 100px) / repeat(4, 100px);
  gap: 20px;
  background: rgb(255 255 128);
}
.grid > * {
  border: 1px dashed black;
}
항목이 겹치는 그리드에서 간격 교차점의 위치. 스팬되는 항목이 컨테이너의 엣지를 닿아 있거나, 교차점 양쪽에 스팬 항목이 있는 경우(예를 들어 #2와 #6, 혹은 #4와 #7 사이)에도 간격 교차점이 존재함을 확인하세요.
.flex {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  width: 500px;
  background: rgb(255 255 128);
}
.flex > * {
  border: 1px dashed black;
}
플렉스박스에서 간격 교차점의 위치. 컨테이너 엣지에도 간격 교차점이 있으며, 인접 행의 항목이 서로 정렬되지 않을 때(#2, #3, #4, #5 사이) 근접한 곳에 두 개의 간격 교차점이 생깁니다.

참고: CSS Box Alignment 3 § 8.1 행 및 열 거터: row-gap과 column-gap 속성은 플렉스 컨테이너에서 교차 방향의 간격을 한 줄 내 인접 플렉스 항목 사이에 있다고 정의합니다. 위의 예시처럼, #4와 #7의 오른쪽 엣지가 일치하고, #5와 #8의 왼쪽 엣지가 일치하더라도, 두 쌍 사이의 공간은 서로 다른 두 개의 간격입니다. 왜냐하면 각각 다른 줄에 있기 때문입니다. 따라서 #4, #5, #7, #8 사이의 교차점에는 위치가 겹치는 두 개의 간격 교차점이 존재합니다: 하나는 #4와 #5 사이 간격의 아래쪽, 다른 하나는 #7과 #8 사이 간격의 위쪽입니다.

간격 장식간격 교차점 쌍을 기준으로, 해당 간격의 중앙과 간격의 엣지에 평행하게 그려집니다.

2.2. 간격 장식을 세그먼트로 나누기: column-rule-break, row-rule-break, rule-break 속성

이름: column-rule-break, row-rule-break
값: none | spanning-item | intersection
초깃값: spanning-item
적용 대상: 그리드 컨테이너, 플렉스 컨테이너, 멀티컬럼 컨테이너, 매손리 컨테이너
상속: 아님
백분율: 해당 없음
계산 값: 명시된 대로
정식 순서: 문법 기준
애니메이션 유형: 불연속

컨테이너 내의 항목에 의해 형성된 보이는 "T" 또는 "십자" 교차점에서 주어진 간격 내의 장식을 세그먼트로 나누는 동작을 설정합니다. 정확한 값 적용 방법은 간격 장식 끝점 쌍 결정 단계에서 설명합니다.

none
간격 장식은 보이는 "T" 또는 "십자" 교차점에서 시작하거나 끝나지 않습니다. 대신, 하나의 연속적인 장식이 간격의 한쪽 끝에서 다른 끝까지 그려집니다.
spanning-item
간격 장식은 보이는 "T" 교차점에서 시작하고 끝나지만, 보이는 "십자" 교차점에서는 계속 이어집니다.
intersection
간격 장식은 보이는 "T" 및 "십자" 교차점에서 시작하고 끝납니다.

이 값들에 대해 네이밍을 논의하세요.

이름: rule-break
값: <'column-rule-break'>
초기값: 각 속성별 참고
적용 대상: column-rule-breakrow-rule-break와 동일
상속: 각 속성별 참고
백분율: 각 속성별 참고
계산된 값: 각 속성별 참고
애니메이션 타입: 각 속성별 참고
정식 순서: 문법 기준

column-rule-breakrow-rule-break 속성에 동일한 값을 설정합니다.

2.2.1. 간격 교차점을 세그먼트로 쌍짓기

주어진 gap의 맥락에서, 간격 교차점 ab 한 쌍이 비연속적(discontiguous)으로 간주되는 경우는, a에서 b까지 gap과 동일한 너비의 선분이 컨테이너 내 자식 항목과 교차할 때입니다.

참고: 이 정의의 주요 활용 사례는 저자의 의도와 다르게 간격 장식이 span 항목과 교차하는 것을 방지하는 것입니다. 예를 들어, span 항목이 컨테이너의 가장자리에 닿거나, span 항목이 "T 교차점"을 형성할 때 등입니다. 하지만 정의의 구체적인 표현은 아래와 같은 추가적인 경우도 다루기 위한 것입니다:

표시된 네 개의 간격 교차점은 하나의 공통 간격 중심선에 위치합니다. 하지만 항목 3이 항목 1과 5보다 약간 더 넓기 때문에, 위에서 두 번째와 세 번째 점은 비연속적입니다. 따라서 두 개의 상단 간격 교차점이 한 쌍을 이루고, 두 개의 하단 간격 교차점이 또 한 쌍을 이룹니다. (추가적으로 두 중간 점의 오른쪽에 약간 치우친 간격 교차점 쌍이 더 있으며, 이 점들은 표시되지 않았습니다. 이 점들도 또 다른 쌍을 형성합니다.)

주어진 gap 내에서 간격 장식 끝점 쌍 결정을 하기 위한 절차:
  1. pairs를 빈 리스트로 둡니다. endpoints간격 교차점의 리스트로, 해당 gap의 중심선상에 위치한 점을 시작부터 끝까지 gap의 축을 따라 순서대로 정렬합니다. breakcolumn-rule-break 또는 row-rule-breakgap에 적용되는 사용된 값을 둡니다.
  2. endpoints에 항목이 2개 미만이라면, pairs를 반환합니다.
  3. breaknone이 아니고, endpoints의 첫 두 항목이 비연속적이라면, endpoints의 첫 항목을 제거한 뒤 2단계로 돌아갑니다.
  4. endpoints의 첫 항목을 제거합니다. start에 그 값을 저장합니다.
  5. endpoints의 첫 항목을 제거합니다. end에 그 값을 저장합니다.
  6. endpoints가 비어있지 않고, 아래 조건 중 하나라도 참이면...
    1. breaknone인 경우
    2. breakspanning-item이고, startendpoints의 첫 항목과 비연속적이지 않은 경우
    3. breakintersection이고, startendpoints의 첫 항목과 비연속적이지 않으며, 해당 교차점이 반대쪽에 spanning 항목으로 둘러싸인 경우
    ...그렇다면 5단계로 돌아갑니다.
  7. 오프셋 계산을 통해 start의 값을 gap 내에서 계산합니다. 계산된 만큼 startgap의 축을 따라 앞으로 이동시킵니다.
  8. 오프셋 계산을 통해 end의 값을 gap 내에서 계산합니다. 계산된 만큼 endgap의 축을 따라 뒤로 이동시킵니다.
  9. pairsstartend로 구성된 튜플을 추가합니다.
  10. 2단계로 돌아갑니다.

위 단계에서 식별한 각 끝점 쌍 사이에 간격 장식이 그려집니다.

아래의 예시는 *-rule-break 속성의 다양한 설정을 보여줍니다. 차이를 더욱 명확하게 하기 위해 *-rule-outset 속성은 0으로 설정되어 있습니다.

.break-none-grid {
  display: grid;
  grid-template: repeat(4, 100px) / repeat(4, 100px);
  gap: 20px;
  row-rule: 6px solid red;
  column-rule: 6px solid blue;
  rule-break: none;
  rule-outset: 0px;
}
break 없음 설정의 Grid 간격 장식. 간격 장식이 그리드 내 항목 뒤에까지 뻗어 있음을 주목하세요.
.break-spanning-item-grid {
  display: grid;
  grid-template: repeat(4, 100px) / repeat(4, 100px);
  gap: 20px;
  row-rule: 6px solid red;
  column-rule: 6px solid blue;
  rule-break: spanning-item;
  rule-outset: 0px;
}
Grid 간격 장식이 span 항목과 인접하지 않은 간격 교차점에서 분할됩니다.
.break-intersection-grid {
  display: grid;
  grid-template: repeat(4, 100px) / repeat(4, 100px);
  gap: 20px;
  row-rule: 6px solid red;
  column-rule: 6px solid blue;
  rule-break: intersection;
  rule-outset: 0px;
}
Grid 간격 장식이 반대편에서 span 항목으로 둘러싸이지 않은 모든 간격 교차점에서 분할됩니다.
.break-none-flex {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  row-rule: 6px solid red;
  column-rule: 6px solid blue;
  rule-break: none;
  rule-outset: 0px;
}
break 없음 설정의 Flexbox 간격 장식. 각 flex 줄마다 별개의 간격이 있으므로, 간격 장식은 인접 flex 줄의 간격이 일치하더라도 서로 분리되어 있습니다.

참고: Flexbox에는 spanning 항목 개념이 없으므로, spanning-item 값은 flexbox에서 none 값과 동일하게 동작합니다.

.break-intersection-flex {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  width: 500px;
  gap: 20px;
  row-rule: 6px solid red;
  column-rule: 6px solid blue;
  rule-break: intersection;
  rule-outset: 0px;
}
Flexbox 간격 장식이 모든 간격 교차점에서 분할됩니다.

2.3. 간격 장식 끝점 조정: column-rule-outset, row-rule-outset, rule-outset 속성

이름: column-rule-outset, row-rule-outset
값: <length-percentage>
초기값: 50%
적용 대상: 그리드 컨테이너, 플렉스 컨테이너, 멀티컬럼 컨테이너, 메이슨리 컨테이너
상속: 아니오
백분율: 교차 간격 너비 참조
계산된 값: 명시된 대로
정식 순서: 문법 기준
애니메이션 타입: 계산된 값 타입에 따라

이 속성들은 간격 장식의 끝점을 일반적으로 끝점을 결정하는 간격 교차점에 대해 오프셋할 수 있도록 해줍니다. 기본값 50%간격 장식 끝점을 교차점의 중앙에 위치시킵니다. 0 값을 사용하면 간격 장식 끝점이 교차점의 가장자리와 일치합니다. 양수 값은 교차점의 중앙으로 확장되고, 음수 값은 중앙에서 멀어지게 됩니다. 이러한 오프셋은 컨테이너의 가장자리에도 적용되며, 양수 값은 컨테이너의 콘텐츠 경계를 넘어 확장될 수 있습니다.

이름: rule-outset
값: <'column-rule-outset'>
초기값: 각 속성별 참고
적용 대상: column-rule-outsetrow-rule-outset와 동일
상속: 각 속성별 참고
백분율: 각 속성별 참고
계산된 값: 각 속성별 참고
애니메이션 타입: 각 속성별 참고
정식 순서: 문법 기준

column-rule-outsetrow-rule-outset 속성에 동일한 값을 설정합니다.

.outset-0px {
  column-rule-outset: 0px;
  column-rule-break: intersection;
}
0px의 outset은 간격 장식의 끝을 인접 항목과 맞춥니다.
.outset-5px {
  column-rule-outset: 5px;
  column-rule-break: intersection;
}
5px의 outset은 간격 장식의 끝을 인접 항목의 가장자리보다 약간 더 확장합니다.
.outset-50percent {
  column-rule-outset: 50%;
  column-rule-break: intersection;
}
50%의 outset(기본값)은 간격 장식의 끝을 교차점의 중간까지 확장합니다. 이웃하는 간격 장식이 "중간에서 만나" 연속적인 선을 만듭니다. 컨테이너의 가장자리에서는 교차 간격 너비0으로 정의되므로, outset 값 50%0으로 해석되고 간격 장식은 컨테이너 경계를 넘지 않습니다. (이전 px 단위 예시와 비교하세요.)
.outset-negative-5px {
  column-rule-outset: -5px;
  column-rule-break: intersection;
}
-5px의 outset은 간격 장식의 끝을 인접 항목의 가장자리 기준으로 더 짧게 만듭니다.

주어진 간격 내에서 간격 교차점을 고려할 때, 각 점에는 다음과 같이 교차 간격 너비가 할당됩니다:

컨테이너의 콘텐츠 가장자리에서
교차 간격 너비0입니다.
다른 간격과의 교차점에서
교차 간격 너비는 교차하는 간격에 적용되는 column-gap 또는 row-gap 속성의 사용된 값입니다.
오프셋 계산 절차: 주어진 간격 교차점 pointgap에 대해:
  1. width교차 간격 너비로 설정합니다.
  2. outsetcolumn-rule-outset 또는 row-rule-outset의 계산된 값으로 설정합니다. outset의 백분율을 width에 대해 해석합니다.
  3. resultwidth × 50%로 설정합니다. result에서 outset을 뺍니다.
  4. result를 반환합니다.

오프셋 적용 방법에 대한 자세한 내용은 간격 장식 끝점 쌍 결정 절차를 참조하세요.

2.4. 간격 장식 페인트 순서: rule-paint-order 속성

이름: rule-paint-order
값: row-over-column | column-over-row
초기값: row-over-column
적용 대상: 그리드 컨테이너, 플렉스 컨테이너, 메이슨리 컨테이너
상속: 아니오
백분율: 해당 없음
계산된 값: 명시된 대로
정식 순서: 문법 기준
애니메이션 타입: 불연속

2차원 컨테이너에서 간격 장식의 페인트 순서를 설정합니다.

아래 예시는 rule-paint-order 속성을 사용한 간격 장식 페인트 순서 조정을 보여줍니다.

.row-over-coulumn {
  rule-paint-order: row-over-column;
  row-rule: 6px solid red;
  column-rule: 6px solid blue;
}
row-over-column 간격 장식 페인트 순서.
rule-paint-order: column-over-row;
row-rule: 6px solid red;
column-rule: 6px solid blue;
column-over-row 간격 장식 페인트 순서.

3. 색상, 스타일, 너비

이 섹션의 속성 정의는 [CSS-MULTICOL-1]에서 동일한 이름의 속성 정의보다 우선합니다.

3.1. 간격 장식 색상: column-rule-colorrow-rule-color 속성

이름: column-rule-color, row-rule-color
값: <line-color-list> | <auto-line-color-list>
초기값: currentcolor
적용 대상: 그리드 컨테이너, 플렉스 컨테이너, 다단 컨테이너, 메이슨리 컨테이너
상속됨: 아니오
백분율: 해당 없음
계산된 값: 지정된 그대로
정규 순서: 문법에 따름
애니메이션 유형: 계산된 값 유형에 따름
<line-color-list>          = [ <line-color-or-repeat> ]+

<auto-line-color-list>     = [ <line-color-or-repeat> ]*
                             <auto-repeat-line-color>
                             [ <line-color-or-repeat> ]*

<line-color-or-repeat>     = [ <color> | <repeat-line-color> ]

<repeat-line-color>        = repeat( [ <integer [1,∞]> ] , [ <color> ]+ )

<auto-repeat-line-color>   = repeat( auto , [ <color> ]+ )
<color>
간격 장식의 색상을 설정합니다.

3.2. 간격 장식 스타일: column-rule-stylerow-rule-style 속성

이름: column-rule-style, row-rule-style
값: <line-style-list> | <auto-line-style-list>
초기값: none
적용 대상: 그리드 컨테이너, 플렉스 컨테이너, 다단 컨테이너, 메이슨리 컨테이너
상속됨: 아니오
백분율: 해당 없음
계산된 값: 지정된 그대로
정규 순서: 문법에 따름
애니메이션 유형: 불연속적
<line-style-list>          = [ <line-style-or-repeat> ]+

<auto-line-style-list>     = [ <line-style-or-repeat> ]*
                             <auto-repeat-line-style>
                             [ <line-style-or-repeat> ]*

<line-style-or-repeat>     = [ <line-style> | <repeat-line-style> ]

<repeat-line-style>        = repeat( [ <integer [1,∞]> ] , [ <line-style> ]+ )

<auto-repeat-line-style>   = repeat( auto , [ <line-style> ]+ )

이 속성들은 간격 장식의 스타일을 설정합니다. <line-style> 값은 collapsing border 모델에서와 같이 해석됩니다.

3.3. 간격 장식 너비: column-rule-widthrow-rule-width 속성

이름: column-rule-width, row-rule-width
값: <line-width-list> | <auto-line-width-list>
초기값: medium
적용 대상: 그리드 컨테이너, 플렉스 컨테이너, 다단 컨테이너, 메이슨리 컨테이너
상속됨: 아니오
백분율: 해당 없음
계산된 값: 절대 길이 목록, 테두리 너비로 스냅됨 또는 아래 조건에서 0
정규 순서: 문법에 따름
애니메이션 유형: 계산된 값 유형에 따름
<line-width-list>          = [ <line-width-or-repeat> ]+

<auto-line-width-list>     = [ <line-width-or-repeat> ]*
                             <auto-repeat-line-width>
                             [ <line-width-or-repeat> ]*

<line-width-or-repeat>     = [ <line-width> | <repeat-line-width> ]

<repeat-line-width>        = repeat( [ <integer [1,∞]> ] , [ <line-width> ]+ )

<auto-repeat-line-width>   = repeat( auto , [ <line-width> ]+ )

이 속성은 갭 장식의 너비를 설정합니다. 음수 값은 허용되지 않습니다.

column-rule-style의 계산된 값이 none 또는 hidden인 경우, column-rule-width의 계산된 값은 0이 됩니다. 이 동작은 CSS Multicol 1 § 4.4 The Width Of Column Rules: the column-rule-width property와의 하위 호환성을 위해 제공됩니다.

"0으로 강제"하는 동작이 값 목록이 사용될 때에도 적용되어야 할까요? 만약 그렇다면, 맞지 않는 목록과 함께 이 동작을 어떻게 처리해야 할까요?

3.4. 값 목록과 repeat() 표기법

이 섹션의 각 속성은 공백으로 구분된 값 목록을 허용합니다. 여러 값을 이렇게 설정하면 하나의 컨테이너 내에서 다양한 갭 장식을 지정할 수 있습니다.

작성자는 다음과 같이 빨간색과 파란색 칼럼 규칙을 번갈아 지정할 수 있습니다:
column-rule-width: 1px;
column-rule-style: solid;
column-rule-color: red blue;

이러한 목록에는 repeat() 표기법이 포함될 수 있습니다. CSS Grid Layout 1 § 7.2.3 Repeating Rows and Columns: the repeat() notation과 유사하게, 이 표기법은 반복되는 패턴을 보이는 갭 장식 시리즈를 더 간결한 형태로 작성할 수 있게 합니다.

repeat() 구문의 일반적인 형태는 대략 다음과 같습니다.

repeat( [ <integer [1,∞]> | auto ] , <value>+ )

repeat()의 첫 번째 인자는 반복 횟수를 지정합니다.

<integer>
정수 반복자를 지정합니다. 정수 반복자는 두 번째 인자의 값 목록을 첫 번째 인자에서 지정한 횟수만큼 반복하여 확장합니다.
작성자는 다음과 같이 작성할 수 있습니다:
column-rule-color: gray red blue red blue red blue gray;

아래와 같이 단축해서 동일한 색상 시퀀스를 만들 수도 있습니다:

column-rule-color: gray repeat(3, red blue) gray;
auto
auto 반복자를 지정합니다. auto 반복자는 목록의 다른 부분에서 값을 받지 못하는 갭에 값을 채우는 데 사용됩니다. 하나의 값 목록에서는 최대 한 개의 repeat()auto 반복자가 될 수 있습니다.
앞의 예시에서, 작성자가 최종 레이아웃의 칼럼 수를 모르는 경우 다음과 같이 작성할 수 있습니다:
column-rule-color: gray repeat(auto, red blue) gray;

이렇게 하면 첫 번째와 마지막 칼럼 갭에는 회색 장식이, 중간 칼럼 갭에는 빨간색과 파란색 장식이 번갈아 들어갑니다.

repeat()의 두 번째 인자는 해당 속성에서 허용되는 값의 공백으로 구분된 목록입니다.

갭 장식 값 할당values 목록을 사용하여 gaps 목록에 수행하기:
  1. values 내의 정수 반복자를 확장된 값으로 대체합니다.
  2. 목록에 auto 반복자가 없다면:
    1. values의 첫 번째 항목과 gaps의 첫 번째 항목부터 시작하여, 각 값을 해당 갭에 할당합니다. 값이 갭보다 적으면 values의 첫 번째 항목부터 다시 반복하여 필요한 만큼 할당합니다.
    2. 이 알고리즘을 종료합니다.
  3. valuesauto 반복자가 있다면, leading countauto 반복자 앞의 values 항목 수로 지정합니다. trailing countauto 반복자 뒤의 values 항목 수로 지정합니다.
  4. gaps를 다음과 같이 분할합니다:
    1. leading gapsgaps의 처음 leading count개 항목으로 지정합니다.
    2. trailing gapsgaps의 마지막 trailing count개 항목으로, leading gaps에 포함된 항목은 제외합니다.
    3. auto gapsleading gapstrailing gaps에 포함되지 않은 gaps의 나머지 항목으로 지정합니다.
  5. leading gaps가 비어 있지 않으면, 갭 장식 값 할당leading gapsvalues의 앞 leading count개 항목으로 수행합니다.
  6. trailing gaps가 비어 있지 않으면, 갭 장식 값 역방향 할당trailing gapsvalues의 마지막 trailing count개 항목으로 수행합니다.
  7. auto gaps가 비어 있지 않으면, 갭 장식 값 할당auto 반복자의 두 번째 인자 값 목록으로 auto gaps에 수행합니다.
갭 장식 값 역방향 할당values 목록을 사용하여 gaps 목록에 수행하려면, 갭 장식 값 할당의 동일한 단계로 진행하되, 2단계에서 "첫 번째"를 "마지막"으로 변경합니다.

3.5. 갭 장식 축약형: column-rulerow-rule 속성

이름: column-rule, row-rule
값: <gap-rule-list> | <gap-auto-rule-list>
초기값: 각 개별 속성 참조
적용 대상: 각 개별 속성 참조
상속: 각 개별 속성 참조
퍼센트값: 각 개별 속성 참조
계산된 값: 각 개별 속성 참조
애니메이션 타입: 각 개별 속성 참조
정식 순서: 문법 순서대로
<gap-rule-list>        = <gap-rule-or-repeat>#

<gap-auto-rule-list>   = <gap-rule-or-repeat>#? ,
                         <gap-auto-repeat-rule> ,
                         <gap-rule-or-repeat>#?

<gap-rule-or-repeat>   = <gap-rule> | <gap-repeat-rule>

<gap-repeat-rule>      = repeat( <integer [1,∞]> , <gap-rule># )

<gap-auto-repeat-rule> = repeat( auto , <gap-rule># )

<gap-rule>             = <line-width> || <line-style> || <color>

이 축약형 속성들은 해당 너비, 스타일, 색상 속성들을 한 번에 설정합니다.

3.6. 양방향 갭 장식 축약형: rule-color, rule-style, rule-width, 그리고 rule 속성

이름: rule-color
값: <'column-rule-color'>
초기값: 각 개별 속성 참조
적용 대상: column-rule-colorrow-rule-color와 동일
상속: 아니오
퍼센트값: 각 개별 속성 참조
계산된 값: 각 개별 속성 참조
애니메이션 타입: 각 개별 속성 참조
정식 순서: 문법 순서대로
이름: rule-style
값: <'column-rule-style'>
초기값: 각 개별 속성 참조
적용 대상: column-rule-stylerow-rule-style와 동일
상속: 아니오
퍼센트값: 각 개별 속성 참조
계산된 값: 각 개별 속성 참조
애니메이션 타입: 각 개별 속성 참조
정식 순서: 문법 순서대로
이름: rule-width
값: <'column-rule-width'>
초기값: 각 개별 속성 참조
적용 대상: column-rule-widthrow-rule-width와 동일
상속: 아니오
퍼센트값: 각 개별 속성 참조
계산된 값: 각 개별 속성 참조
애니메이션 타입: 각 개별 속성 참조
정식 순서: 문법 순서대로
이름: rule
값: <'column-rule'>
초기값: 각 개별 속성 참조
적용 대상: column-rulerow-rule과 동일
상속 여부: 아니오
백분율: 각 개별 속성 참조
계산된 값: 각 개별 속성 참조
애니메이션 유형: 각 개별 속성 참조
정식 순서: 문법에 따름

이 단축 속성들은 해당하는 column과 row 속성을 동일한 값으로 설정합니다.

개인정보 보호 고려사항

이 명세에 대해 보고된 새로운 개인정보 보호 고려사항은 없습니다.

보안 고려사항

이 명세에 대해 보고된 새로운 보안 고려사항은 없습니다.

적합성

문서 관례

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

이 명세의 모든 텍스트는 명시적으로 비규범적임을 표시한 섹션, 예제, 노트를 제외하고는 규범적입니다. [RFC2119]

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

이것은 정보 제공용 예제입니다.

정보 노트는 “Note”라는 단어로 시작하며, class="note"로 규범적 텍스트와 분리되어 있습니다. 예시:

Note, 이것은 정보 제공용 노트입니다.

권고문은 특별히 주의를 끌도록 스타일링된 규범적 섹션이며, <strong class="advisement">로 구분되어 있습니다. 예시: UA는 반드시 접근 가능한 대안을 제공해야 합니다.

적합성 클래스

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

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

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

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

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

부분 구현

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

불안정 및 독자적 기능의 구현

향후 안정적인 CSS 기능과 충돌을 피하기 위해, CSSWG는 CSS의 불안정 기능과 독자적 확장 구현 시 모범 사례를 따를 것을 권장합니다.

비실험적 구현

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

CSS 구현 간 상호운용성을 확립 및 유지하기 위해, CSS 워킹 그룹은 비실험적 CSS 렌더러가 W3C에 구현 보고서(필요시 테스트케이스 포함)를 제출한 뒤 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. 2025년 3월 11일. WD. URL: https://www.w3.org/TR/css-align-3/
[CSS-BACKGROUNDS-3]
Elika Etemad; Brad Kemper. CSS Backgrounds and Borders Module Level 3. 2024년 3월 11일. CRD. URL: https://www.w3.org/TR/css-backgrounds-3/
[CSS-COLOR-5]
Chris Lilley; 외. CSS Color Module Level 5. 2025년 3월 18일. WD. URL: https://www.w3.org/TR/css-color-5/
[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-GRID-1]
Tab Atkins Jr.; 외. CSS Grid Layout Module Level 1. 2025년 3월 26일. CRD. URL: https://www.w3.org/TR/css-grid-1/
[CSS-GRID-2]
Tab Atkins Jr.; 외. CSS Grid Layout Module Level 2. 2025년 3월 26일. CRD. URL: https://www.w3.org/TR/css-grid-2/
[CSS-GRID-3]
Tab Atkins Jr.; 외. CSS Grid Layout Module Level 3. 2025년 2월 7일. WD. URL: https://www.w3.org/TR/css-grid-3/
[CSS-MULTICOL-1]
Florian Rivoal; Rachel Andrew. CSS Multi-column Layout Module Level 1. 2024년 5월 16일. CR. URL: https://www.w3.org/TR/css-multicol-1/
[CSS-MULTICOL-2]
Florian Rivoal; Rachel Andrew. CSS Multi-column Layout Module Level 2. 2024년 12월 19일. FPWD. URL: https://www.w3.org/TR/css-multicol-2/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 3. 2024년 3월 22일. CRD. URL: https://www.w3.org/TR/css-values-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 4. 2024년 3월 12일. WD. URL: https://www.w3.org/TR/css-values-4/
[CSS2]
Bert Bos; 외. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. 2011년 6월 7일. REC. URL: https://www.w3.org/TR/CSS2/
[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

속성 색인

이름 초기값 적용 대상 상속 백분율 애니메이션 유형 정식 순서 계산된 값
column-rule <gap-rule-list> | <gap-auto-rule-list> 각 개별 속성 참조 각 개별 속성 참조 각 개별 속성 참조 각 개별 속성 참조 각 개별 속성 참조 문법에 따름 각 개별 속성 참조
column-rule-break none | spanning-item | intersection spanning-item grid containers, flex containers, multicol containers, masonry containers 아니오 해당 없음 불연속 문법에 따름 명시된 대로
column-rule-color <line-color-list> | <auto-line-color-list> currentcolor grid containers, flex containers, multicol containers, masonry containers 아니오 해당 없음 계산된 값 유형 문법에 따름 명시된 대로
column-rule-outset <length-percentage> 50% grid containers, flex containers, multicol containers, masonry containers 아니오 교차 갭 너비 참고 계산된 값 유형 문법에 따름 명시된 대로
column-rule-style <line-style-list> | <auto-line-style-list> none grid containers, flex containers, multicol containers, masonry containers 아니오 해당 없음 불연속 문법에 따름 명시된 대로
column-rule-width <line-width-list> | <auto-line-width-list> medium grid containers, flex containers, multicol containers, masonry containers 아니오 해당 없음 계산된 값 유형 문법에 따름 절대 길이의 목록, 경계 너비로 스냅되거나, 아래 명시된 조건에서 0
row-rule <gap-rule-list> | <gap-auto-rule-list> 각 개별 속성 참조 각 개별 속성 참조 각 개별 속성 참조 각 개별 속성 참조 각 개별 속성 참조 문법에 따름 각 개별 속성 참조
row-rule-break none | spanning-item | intersection spanning-item grid containers, flex containers, multicol containers, masonry containers 아니오 해당 없음 불연속 문법에 따름 명시된 대로
row-rule-color <line-color-list> | <auto-line-color-list> currentcolor grid containers, flex containers, multicol containers, masonry containers 아니오 해당 없음 계산된 값 유형 문법에 따름 명시된 대로
row-rule-outset <length-percentage> 50% grid containers, flex containers, multicol containers, masonry containers 아니오 교차 갭 너비 참고 계산된 값 유형 문법에 따름 명시된 대로
row-rule-style <line-style-list> | <auto-line-style-list> none grid containers, flex containers, multicol containers, masonry containers 아니오 해당 없음 불연속 문법에 따름 명시된 대로
row-rule-width <line-width-list> | <auto-line-width-list> medium grid containers, flex containers, multicol containers, masonry containers 아니오 해당 없음 계산된 값 유형 문법에 따름 절대 길이의 목록, 경계 너비로 스냅되거나, 아래 명시된 조건에서 0
rule <'column-rule'> 각 개별 속성 참조 column-rule 및 row-rule과 동일 아니오 각 개별 속성 참조 각 개별 속성 참조 문법에 따름 각 개별 속성 참조
rule-break <'column-rule-break'> 각 개별 속성 참조 column-rule-break 및 row-rule-break와 동일 각 개별 속성 참조 각 개별 속성 참조 각 개별 속성 참조 문법에 따름 각 개별 속성 참조
rule-color <'column-rule-color'> 각 개별 속성 참조 column-rule-color 및 row-rule-color와 동일 아니오 각 개별 속성 참조 각 개별 속성 참조 문법에 따름 각 개별 속성 참조
rule-outset <'column-rule-outset'> 각 개별 속성 참조 column-rule-outset 및 row-rule-outset과 동일 각 개별 속성 참조 각 개별 속성 참조 각 개별 속성 참조 문법에 따름 각 개별 속성 참조
rule-paint-order row-over-column | column-over-row row-over-column grid containers, flex containers, masonry containers 아니오 해당 없음 불연속 문법에 따름 명시된 대로
rule-style <'column-rule-style'> 각 개별 속성 참조 column-rule-style 및 row-rule-style과 동일 아니오 각 개별 속성 참조 각 개별 속성 참조 문법에 따름 각 개별 속성 참조
rule-width <'column-rule-width'> 각 개별 속성 참조 column-rule-width 및 row-rule-width와 동일 아니오 각 개별 속성 참조 각 개별 속성 참조 문법에 따름 각 개별 속성 참조

이슈 색인

이 값들을 Bikeshed로 검토하세요.
값 목록이 사용될 때 "0으로 강제" 동작이 적용되어야 할까요? 만약 그렇다면, 맞지 않는 목록은 어떻게 처리해야 할까요?