Flex의 속성들은 1. 컨테이너에 적용하는 속성 2. 아이템에 적용하는 속성 이렇게 두가지로 나뉜다.
.flex-container{
display: flex;
}
각자 가진 콘텐츠만큼만 영역을 갖게 된다.
inline-flex는 inline속성을 가지면서 자기가 가진 내용물만큼만 차지하게됨.
flex는 block element처럼 동작함(한 줄을 다 차지)
여기서 메인축과 교차축을 잘 기억해야하는데, 메인축은 가로 교차축은 세로로 이해해야한다. 어묵꼬치의 개념으로 이해하면 쉽다.
.container{
flex-direction: row;
// 또는 column; row-reverse; column-reverse;
}
컨테이너보다 아이템 속 내용이 더 클 경우 어떻게 할 것인가?
flex-direction과 flex-wrap을 한꺼번에 지정할 수 있는 단축 속성
.container{ flex-flow : row wrap; }
위는 flex-direction:row와 flex-wrap:wrap을 줄여쓴 것을 의미함.
<style>
.flex-container{
display: flex;
flex-direction: column;
}
@media (min-width: 600px){
.flex-container{
flex-direction: row;
}
.flex-item {
flex:1;
}
}
</style>
"justify"는 메인축(오뎅꼬치) 방향으로 정렬
"align"은 수직축(오뎅을 뜯어내는) 방향으로 정렬
참고로 space-between은 ■ ■ ■ 이렇게 양 끝에 네모가 오고 가운데에 네모하나가 와서 사이사이가 일정한 것이고, space-around는 각 아이템의 둘레에 균일한 여백을 갖는다.space-evenly는 모든 여백이 모두 균일하다.
stretch(기본값)는 쭉 늘려주는 아이
오뎅꼬치 안에서 어디에 꽂힐지 라고 생각하면 된다.
★★아이템 가운데 정렬은
justify-content: center;
align-item : center;
를 해주면 아이템을 창의 한 가운데에 놓을 수 있다.
flex-wrap: wrap; 이 설정된 상태에서, 아이템들의 행이 2줄 이상 되었을 때의 수직축 방향 정렬을 결정하는 속성
Flex 아이템의 기본 크기를 설정한다.(flex-direction이 row일 땐 너비, column은 높이)
위에는 width:100px이라고 고정하였을 때 B아이템이 알아서 줄바꿈이 되는 것이고, flex-basis는 100px이라 했을 때 A와 C는 그 값만큼 크기가 되었지만 B는 100보다 그보다 크니 B만큼의 크기대로 나온 것(기본 크기 이상으로)
위와 쌍을 이루는 속성으로, 아이템이 flex-basis의 값보다 작아질 수 있는지를 결정한다.
flex-shrink를 0으로 세팅하면 아이템의 크기가 flex-basis보다 작아지지 않기 때문에 고정폭의 컬럼을 쉽게 만들 수 있다. 고정 크기는 width로 설정한다.
flex-grow , flex-shrink , flex-basis를 한번에 쓸 수 있는 축약형 속성. 이 세 속성들은 서로 관련이 깊기에 이 축약형을 쓰는 편이 편하다.
shrink는 항상 기본값이 1이 들어오고, flex-basis는 0%이다.
다단컬럼을 만들 땐 width를 사용해주는 것이 좋다.
(ex. flex : 0 1 60% 0 1 20% 0 1 20% 이렇게)
그리고 flex-grow는 1로 설정을 해주어야 아이템들을 유연하게 처리할 수 있다.
margin-auto
1,2번째 자식들로부터 3번째 자식이 떨어지려면 얘만 따로 margin-left:10px 과 같이 둘 수 있다.
고정폭컬럼과 가변형컬럼
1과 3번째 자식요소들에 flex-shrink을 0으로 하였을 때 최소값이 고정이 되니 이 아이템의 크기는 변하지않는다.
2번째 자식엔 가변폭을 두었는데 0보다 큰 1로 설정하면 늘어난다.
위 아이들은 모두 basis기준으로 작게하거나 크게할 수 있는 요소들이다.
아이템들의 위치를 각각 나열할 수 있다.
각 아이템들의 시각적 나열 순서를 결정하는 속성.
숫자값이 들어가며, 작은 숫자일 수록 먼저 배치된다.
z축 정렬을 할 수 있는데 숫자가 클수록 위로 올라온다.
(z-index를 설정안하면 0이므로, 1만 설정해도 나머지 아이템들 보다 위로 올라온다.)
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
을 사용한다.