Flexbox는 요소를 1차원적으로 배치할 때 사용된다(가로, 세로).
기본적으로
display: flex;
형식으로 생성해주고 아래와 같은 속성들을 추가해줄 수 있다.
예시)
body {
display: flex;
flex-direction: column;
}
기본 축(main axis) : 요소가 배치된 방향
교차 축(cross axis) : 요소가 배치된 방향과 교차된 방향
flex-start : 기본축 맨앞(기본정렬)
center : 기본축 중앙에 정렬
flex-end : 기본축 맨끝
space-between : 기본축 방향으로 양끝을 늘어뜨려 배치
space-around : 기본축 방향으로 양쪽에 모두 같은 공간이 생기게
space-evenly : 빈 공간의 크기가 모두 동일하도록 배치
justify-content: center;
요소가 넘치는 경우 flex-wrap: wrap을 지정해주면 교차 축 방향으로 넘어가서 배치된다.
flex-wrap: wrap;
flexbox 내에서 요소의 간격을 지정할 때에 margin을 사용해도 된다. 하지만 margin을 사용하는 것은 좋은 코드라곤 할 수 없다.
why?
요소가 추가되거나 삭제되는 등 변경되면, margin값을 일일히 또 지정해줘야 하기 때문
그리서 gap이라는 속성을 통해 간격을 조절해준다.
gap은 가로, 세로 모두 적용 가능
gap: 20px 10px;
주의해야 될 점!!
gap의 속성값의 순서는 반드시 세로, 가로 순서이다.
이것은 flex-direction이 어떤 방향으로 바뀌어도 변하지 않는다.
why?
Grid랑 같이 사용하는 속성이기 때문
flex-grow: 1;
flex-shrink: 0;
flex-basis: 100px;
flex: 1 0 100px;
TIP
많이 사용하는 방법:
빈 공간 채우기flex-grow: 1;
요소크기 고정
flex-shrink: 0;