플렉스 박스
플렉스 박스 레이아웃
- 그리드 레이아웃을 기본으로, 플렉스 박스를 원하는 위치에 배치하는 것
- 여유 공간에 따라 너비나 높이,위치를 자유롭게 변형할 수 있음
1.플렉스 컨테이너
웹문서에 텍스트나 이미지, 표 등 웹 요소들을 플렉서블하게 사용하려면 먼저 플레스 컨테이너로 묶어줘야함
2.플렉스 항목
플렉스 컨테이너에 담기는 웹요소
3.주축
플렉스 컨테이너 안에서 플렉스 항목을 배치하는 기본방향
기본적으로 왼쪽 ->오른쪽, 수평방향으로 배치
주축에서 플렉스항목이 배치되기 시작하는 지점을 '주축시작점',
배치가 끝나는 지점을 '주축 끝점'이라고 함
4.교차축
주축과 교차되는 방향, 기본적으로 위->아래 배치
교차축에서 배치가 시작되는 지점을 '교차축 시작점'
배치가 끝나느 지점을 '교차축 끝점'이라고 함
display 속성
배치 요소들을 감싸는 부모요소를 플렉스 컨테이너로 지정(배치하려는 웹요소들을 감싸는 부모요소를 만들어야함)
- display: flex 플렉스 박스를 박스레벨요소로 정의
- display:inline-flex 플렉스박스를 인라인 레벨요소로 정의
<style>
#container{display:flex;}
</style>
<div id="container> /*플렉스 컨테이너*/
<div></div> /*2개의 플렉스항목*/
<div></div>
</div>
flex-direction 속성
플렉스 항목 방향 지정, 기본값 row
- row : 주축 가로, 교차축 세로로 지정. 플렉스항목은 주축 시작점에서 끝점(왼쪽에서 오른쪽)배치
- row-inverse: 주축 가로, 교차축 세로로 지정 .플렉스항목 끝점에서 시작점으로
- column:주축 세로, 교차축 가로로지정. 플렉스항목은 주축시작점에서 끝점(위쪽에서 아래쪽)배치
- column-inverse:주축 세로, 교차축 가로로지정.플렉스항목은 주축 끝점에서 시작점(아래쪽에서 위쪽)배치
<style>
#container {
display: flex;
flex-direction: column;
border: 2px solid black;
}
#container div {
width: 200px;
border: 1px solid black;
background: #ccc;
}
</style>
</head>
<body>
<div id="container">
<div id="box1"><h2>1</h2></div>
<div id="box2"><h2>2</h2></div>
<div id="box3"><h2>3</h2></div>
</div>
flex-wrap 속성
플렉스 항목을 한줄 또는 여러줄로 배치
- no-wrap : 한줄에 표시. 기본값
- wrap :여러줄에 표시
- wrap-reverse : 여러줄에 표시하되 기존방향과 반대로 배치
flex-flow 속성 플렉스 배치방향과 여러줄 배치를 한꺼번에 지정
- flex-flow: row no-wrap 기본값
- flex-flow : row; 왼쪽에서 오른쪽으로, 한줄에 표시
- flex-flow : column wrap; 위에서 아래로, 여러줄에 표시
order 속성 플렉스 항목의 배치 순서바꾸기
<style>
#container {
display:flex;
}
#box1 {order:2;} /* box 3 -> box 1 -> box2 순으로 배치 */
#box2 {order:3;}
#box3 {order:1;}
</style>
<div id="container">
<div id="box1"><h2>box1</h2></div>
<div id="box2"><h2>box2</h2></div>
<div id="box3"><h2>box3</h2></div>
</div>
flex 속성 플렉스 항목 크기 조절하기
- flex-grow(항목의 너비를 늘일지) ,flex-shrink(줄일지),flex-basis(기본크기, 0일경우 앞의 두개값고 함께 사용,auto일경우 플렉스 항목의 너비값을 사용 )
- initial : 항목의 width/height 값에 의해 크기가 결정, 플렉스컨테이너의 공간이 부족할경우 최소크기까지 줄임
- auto :항목의 width/height 값에 의해 크기가 결정, 플렉스컨테이너의 공간에 따라 늘이거나 줄임.
플렉스 항목배치를 위한 속성들
justify-content 속성 플렉스 항목을 주축 방향으로 배치할때의 기준
- flex-start : 주축의 시작점을 기준으로배치
- flex-end : 주축의 끝점을 기준으로 배치
- center : 주축의 중앙을 기준으로 배치
- space-between :첫번째,마지막 항목은 시작점과 끝점에 배치, 중앙항목들은 같은간격으로 배치
- space-around : 모든 항목들을 같은 간격으로 배치
align-item속성 교차축을 기준으로 하는 배치 방법 조절
- stretch : 플렉스 항목을 확장해 교차축을 꽉 채움, 기본값
- flex-start: 교차축의 시작점을 기준으로 배치
- flex-end :교차축의 끝점을 기준으로 배치
- center:교차축의 중앙을 기준으로 배치
- baseline: 시작점과 글자기준선이 가장 먼 플렉스 항목을 시작점에 배치하고 그 글자의 기준선과 다른항목의 기준선을 맞추어 배치. (그림에서 2번의 글자크기가 가장크기때문에 기준선또한 가장 멀리 떨어져있으므로 시작점에 배치)
align-self
교차축을 기준으로 배치하는데 플렉스 항목을 개별적으로 배치함. 플렉스 항목자체의 스타일로 지정
auto(플렉스 항목의 부모속성값을 상속받음),stretch,flex-start,flex-end,center,baseline
<style>
#container {
display: flex;
align-items:center;
}
#box1 {align-self:flex-start;} /*첫번째박스만 교차축의 시작점에 배치*/
</style>
align-content
여러줄일때의 배치방법
justify-content의 속성값과 같음 flex-start, flex-end,center,space-between,space-around