flexbox = Flexible Box Module
display
flex-direction
flex-wrap
flex-flow
justify-content
align items
flex
order
align-self
display: flex;
: display: flex;
부모 박스 요소에 적용해, 자식 박스의 방향과 크기를 결정한다.
flex-direction
: 자식 요소들을 정렬할 주축의 방향을 설정한다.
flex-direction
row(기본값)
row-reverse
column
column-reverse
flex-wrap
: 자식 요소들을 강제로 한줄에 배치되게 할 것인지, 줄바꿈하여 여러 행으로 배치할 것인지 정한다.
flex-wrap
nowrap(기본값)
wrap
wrap-reverse
flex-flow
: flex-direction
속성과 flex-wrap
속성을 합친 축약형 속성
➡️ 첫 번째 값은 flex-direction이고 두 번째 값은 flex-wrap이다.
flex-flow
flex-direction 속성의 값
, flex-wrap 속성의 값
flex-flow: column wrap;
/* 둘은 같은 코드 */
flex-direction: column;
flex-wrap: wrap;
justify-content
: 자식 요소들을 주축을 기준으로 수평 방향으로 어떻게 정렬할 것인지 정한다.
justify-content
flex-start
center
flex-end
space-around
space-between
space-evenly
space-around
: 요소를 기준으로 양쪽에 일정한 여백을 주어 정렬한다.space-between
: 첫 요소와 마지막 부분을 양쪽 끝에 정렬하고, 나머지 요소들은 일정한 간격으로 정렬한다.space-evenly
: 모든 여백을 똑같게 정렬한다.flex-direction: row
인 경우 ↔️ : 주축 방향(↔️)으로 정렬
flex-direction: column
인 경우 ↕️ : 주축 방향(↕️)으로 정렬
align-items
: 자식 요소들을 주축을 기준으로 수직 방향으로 어떻게 정렬할 것인지 정한다.
stretch(기본값)
flex-start
center
baseline
flex-end
stretch
: 자식 요소의 높이를 늘려 부모 요소의 전체 높이를 채운다.baseline
: 글꼴의 baseline을 기준으로 자식 요소를 정렬한다.flex-direction: row
인 경우 ↔️ : 주축의 수직 방향(↕️)으로 정렬
flex-direction: column
인 경우 ↕️ : 주축의 수직 방향(↔️)으로 정렬
flex
자식 요소에 적용하는 flex
속성은 자식요소의 크기와 관련된 속성이며,
세 가지 속성(flex-grow
flex-shrink
flex-basis
)을 축약한 표현이다.
자식 요소에 flex
속성을 따로 설정해주지 않으면 적용되는 기본값
flex: 0 1 auto;
flex-grow: 0;
flex-shrink: 1;
flex-basis: auto;
flex-grow
: 정렬축 방향으로 빈 공간이 있을 때, 각 자식 요소들이 얼만큼 늘어나서 남는 공간을 차지할 것인지 비율을 지정한다.
property : flex-grow
value : number
flex-grow
의 절대적 크기가 아닌 총합에서의 비율로 빈 공간을 차지한다.
기본값
flex-grow: 0;
flex-grow
의 속성값이 0이면 부모 요소의 크기가 커져도 자식 요소의 크기가 커지지 않고 원래 크기로 유지된다.
➡️ 부모 요소의 크기가 커질 때 자식 요소의 크기도 커지게 하려면 속성값으로 1 이상의 값을 설정해야 한다.
flex-shrink
: 요소의 크기가 줄어들어야 할 때, 설정한 비율만큼 크기가 작아지며 비율이 클 수록 더 많이 줄어든다.
flex-shrink
number
flex-grow
속성과flex-shrink
속성을 함께 사용하는 것을 추천하지 않는 이유
flex-shrink
속성은width
나flex-basis
속성에 따른 비율이므로 실제 크기를 예측하기가 어렵다.
따라서,flex-grow
속성으로 비율을 변경하는 경우,flex-shrink
속성은 기본값인 1로 두어도 무방하다.
flex-basis
: flex-grow
나 flex-shrink
에 의해 늘어나거나 줄어들기 전의 요소가 가지는 기본 크기를 지정한다.
➡️ flex-direction: row
일 때는 너비, column
일 때는 높이를 뜻한다.
flex-basis
width
(length
, percentage
, auto
)flex-basis: 0;
: 자식 요소는 절대적 flex item(absolute flex item)이 되어 부모 요소를 기준으로 크기가 결정된다.
flex-basis: auto;
: 자식 요소는 상대적 flex item(relative flex item)이 되어 콘텐츠의 크기를 기준으로 크기가 결정된다.
flex-basis
와flex-grow: 0;
의 관계
flex-grow: 0;
일 때만flex-basis
의 속성값이 유지된다.flex-grow
의 속성값이 1 이상이면, 자식 요소의 크기는 부모 요소를 채우도록flex-basis
속성에서 지정한 값보다 커진다.
width
와 flex-basis
를 동시에 적용하는 경우, flex-basis
가 우선된다.width
는 정확한 크기를 보장하지 않는다.flex-basis
를 사용하지 않는다면) 콘텐츠가 많아 자식 박스가 넘치는 경우를 대비해, width
대신 max-width
를 사용할 수 있다.
max-width
: 요소의 최대 너비를 설정한다.
max-width
는width
속성의 사용값이 자신의 값보다 커지는걸 방지한다
❔ 학습 후 궁금한 점
max-width
사용법과flex-basis
와 다른 점은 무엇인지?
이 글은 아래 링크를 참고하여 작성한 글입니다.
https://d2.naver.com/helloworld/8540176