개발공부/CSS
[1분코딩] CSS Flex와 Grid 제대로 익히기 #01 (Flex 핵심정리)
김놀먹
2021. 11. 18. 15:01
👉인프런에서 수강하는 1분코딩 강의 노트
flex는 html, css 하면서 한 번 공부했는데 Grid는 해본 적이 없어서
flex 복습 겸 grid 공부! 새로 알게된 내용도 있어서 신기ㅎㅎ
출처 : 1분코딩 블로그 https://studiomeal.com/archives/197
Flex 레이아웃을 만들기 위한 기본적인 HTML 구조
<div class="container"> <!-- 부모요소 - flex의 영향을 받는 전체 공간 -->
<div class="item">Hello</div> <!-- 자식요소 - 설정된 속성에 따라 각각의 아이템들이 배치-->
<div class="item">flex</div> <!-- 자식요소 -->
<div class="item">bye</div> <!-- 자식요소 -->
</div>
Flex 컨테이너에 적용하는 속성들
display : flex
- 아이템들은 가로 방향(기본)으로 배치됨
- 자신이 가진 내용물의 width 만큼만 차지하게 됨 (inline 요소처럼)
- height는 컨테이너의 높이만큼 늘어남
- inline-flex도 있는데, 이건 block과 inline-block의 관계와 같음
- 아이템들이 배치된 방향의 축을 메인 축 (Main Axis)
- 메인축과 수직인 축을 수직축 또는 교차축(Cross Axis)
flex-direction : row, column, row-reverse, column-reverse
- row : 가로방향 (기본값)
- column : 세로 방향
- row-reverse : 역순 가로방향
- column-reverse : 역순 세로 방향
flex-wrap : 컨테이너가 아이템들을 한 줄에 담을 여유공간이 없을 때, 아이템 줄 바꿈을 어떻게 할지 결정하는 속성
- nowrap : 줄바꿈 하지 않음(기본값)
- wrap : 줄바꿈
- wrap-reverse : 줄 바꿈, 아이템 역순 배치
flex-flow : flex-direction과 flex-wrap을 한꺼번에 지정할 수 있는 단축 속성
justify-content : 메인 축 방향 정렬
- flex-start : 시작점으로 정렬 (기본값)
- flex-end : 끝점으로 정렬
- center : 가운데 정렬
- space-between : 사이(between) 간격을 균일하게 정렬
- space-around : 둘레(around) 간격을 균일하게 정렬
- space-evenly : 아이템들의 사이와 양 끝의 간격을 균일하게 정렬 (IE와 엣지에선 지원되지 않음)
align-items : 수직축 방향 정렬 / align-content : 여러 행 정렬
- stretch : 수직축 방향으로 늘어남(기본값)
- flex-start : 시작점으로 정렬
- flex-end : 끝점으로 정렬
- center : 가운데 정렬
- baseline : 텍스트 베이스라인 기준 정렬
Flex 아이템에 적용하는 속성들
flex-basis : 아이템의 기본 크기 설정 (row일 때는 너비, column일 때는 높이)
flex-grow : 아이템이 flex-basis의 값보다 커질 수 있는지 결정하는 속성, 0보다 큰 값이 세팅되면 유연한 박스로 변하여 원래 크기보다 커져 빈 공안을 메움, 기본값은 0
(들어가는 숫자의 의미는 아이템들의 flex-basis를 제외한 여백 부분을 지정된 숫자의 비율로 나누어 가짐)
flex-shrink : 아이템이 flex-basis의 값보다 작아질 수 있는지 결정하는 속성, 0보다 큰 값이 세팅되면 유연한 박스로 변하고 flex-basis보다 작아짐, 기본값은 1이기 때문에 따로 세팅하지 않아도 flex-basis보다 작아질 수 있음
flex : flex-grow, flex-shrink, flex-basis를 한 번에 쓸 수 있는 축약형 속성 (grow, shrink, basis 순서)
.item {
flex: 1;
/* flex-grow: 1; flex-shrink: 1; flex-basis: 0%; */
/* 주의할 점! flex-basis를 생략해서 쓰면 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; */
}
align-self : 수직축으로 아이템 정렬 (align-ietems가 전체 아이템이라면 align-self는 해당 아이템)
- align-items보다 우선권이 있음
- auto : align-items의 설정 상속(기본값)
- stretch : 수직축 방향으로 늘어남
- flex-start : 시작점으로 정렬
- flex-end : 끝점으로 정렬
- center : 가운데 정렬
- baseline : 텍스트 베이스라인 기준 정렬
order : 각 아이템들의 시각적 나열 순서를 결정하는 속성(=배치 순서), 숫자 값이 들어가며, 작은 숫자일수록 먼저 배치 (html 자체 구조를 바꾸는 것은 아님)
z-index : Z 축 정렬, 숫자가 클수록 위로 올라옴
말 줄임표 만들기 (세가지 속성은 세트로 그냥 외우자!)
.user-name {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}