display
속성을 flex
로 설정하면 컨테이너 안의 요소들의 가로, 세로 정렬을 자유롭게 할 수 있다.display: flex;
속성 설정과 함께 다른 속성들을 설정함으로써 자유롭게 정렬을 할 수 있다.#pond {
display: flex;
align-items: flex-start;
}
.yellow {
align-self: flex-end;
}
justify-content : 컨테이너 내부 요소들을 가로선 상(main축)에서 정렬
flex-start
: 요소들을 컨테이너의 왼쪽으로 정렬(시작점)flex-end
: 요소들을 컨테이너의 오른쪽으로 정렬(끝점)center
: 요소들을 컨테이너의 가운데로 정렬space-between
: 요소들 사이에 동일한 간격space-around
: 요소들 주위에 동일한 간격space-evenly
: 요소들 주위와 양 끝에 동일한 간격#pond {
display: flex;
justify-content: flex-end;
}
align-items : 컨테이너 내부 요소들을 세로선 상(cross축)에서 정렬
flex-start
: 요소들을 컨테이너의 꼭대기로 정렬(시작점)flex-end
: 요소들을 컨테이너의 바닥으로 정렬(끝점)center
: 요소들을 컨테이너의 세로선 상의 가운데로 정렬baseline
: 요소들을 텍스트 베이스 라인을 기준으로 정렬stretch
: 요소들을 컨테이너에 맞도록 늘립니다.#pond {
display: flex;
align-items: flex-end;
}
flex-direction : 컨테이너 내부 요소들의 정렬 방향 지정
row
: 요소들을 텍스트의 방향과 동일하게 정렬row-reverse
: 요소들을 텍스트의 반대 방향으로 정렬column
: 요소들을 위에서 아래로 정렬column-reverse
: 요소들을 아래에서 위로 정렬#pond {
display: flex;
flex-direction: column;
}
order : 컨테이너의 요소들의 row나 column의 순서를 설정
#pond {
display: flex;
}
.red {
order: -1;
}
align-self : 컨테이너 내부 요소들을 세로선 상에서 정렬
flex-start
: 요소들을 컨테이너의 꼭대기로 정렬flex-end
: 요소들을 컨테이너의 바닥으로 정렬center
: 요소들을 컨테이너의 세로선 상의 가운데로 정렬baseline
: 요소들을 컨테이너의 시작 위치에 정렬stretch
: 요소들을 컨테이너에 맞도록 늘립니다.#pond {
display: flex;
align-items: flex-start;
}
.yellow {
align-self: flex-end;
}
flex-wrap : 컨테이너의 요소들을 "한 줄" 또는 "여러 줄"에 정렬.
nowrap
: 모든 요소들을 한 줄에 정렬wrap
: 요소들을 여러 줄에 걸쳐 정렬wrap-reverse
: 요소들을 여러 줄에 걸쳐 반대로 정렬#pond {
display: flex;
flex-wrap: wrap;
}
flex-flow : flex-direction
과 flex-wrap
"두 속성"의 값들을 인자로 받습니다.
row wrap
: 요소들을 가로선 상의 여러줄에 걸쳐 정렬column wrap
: 요소들을 세로선 상의 **여러줄에 걸쳐 정렬row nowrap
#pond {
display: flex;
flex-flow: column wrap;
}
align-content : 컨테이너 요소들에 대한 여러 줄 사이의 간격을 지정
즉
flex-wrap: wrap;
과 함께 사용될 것이다.
flex-start
: 여러 줄들을 컨테이너의 꼭대기에 정렬합니다.flex-end
: 여러 줄들을 컨테이너의 바닥에 정렬합니다.여러 줄들을 세로선 상의 가운데에 정렬합니다.center
: 여러 줄들을 세로선 상의 가운데에 정렬합니다.space-between
: 여러 줄들 사이에 동일한 간격을 둡니다.space-around
: 여러 줄들 주위에 동일한 간격을 둡니다.stretch
: 여러 줄들을 컨테이너에 맞도록 늘립니다.align-items, align-content 둘 중 하나만 적용이 됨
#pond {
display: flex;
flex-wrap: wrap;
align-content: flex-start;
}
flex-grow : 컨테이너 크기에 맞추면서 확장되는 비중을 설정
// 컨테이너에서 남는 공간을 클래스 aaa와 bbb가 1:3 비율로 가져감
.aaa { flex-grow: 1; }
.bbb { flex-grow: 3; }
flex-shrink : 컨테이너 크기에 맞추면서 축소되는 비중을 설정
// 컨테이너를 초과하는 크기를 클래스 aaa와 bbb가 1:3 비율로 축소함.
.aaa { flex-shrink: 1; }
.bbb { flex-shrink: 3; }
flex-grow
와flex-shrink
둘은 동시에 설정될 일은 없음.
컨테이너의 크기보다 내부 요소들이 작거나 클 때 사용하는 것이라,
두 상황이 양립할 수 없음.
flex-basis : 개별 요소의 기본 크기를 지정.
// 컨테이너 크기의 10%, 30% 로 클래스 aaa, bbb의 크기를 설정
.aaa { flex-basis: 10; }
.bbb { flex-basis: 30; }
z-index
.bbb {
z-index: 1;
transform: scale(2);
}
/* z-index를 설정 안하면 0이므로, 1만 설정해도 나머지 아이템을 보다 위로 올라온다 */