1분코딩 공부 내용을 바탕으로 정리한 글 입니다.
<div class="container">
<div class="item">helloflex</div>
<div class="item">abc</div>
<div class="item">helloflex</div>
</div>
flaxbox는 어떻게 만들까? (참고: pxd Story)
/* 원하는 요소에 display:flex 속성값을 추가하여 만들 수 있다.*/
div {
display: flex;
}
.container {
flex-direction: row;
/* flex-direction: column; */
/* flex-direction: row-reverse; */
/* flex-direction: column-reverse; */
}
flex-direction | 설명 |
---|---|
row(기본값) | 아이템들이 행(가로) 방향으로 배치 |
row-reverse | 아이템들이 역순으로 가로 배치 |
column | 아이템들이 열(세로) 방향으로 배치 |
column-reverse | 아이템들이 역순으로 세로 배치 |
.container {
flex-wrap: nowrap;
/* flex-wrap: wrap; */
/* flex-wrap: wrap-reverse; */
}
flex-wrap | 설명 |
---|---|
nowrap (기본값) | 줄바꿈을 하지 않음. 넘치면 그냥 삐져 나감 |
wrap | 줄바꿈을 함 |
wrap-reverse | 줄바꿈을 하는데, 아이템을 역순으로 배치 |
flex-flow | flex-direction과 flex-wrap을 한꺼번에 지정할 수 있는 단축 속성 |
.container {
flex-flow: row wrap;
/* 아래의 두 줄을 줄여 쓴 것 */
/* flex-direction: row; */
/* flex-wrap: wrap; */
}
.container {
justify-content: flex-start;
/* justify-content: flex-end; */
/* justify-content: center; */
/* justify-content: space-between; */
/* justify-content: space-around; */
/* justify-content: space-evenly; */
}
justify-content | 설명 |
---|---|
flex-start (기본값) | 아이템들을 시작점으로 정렬. flex-direction이 row(가로 배치)일 때는 왼쪽, column(세로 배치)일 때는 위 |
flex-end | 아이템들을 끝점으로 정렬. flex-direction이 row(가로 배치)일 때는 오른쪽, column(세로 배치)일 때는 아래 |
center | 아이템들을 가운데로 정렬 |
space-between | 아이템들의 “사이(between)”에 균일한 간격을 만들어 줌 |
space-around | 아이템들의 “둘레(around)”에 균일한 간격을 만들어 줌 |
space-evenly | 아이템들의 사이와 양 끝에 균일한 간격을 만들어 줌 , 엣지와 IE지원x |
.container {
align-items: stretch;
/* align-items: flex-start; */
/* align-items: flex-end; */
/* align-items: center; */
/* align-items: baseline; */
}
align-items | 설명 |
---|---|
stretch (기본값) | 아이템들이 수직축 방향으로 끝까지 쭈욱 늘어남 |
flex-start | 아이템들을 시작점으로 정렬. flex-direction이 row(가로 배치)일 때는 위, column(세로 배치)일 때는 왼쪽 |
flex-end | 아이템들을 끝으로 정렬. flex-direction이 row(가로 배치)일 때는 아래, column(세로 배치)일 때는 오른쪽 |
center | 아이템들을 가운데로 정렬 |
baseline | 아이템들을 텍스트 베이스라인 기준으로 정렬 |
아이템 한 가운데에 놓는 방법
justify-content: center;
align-item: center;
.container {
flex-wrap: wrap;
align-content: stretch;
/* align-content: flex-start; */
/* align-content: flex-end; */
/* align-content: center; */
/* align-content: space-between; */
/* align-content: space-around; */
/* align-content: space-evenly; */
}
width값을 설정하지 않았을 때
.item {
flex-basis: auto; /* 기본값 */
/* flex-basis: 0; */
/* flex-basis: 50%; */
/* flex-basis: 300px; */
/* flex-basis: 10rem; */
/* flex-basis: content; */
}
width값을 설정했을 때
.item {
flex-basis: 100px;
}
둘 다 설정했을 때
.item {
width: 100px;
}
.item {
flex-grow: 1;
/* flex-grow: 0; */ /* 기본값 */
}
flex-grow에 들어가는 숫자의 의미
-아이템들의 flex-basis를 제외한 여백 부분을 flex-grow에 지정된 숫자의 비율로 나누어 가진다고 생각하면 된다./* 1:2:1의 비율로 세팅할 경우 */ .item:nth-child(1) { flex-grow: 1; } .item:nth-child(2) { flex-grow: 2; } .item:nth-child(3) { flex-grow: 1; }
.item {
flex-basis: 150px;
flex-shrink: 1; /* 기본값 */
}
고정폭 컬럼 만드는 방법
- flex-shrink를 0으로 세팅하면 아이템의 크기가 flex-basis보다 작아지지 않기 때문에 고정폭의 컬럼을 쉽게 만들 수 있다.
- 고정 크기는 width로 설정한다.
.container { display: flex; } .item:nth-child(1) { flex-shrink: 0; width: 100px; } .item:nth-child(2) { flex-grow: 1; }
.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; */
}
영역 자체를 원하는 비율로 분할하기
.item {
flex: 1 1 0;
}
.item:nth-child(2) {
flex: 2 1 0;
}
flex-wrap과 flex-basis를 이용해서 2단 컬럼의 사각형 목록을 만들기
.container {
display: flex;
flex-wrap: wrap;
}
.item {
flex: 1 1 40%;
}
.item {
align-self: auto;
/* align-self: stretch; */
/* align-self: flex-start; */
/* align-self: flex-end; */
/* align-self: center; */
/* align-self: baseline; */
}
align-self 값을 BBB는 center, CCC는 flex-start로 설정한 예시
.item:nth-child(1) { order: 3; } /* A */
.item:nth-child(2) { order: 1; } /* B */
.item:nth-child(3) { order: 2; } /* C */
.item:nth-child(2) {
z-index: 1;
transform: scale(2);
}
/* z-index를 설정 안하면 0이므로, 1만 설정해도 나머지 아이템을 보다 위로 올라온다 */