display: flex
란 요소들을 유연하게 배치하기 위한 display 속성이다. flex를 사용하면, 부모 요소 안에서 자식 요소들이 차지하는 공간을 유동적으로 조정하고, 좌우나 상하, 가운데로 정렬할 수 있다.
컨테이너 내에서 아이템의 주 축(main axis)를 설정한다.
div {
display: flex;
flex-direction: column;
}
flex 안의 아이템들이 한 줄에 다 들어가지 않을 경우, 아이템들을 여러 줄로 나눌 것인지 결정한다.
div {
display: flex;
flex-wrap: wrap;
}
컨테이너의 주 축을 기준으로 아이템들을 정렬한다. 가로 방향.
div {
display: flex;
justify-content: center;
}
flex 컨테이너의 교차 축(cross axis)를 기준으로 아이템들을 정렬한다. 세로 방향.
div {
display: flex;
align-items: flex-end;
}
flex-wrap: wrap
이 적용 되었을 경우, flex 컨테이너 내에서 여러 줄들 사이의 간격을 조절한다.
div {
display: flex;
align-content: space-between;
}
아이템들이 컨테이너 내에서 차지하는 공간 비율을 정한다. 값이 클수록 많은 공간을 차지한다. 값을 0으로 줄 경우 늘어나지 않는다. 컨테이너 너비에 맞게 아이템들의 크기가 분배된다.
flex-basis:0
을 주게 되면 여백 공간이 아닌 전체 공간을 분할한다.
.container {
display: flex;
width: 400px;
height: 200px;
}
.item {
height: 100px;
background-color: gray;
border: 1px solid black;
flex-grow: 1;
}
위의 경우
아이템의 크기를 고정하거나 축소할 때 사용한다. 값이 클수록 적은 공간을 사용한다. 값을 0을 줄경우 줄어들지 않는다.
.container {
display: flex;
flex-wrap: wrap;
width: 300px;
height: 200px;
}
.item {
width: 150px;
height: 100px;
background-color: gray;
border: 1px solid black;
flex-shrink: 1;
}
위의 경우 너비가 300px로 아이템은 150px을 가지기에 2개가 한 줄 나열된다.만약 컨테이너의 너비가 250px로 줄경우 item의 크기는 shrink 속성이 적용 되어 item의 너비가 줄어든다