1. flex-basis
flex-direction 이 row일 때는 width, column인 경우는 높이를 설정default 값은 auto 이며 width 속성 값을 사용한다. 만약 width를 따로 설정하지 않으면 content의 크기를 따라간다.content 로 값을 부여하면, 컨텐츠의 크기를 따라간다. 이는 width를 따로 설정하지 않은 경우와 같다.2. flex-grow
flex-basis보다 커질 수 있는지를 결정하는 속성default 값이 0이기 대문에, 따로 적용하기 전까지는 아이템이 늘어나지 않음.flex-grow 에 들어간 숫자의 의미는, 아이템들의 flex-basis 를 제외한 여백 부분을 flex-grow에 지정된 숫자의 비율로 나누어 가진다.
.item {
flex-grow: 1;
}각 아이템들의 여백 비율을 1:1:1로 설정

.item {
flex-grow: 1;
}
.item:nth-child(2) {
flex-grow: 2;
}아이템들의 여백 비율을 1:2:1로 설정
3. flex-shrink
flex-grow 와 쌍을 이루는 속성. flex-basis 값 보다 작아질 수 있는지를 결정한다.default 값은 1이다. 0보다 크면 flex-basis 보다 작아질 수 있는 flexible한 박스가 된다.flex-basis보다 작아지지 않는다. (고정폭의 칼럼을 만들때 유용)4. flex
flex-grow, flex-shrink, flex-basis 를 한번에 쓸 수 있는 축약형.item {
flex: 1;
/* flex-grow: 1; flex-shrink: 1; flex-basis: 0%; */
flex: 1 1 auto;
/* flex-grow: 1; flex-shrink: 1; flex-basis: auto; */
flex: 1 500px;
/* flex-grow: 1; flex-shrink: 1; flex-basis: 500px; */
}flex-basis 를 생략하게 되면 flex-basis 의 값은 0%가 된다.1. align-self
align-items 의 아이템 버젼 속성이다.auto로서, align-items 속성을 상속 받는다.align-self는 align-items보다 우선순위가 높다.align-items와 같다..flex-container {
display: flex;
height: 300px;
align-items: flex-end;
}
.flex-item:nth-child(2) {
align-self: flex-start;
}
2. 아이템의 배치 순서 order
.flex-container {
display: flex;
}
.flex-item:nth-child(1) {
order: 3;
}
.flex-item:nth-child(2) {
order: 100000;
}
.flex-item:nth-child(3) {
order: 2;
}1. 아이템 1개만 오른쪽으로 나열하기
.flex-container {
display: flex;
}
.flex-item {
width: 150px;
}
.flex-item:last-child {
margin-left: auto;
}
margin 을 auto로 주면 남아있는 margin 을 모두 소비한다.margin: 0 auto 를 줘서 중앙 정렬 하는 방식과 같은 원리이다.2. 고정폭 칼럼과 가변폭 칼럼을 함께 만들기
.flex-container {
display: flex;
}
.flex-item:nth-child(1) {
width: 150px;
flex-shrink: 0;
}
.flex-item:nth-child(2) {
flex-grow: 1;
}
.flex-item:nth-child(3) {
width: 250px;
flex-shrink: 0;
}flex-shrink 속성을 0으로 할당해서 브라우저 크기가 줄어들 때 아이템이 flexible에 줄어드는 것을 막았다.flex-grow 를 1로 줘서 브라우저 크기가 늘어날 때 아이템이 flexible하게 넓어지도록 설정.3. 푸터 하단에 고정시키기
예제 마크업
<div class="page">
<header>header</header>
<section class="content">샬라샬라</section>
<footer>footer</footer>
</div>flex-grow 을 이용해서 content 길이를 채워주는게 핵심!.page {
display: flex;
flex-direction: column;
min-height: 100vh;
}
.content {
flex-grow: 1;
}flex-grow 에 값을 줬을 때 잘 채워진다.min-height 에 flex 정렬 옵션을 주면 올바르게 동작하지 않는 버그가 있다. 이런 경우 min-height 대신 height 을 주고 content에 overflow 속성을 주자!!