Front-end/CSS3
18. Flexbox Layout
JUTABI
2020. 6. 6. 16:03
.flex-container {
margin: 10px;
padding: 15px;
border-radius: 5px;
background: #60B99A;
}
.flex-item {
margin: 10px;
padding: 20px;
color: #fff;
text-align: center;
border-radius: 5px;
background: #4584b1;
}
/*<div class="flex-container">*/
/*<div class="flex-item">1</div>*/
/*<div class="flex-item">2</div>*/
/*<div class="flex-item">3</div>*/
/*<div class="flex-item">4</div>*/
/*<div class="flex-item">5</div>*/
/*</div>*/
/*div 요소는 block 요소이기에 수직정렬. 수평 정렬하려면 flex-item(자식요소)를 inline-block 이나 float 으로*/
.flex-item {
display: inline-block;
float: left;
}
/*위 항목들을 부모 요소 내에서 균등 수평 정렬 하려면*/
.flex-container {
/*flex, inline-flex 는 부모 요소에 반드시 지정해야하는 유일한 속성, 자식 요소는 자동적으로 flex item.*/
display: flex;
justify-content: space-around;
}
.flex-container {
/*좌에서 우로 수평배치. 기본값*/
flex-direction: row;
/*우에서 좌로 수평배치*/
/*row-reverse;*/
/*위에서 아래로 수직 배치*/
/*column;*/
/*아래에서 위로 수직 배치*/
/*column-reverse;*/
}
.flex-container {
/*flex 컨테이너의 width 보다 flex item 들의 width 의 합계가 더 큰 경우, 한줄 or 여러줄로 표현할 것인지를 지정.*/
/*flex item 을 개행하지 않고 1행에 배치. 기본값*/
/*각 flex item 의 폭은 flex container 에 들어갈 수 있는 크기로 축소됨.*/
/*flex item 들의 width 의 합계가 flex 컨테이너의 width 보다 큰 경우 flex 컨테이너를 넘치게 된다.
이때 overflow: auto;를 지정하면 가로 스크롤이 생기며 컨테이너를 넘치지 않는다.*/
flex-wrap: nowrap;
/*flex item 들의 width 의 합계가 flex 컨테이너의 width 보다 큰 경우, flex item 을 복수행에 배치한다.
기본적으로 좌에서 우로, 위에서 아래로 배치된다.*/
/*flex-wrap: wrap;*/
/*wrap 과 동일하나 아래에서 위로 배치된다.*/
/*flex-wrap: wrap-reverse;*/
}
.flex-container {
/*flex-direction 과 flex-wrap 속성을 설정하기 위한 shorthand. 기본값은 row nowrap*/
flex-flow: column wrap;
}
.flex-container {
/*flex container 의 main axis 를 기준으로 flex item 을 수평 정렬*/
/*main start(좌측)를 기준으로 정렬한다. justify-content 속성의 기본값이다.*/
justify-content: flex-start;
/*main end(우측)를 기준으로 정렬한다.*/
/*justify-content: flex-end;*/
/*flex container 의 중앙에 정렬한다.*/
/*justify-content: center;*/
/*첫번째와 마지막 flex item 은 좌우 측면에 정렬되고 나머지와 균등한 간격으로 정렬된다.*/
/*justify-content: space-between;*/
/*모든 flex item 은 균등한 간격으로 정렬된다*/
/*justify-content: space-around;*/
}
.flex-container {
/*flex item 을 flex container 의 수직 방향(cross axis)으로 정렬. 모든 flex item 에 적용.*/
/*모든 flex item 은 flex container 의 높이(cross start 에서 cross end 까지의 높이)에 꽉찬 높이를 갖는다. 기본값.*/
align-items: stretch;
/*모든 flex item 은 flex container 의 cross start 기준으로 정렬된다.*/
/*크기는 그대로 왼쪽 위에서부터 오른쪽으로 정렬*/
/*align-items: flex-start;*/
/*모든 flex item 은 flex container 의 cross end 기준으로 정렬된다.*/
/*크기는 그대로 왼쪽 아래에서부터 오른쪽으로 정렬*/
/*align-items: flex-end;*/
/*모든 flex item 은 flex container 의 cross axis 의 중앙에 정렬된다.*/
/*크기는 그대로 왼쪽 중앙에서부터 오른쪽으로 정렬*/
/*align-items: center;*/
/*모든 flex item 은 flex container 의 baseline 을 기준으로 정렬된다.*/
/*item 의 높이가 달라도 baseline 에 글자를 맞춰서 정렬*/
/*align-items: baseline;*/
}
.flex-container {
/*flex container 의 cross axis 를 기준으로 flex item 을 수직 정렬한다.*/
/*justify-content 속성은 flex container 의 main axis 를 기준으로 flex item 을 수평 정렬*/
/*모든 flex item 은 flex item 의 행 이후에 균등하게 분배된 공간에 정렬되어 배치된다. 기본값.*/
align-content: stretch;
/*모든 flex item 은 flex container 의 cross start 기준으로 stack 정렬된다.*/
/*stack 정렬: 행들이 붙어서 정렬됨. 행과 행 사이에 공간이 없음.*/
/*왼쪽 위에 붙어서 정렬됨.*/
/*align-content: flex-start;*/
/*모든 flex item 은 flex container 의 cross end 기준으로 stack 정렬된다.*/
/*왼쪽 아래에 붙어서 정렬됨.*/
/*align-content: flex-end;*/
/*모든 flex item 은 flex container 의 cross axis 의 중앙에 stack 정렬된다.*/
/*align-content: center;*/
/*첫번째 flex item 의 행은 flex container 의 상단에 마지막 flex item 의 행은 flex container 의 하단에
배치되며 나머지 행은 균등 분할된 공간에 배치 정렬된다.*/
/*align-content: space-between;*/
/*모든 flex item 은 균등 분할된 공간 내에 배치 정렬된다.*/
/*align-content: space-around;*/
}
.flex-item {
/*flex item 의 배치 순서를 지정한다. HTML 코드를 변경하지 않고 order 속성값을 지정하는 것으로 간단히
재배치할 수 있다. 기본 배치 순서는 flex container 에 추가된 순서이다. 기본값은 0이다.*/
order: 0;
/*flex item 의 너비에 대한 확대 인자(flex grow factor)를 지정한다. 기본값은 0이고 음수값은 무효하다.*/
/*모든 flex item 이 동일한 flex-grow 속성값을 가지면 모든 flex item 은 동일한 너비를 갖는다.
두번째 flex item 의 flex-grow 속성값을 3으로 지정하면 다른 flex item 보다 더 넓은 너비를 갖는다.*/
flex-grow: 1;
/*flex item 의 너비에 대한 축소 인자(flex shrink factor)를 지정한다. 기본값은 1이고 음수값은 무효하다.
0을 지정하면 축소가 해제되어 원래의 너비를 유지한다.*/
/*기본적으로 모든 flex item 은 축소된 상태로 지정(기본값 1)하고 두번째 flex item 만 축소를
해제(flex-shrink: 0;)하면 원래의 너비를 유지한다.*/
flex-shrink: 0;
/*flex item 의 너비 기본값을 px, % 등의 단위로 지정한다. 기본값은 auto 이다.*/
flex-basis: 350%;
/*flex-grow, flex-shrink, flex-basis 속성의 shorthand 이다. 기본값은 0 1 auto 이다.*/
/*flex: 0 1 auto;*/
/*align-items 속성(flex container 속성으로 flex item 을 flex container 의 수직 방향(cross axis)으로
정렬한다.)보다 우선하여 개별 flex item 을 정렬한다. 기본값은 auto 이다.*/
align-self: auto; /*| flex-start | flex-end | center | baseline | stretch*/
}