flexbox란 박스 내 요소 간의 공간 배분과 정렬 기능을 제공하기 위한 1차원 레이아웃 모델이다.
flexbox를 1차원 모델이라 부르는 이유는 레이아웃을 다룰 때 한 번에 하나의 차원(행 또는 열)만을 다룬다는 특성 때문이다.
flexbox를 flex 컨테이너라고도 한다.
flex 컨테이너를 만들기 위해서는 컨테이너에 display : flex; 를 적용해야 한다.
기본적으로 행방향으로 정렬함.
flex 적용 X
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>HTML 문서</title> <style> .item { width: 80px; height: 80px; background: hotpink; } </style> </head> <body> <div class="container"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> </div> </body> </html>
flex 적용 O
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>HTML 문서</title> <style> .container { display: flex; } .item { width: 80px; height: 80px; background: hotpink; } </style> </head> <body> <div class="container"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> </div> </body> </html>
flexbox에는 주축(main-axis)과 교차축(cross-axis)가 있다.
사용자는 목적에 따라 주축과 교차축을 바꿔가며 사용할 수 있다.
만약 세로 방향을 주축으로 하기로 결정했다면, 가로 방향이 교차축이 되는 것
flex-direction 속성은 flexbox 내 요소를 배치할 때 사용할 주축 및 방향(정방향, 역방향)을 지정한다.
row : 기본값. 주축은 행이고 방향은 콘텐츠의 방향과 동일
row-reverse : 주축은 행이고 방향은 콘텐츠의 방향과 반대
column : 주축은 열이고 방향은 콘텐츠의 방향과 동일
column-reverse : 주축은 열이고 방향은 콘텐츠의 방향과 반대
flex-direction : row-reverse 적용
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>HTML 문서</title> <style> .container { display: flex; flex-direction: row-reverse; } .item { width: 80px; height: 80px; background: hotpink; } </style> </head> <body> <div class="container"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> </div> </body> </html>