> For the complete documentation index, see [llms.txt](https://yamoo9.gitbook.io/css-grid/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yamoo9.gitbook.io/css-grid/box-alignment.md).

# Box 정렬 가이드

[Box 정렬(Alignment)](https://www.w3.org/TR/css-align-3/)의 일부 동작은 레이아웃 방법에 따라 달라집니다. CSS Grid / Flexbox의 각 레이아웃 방법에 따라 아이템 정렬이 어떻게 다르게 설정 되는지 비교해봅니다.

![](https://3440753900-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LH1dN99ZXtZTFG_0JKV%2F-LHC0aKei2GzPN-n6_Z_%2F-LHC0b1Ht-cdzQtV0KKy%2Fimage.png?alt=media\&token=3dcde3d5-9394-4efe-9dbb-edfd07cfccfa)

## Box 정렬의 핵심 개념 <a href="#point" id="point"></a>

컨테이너 요소는 포함하는 아이템 자식 요소를 정렬할 수 있습니다. 정렬의 유형을 세부적으로 구분하면 다음 3가지로 나눌 수 있습니다.

* [**위치 정렬**](https://drafts.csswg.org/css-align/#positional-values) - `start`, `end`, `center` 와 같은 키워드
* [**기본 정렬**](https://drafts.csswg.org/css-align/#baseline-values) - `baseline` 키워드와 `first`/`last` 수정자(Modifiers)
* [**분산 정렬**](https://drafts.csswg.org/css-align/#distribution-values) - `stretch`, `space-between`, `space-around`, `space-evenly`&#x20;

이러한 키워드 값의 대부분은 [**문서의 쓰기 모드(Writing modes)**](https://24ways.org/2016/css-writing-modes/)**와 관련되어 작동**합니다. 글의 흐름이 좌 ⟹ 우 방향이라면 그리드 컨테이너의 왼쪽이 `start` 가 됩니다. 반대로 우 ⟹ 좌 방향이라면 오른쪽이 `start`가 됩니다.

![글을 읽는 방향에 따라 정렬의 기준이 달라집니다.](https://3440753900-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LH1dN99ZXtZTFG_0JKV%2F-LHB7JmfnVROszGUIuPm%2F-LHBCgSFRGlpagqWq8vf%2Fimage.png?alt=media\&token=ec0d3c3e-d00c-4a5a-b4e6-48a15a996c76)

## Block / Inline 축(Axis)

블록과 인라인 축은 다양한 방법으로 사용됩니다. 블록 축은 Grid 사양의 컬럼(Column) 축으로, Flexbox 에서는 교차(Cross) 축으로 사용됩니다. 인라인 축은 Grid에서 로우(Row) 축으로, Flexbox에서는 주(Main) 축으로 사용됩니다.

| **축**             | **Grid** | **Flexbox** |
| ----------------- | -------- | ----------- |
| **Block 축 (수직)**  | Column 축 | Cross 축     |
| **Inline 축 (수평)** | Row 축    | Main 축      |

![블록 축과 인라인 축](https://3440753900-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LH1dN99ZXtZTFG_0JKV%2F-LHBLJBDYKJaAswzqVIH%2F-LHBM4Yr1StOyDQyULMP%2Fimage.png?alt=media\&token=b2c8121b-ff92-44a6-9312-95fd01f22450)

{% hint style="warning" %}
Grid는 언제나 명시적인 행/열을 가지고 있어 축을 기준으로 하는 정렬에 대해 이해하기 쉽습니다. \
하지만 Flexbox는 주 축(Main Axis) 방향이 바뀔 때마다 정렬 기준이 변경된다는 점에 유의해야 합니다.
{% endhint %}

### `align-self` / `align-items`

`align-*` 속성은 블록 축(수직 방향)과 관련된 속성입니다. Grid 레이아웃은 Column 축에 해당되며, 명확하게 수직 방향으로만 정렬이 설정됩니다. 반면 Flexbox는 `flex-direction` 속성 설정에 따라 교차 축의 방향이 바뀌기 때문에, 교차 축에 영향을 받는 `align-*` 속성의 정렬 또한 바뀝니다.

![](https://3440753900-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LH1dN99ZXtZTFG_0JKV%2F-LHBpKbiMOWTZLqk1Say%2F-LHC-Nd3GBN8F2gXUxP2%2Fimage.png?alt=media\&token=fb48302f-380b-459a-acfe-323b4787016c)

### `justify-self` / `justify-items`

`justify-*` 속성은 인라인 축(수평 방향)과 관련된 속성입니다. Grid 레이아웃은 Row 축에 해당되며, 명확하게 수 방향으로만 정렬이 설정됩니다. 반면 Flexbox 에는 `justify-self`, `justify-items`과 같은 속성을 지원하지 않습니다. 개별 아이템을 주 축 방향을 기준으로 정렬하고자 한다면 `margin` 속성을 사용 합니다.

![](https://3440753900-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LH1dN99ZXtZTFG_0JKV%2F-LHBpKbiMOWTZLqk1Say%2F-LHC-RhuLfwH1di1ikJQ%2Fimage.png?alt=media\&token=ec4e5139-48e7-4a59-846d-818532aca5ba)

### `align-content`

`align-content` 속성은 블록 축(수직 방향)과 관련된 속성입니다. Grid 레이아웃은 Column 축에 해당되며, 그리드 컨테이너에 여유 공간이 존재할 경우 정렬이 반영됩니다. Flexbox 또한 컨테이너에 여유 공간이 있다면 정렬을 수행할 수 있습니다.

![](https://3440753900-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LH1dN99ZXtZTFG_0JKV%2F-LHBpKbiMOWTZLqk1Say%2F-LHC-YzyyRH8w-bq9iik%2Fimage.png?alt=media\&token=720782aa-ff0c-4205-8951-aec8a76f4abf)

### `justify-content`

`justify-content` 속성은 블록 축(수직 방향)과 관련된 속성입니다. Grid 레이아웃은 Column 축에 해당되며, 그리드 컨테이너에 여유 공간이 존재할 경우 정렬이 반영됩니다. Flexbox 또한 컨테이너에 여유 공간이 있다면 정렬을 수행할 수 있습니다.

![](https://3440753900-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LH1dN99ZXtZTFG_0JKV%2F-LHBpKbiMOWTZLqk1Say%2F-LHC0FPg-xI3I3cv1BRc%2Fimage.png?alt=media\&token=17a84667-c4a2-4d29-bedc-c6d5c80b6028)

## 레퍼런스 <a href="#references" id="references"></a>

{% embed url="<https://www.w3.org/TR/css-align-3/>" %}
CSS Box 정렬 모듈 레벨 3 | W3C
{% endembed %}

{% embed url="<https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Box_Alignment>" %}
CSS Box 정렬 | MDN
{% endembed %}

{% embed url="<https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/Box_Alignment_in_CSS_Grid_Layout>" %}
CSS Grid 레이아웃 & Box 정렬 | MDN
{% endembed %}

{% embed url="<https://rachelandrew.co.uk/css/cheatsheets/box-alignment>" %}
Box 정렬 치트시트 | rachelandrew\.co.uk
{% endembed %}
