flex
기본 한 줄 전부 차지하는 block 요소의 특성, 내부 요소를 꽉 채우려고하는 습성이 있다.
예시
먼저 html을 이용해 div태그 안에 4개의 div 태그를 만든다.
그리고 CSS로 하늘색 컨테이너 안에 빨간 상자 4개를 만든다.
그리고 부모 div(#container)의 display를 flex로 지정한다.
flex 요소의 특성을 설명하는데 안 헷깔리도록 container div에 class를 설정하여 CSS에 따로 적도록 했다.
flex-direction
내부 요소를 진행시키는 방향을 결정
row : 기본값이다. 행 방향으로 상자들이 배열된다.
column : 열 방향으로 상자들이 배열된다.
참고로 row-reverse와 column-reverse를 이용하면 오른쪽에서 왼쪽으로 상자들이 배열된다.
justify-content 와 align-items
둘다 내부 요소들을 어떻게 정렬할 지 정한다. justify-content는 정축 방향, align-items는 교차축 방향
둘다 center로 지정해놓으면, 정 가운데에 배치된다.
justify-content를 flex-start(기본값)으로 지정하면 그대로 오른쪽으로 붙고, flex-end로 지정하면 왼쪽으로 붙는다.
align-items를 flex-start로 지정하면 위쪽으로 붙고, flex-end로 지정하면 아래쪽에 붙는다.
justify-content를 space-between으로 지정한 모습이다. 양 끝 요소를 딱 붙이고, 나머지는 요소들의 여백을 동일하게 둔다.
space-around로 지정할 시, 각 요소들의 양쪽 간격을 동일하게 한다(그래서 양쪽 끝은 여백이 좁을 수 있다.)
space-evently로 지정할 시, 각 요소들 사이의 간격을 완전 동일하게 한다.
flex-wrap
내부 요소를 다음 줄로 이동시킬지 결정한다.
먼저 html을 수정하여, 상자들을 많이 만든다. 그리고 flex-wrap에 nowrap(기본값) 지정
그러면 많은 수의 상자들이 다음줄로 이동하지 않고 한 줄에서 겹쳐진다.
내부 요소의 width와는 상관없이 한 줄 안에 채우려고 노력한다.
wrap으로 설정, 그러자 내부 요소의 width를 유지하여, 부모인 container의 width를 초과할 시, 다음줄로 이동
참고로 wrap-reverse로 설정하면 다음 줄로 이동할 때 반대방향으로 이동한다. (아래에서 위로 이동)
flex 연습 사이트
https://flexboxfroggy.com/#ko
Flexbox Froggy라는 사이트이다. flex CSS코드를 이용하여 개구리를 이동시키는 게임인데,
flex를 연습하는데 많은 도움이 되었다.