flex-direction 으로 지정하는 "주축"과 수직 축인 "교차축"으로 나뉜다.display : flex;<div class="container">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
.container {
display: flex;
}
.box {
width: 100px;
height: 100px;
border : 1px solid #000;
}
flex-direction주축에 대한 레이아웃 배치 방향을 지정한다.
| 값 | 설명 |
|---|---|
| row | 아이템들을 가로방향(행, 인라인)으로 배치한다. |
| row-reverse | 아이템들을 row의 반대방향으로 배치한다. |
| column | 아이템들을 세로방향(열, 블록)으로 배치한다. |
| column-reverse | 아이템들을 column의 반대방향으로 배치한다. |
<div class="container">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
.container {
display: flex;
flex-direction: row; /* 기본값. 가로방향으로 배치. */
flex-direction : column; /* 세로방향으로 배치 */
}
.box {
width: 100px;
height: 100px;
border : 1px solid #000;
}
flex-wrap| 값 | 설명 |
|---|---|
| nowrap | 줄바꿈을 일으키지 않고 그대로 배치한다. |
| wrap | 줄바꿈을 일으킨다. |
| wrap-reverse | 줄바꿈을 일으키고 반대방향으로 배치를 한다. |
<div class="container">
<div class="box">asdasdsad</div>
<div class="box">asdasdasdasdas</div>
<div class="box">dasdasd</div>
<div class="box">dasdsadasdasdasdasdas</div>
</div>
.container {
display: flex;
border : 1px solid red;
width: 350px;
flex-wrap : nowrap; /* 기본값. 줄바꿈이 일어나지 않는다. */
flex-wrap : wrap; /* 기본값. 줄바꿈이 일어나지 않는다. */
}
.box {
margin : 5px;
border : 1px solid #000;
}
flex-flowflex-direction 과 flex-wrap 의 축약형 속성.flex-direction의 값, 두번째 값은 flex-wrap의 값을 입력한다.<div class="container">
<div class="box">asdasdsad</div>
<div class="box">asdasdasdasdas</div>
<div class="box">dasdasd</div>
<div class="box">dasdsadasdasdasdasdas</div>
</div>
.container {
display: flex;
border : 1px solid red;
width: 200px;
flex-flow : row wrap; /* 가로방향으로 줄바꿈을 일으키며 정렬. */
}
.box {
margin : 5px;
border : 1px solid #000;
}
flex-basis아이템의 주축 방향의 기본(최소) 크기를 지정합니다.
=> flex-direction의 값이 row인 경우 너비가, column 인 경우 높이가 지정된다.
컨텐츠의 크기가 flex-basis 보다 작은 경우 아이템의 크기가 flex-basis의 값으로 지정된다.
컨텐츠의 크기가 flex-basis 보다 큰 경우 컨텐츠의 크기가 아이템의 크기가 된다.
flex-grow 와 flex-shrink의 기준이 된다.
<div class="container">
<div class="box">asdasdsad</div>
<div class="box">asdasdasdasdas</div>
<div class="box">dasdasd</div>
<div class="box">dasdsadas</div>
</div>
.container {
display: flex;
width:500px;
border: 1px solid red;
}
.box {
/* flex-direction의 기본값이 row이기 때문에 아이템의 기본 너비 지정. */
flex-basis : auto; /* 기본값. 컨텐츠의 너비가 기본 너비.*/
flex-basis : 100px; /* 아이템의 기본 너비가 100px */
flex-basis : 20%; /* 아이템의 기본 너비가 컨테이너 너비의 20% */
margin : 5px;
border : 1px solid #000;
}
flex-growflex-basis 값에 더한 값이 각 아이템의 너비 혹은 높이가 된다.flex-grow를 사용한다면 flex-basis 값도 염두하여 지정해야 한다.<div class="container">
<div class="box">asdasdsad</div>
<div class="box">asdasdasdas</div>
<div class="box">dasdasd</div>
<div class="box">dasdsadas</div>
</div>
.container {
display: flex;
width:500px;
border: 1px solid red;
}
.box {
flex-basis : 100px;
margin : 5px;
border : 1px solid #000;
}
/* .container의 남은 여백 60px을 각 2:1:1:1의 비율로 flex-basis 값에 더한 값을 너비로 가진다. */
.box:nth-child(1) {
flex-grow :2;
}
.box:nth-child(2) {
flex-grow :1;
}
.box:nth-child(3) {
flex-grow :1;
}
.box:nth-child(4) {
flex-grow :1;
}
flex-shrinkflex-shrink 의 값(비율)로 줄인다.<div class="container">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
.container {
display: flex;
width: 300px;
border: 1px solid red;
}
.box {
flex-basis : 100px;
margin : 5px;
border : 1px solid #000;
}
/* 컨테이너의 너비가 부족할 때 2:1:1:1의 비율로 축소한다. */
.box:nth-child(1) {
flex-shrink :2;
}
.box:nth-child(2) {
flex-shrink :1;
}
.box:nth-child(3) {
flex-shrink :1;
}
.box:nth-child(4) {
flex-shrink :1;
}
flexflex-grow, flex-shrink,felx-basis 값의 축약형 속성이다.flex : auto 로 지정하면 flex : 1 1 auto 와 동일하게 동작한다.flex : none 로 지정하면 flex : 0 0 auto 와 동일하게 동작한다.flex : 2 과 같이 숫자 하나만 입력하면 flex : 2 1 0 과 같이 동작한다.flex-grow만 지정하고 flex-shrink 1로, flex-basis는 0으로 지정한 것과 같다. <div class="container">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
.container {
display: flex;
width: 300px;
border: 1px solid red;
}
.box {
margin : 5px;
border : 1px solid #000;
}
.box:nth-child(1) {
/* flex-grow : 2; flex-shrink : 1; flex-basis : 50px; 과 동일 */
flex : 2 1 100px;
}
.box:nth-child(2) {
/* flex-grow : 1; flex-shrink : 1; flex-basis : auto; 와 동일 */
flex-shrink :atuo;
}
.box:nth-child(3) {
/* flex-grow:2; flex-shrink: 1; flex-basis: 0; 와 동일 */
flex : 2;
}
.box:nth-child(4) {
/* flex-grow:1; flex-shrink: 1; flex-basis: 0; 와 동일 */
flex : 1;
}
justify-content, align-itemsjustify-content, align-items 모두 아이템들을 감싸는 컨테이너 박스에 지정한다.justify-content : 주축에 대한 아이템 정렬 방법을 지정한다.flex-direction의 값에 따라 다르게 동작한다.| 값 | 설명 |
|---|---|
| flex-start | 아이템들이 주축의 시작점부터 정렬된다. |
| flex-end | 아이템들이 주축의 끝점부터 정렬된다. |
| center | 아이템들이 주축의 가운데에 정렬된다. |
| space-between | 아이템 사이에 여백을 균등하게 분배한다. |
| space-around | 시작선 및 끝선과 아이템 사이의 공간도 고려하여 여백을 분배한다. |
| space-envenly | 여백을 시작선 및 끝선과 아이템 사이의 공간과 아이템간의 사이 모두 균등하게 분대한다. |
align-items : 교차축에 대한 아이템 정렬 방법을 지정한다.| 값 | 설명 |
|---|---|
| stretch | 아이템을 교차축 방향(너비 혹은 높이)을 컨테이너의 크기(너비 혹은 높이)만큼 늘린다. |
| flex-start | 아이템들이 교차축의 시작점부터 정렬된다. |
| flex-end | 아이템들이 교차축의 끝점부터 정렬된다. |
| center | 아이템들이 교차축의 가운데에 정렬된다. |
<div class="container">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
.container {
display: flex;
width : 500px;
height : 300px;
border: 1px solid red;
align-items: center; /* 아이템들을 교차축의 가운데에 정렬 */
justify-content : center; /* 아이템들을 주축의 가운데에 정렬 */
}
.box {
width : 100px;
height : 100px;
margin : 5px;
border : 1px solid #000;
}
align-selfalign-items와 동일하다.<div class="container">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
.container {
display: flex;
width : 500px;
height : 300px;
border: 1px solid red;
align-items: center; /* 아이템들을 교차축의 가운데에 정렬 */
justify-content : center; /* 아이템들을 주축의 가운데에 정렬 */
}
.box {
width : 100px;
height : 100px;
margin : 5px;
border : 1px solid #000;
}
.box:nth-child(3) {
/* .box 중 세번째 요소만 교차축 정렬을 시작점으로 지정 */
align-self : flex-start;
}