Chapter1. 레이아웃
1-1 레이아웃
1-2 와이어프레임
1-3 화면 나누기Chapter2. Flexbox
각각의 요소를 목적에 맞게 배치하는 것
웹 개발자에게 웹 사이트 목적에 맞게 화면을 만드는 레이아웃 작업은 중요하다.
웹 또는 애플리케이션을 개발할 때 레이아웃의 뼈대를 그리는 단계.
단순한 선이나 도형으로 웹이나 앱으 인터페이스를 시각적으로 묘사한 것. 즉, 레이아웃과 제품의 구조를 보여주는 용도다.
실물 제품이 없는 무형의 웹은, 실제 제품이 작동하는 모습과 동일하게 HTML 문서를 작성한다. ex)트윗 작성자, 트윗 내용, 작성한 날짜 등을 HTML 문서 내에 하드코딩하는 방식이다.
heigh
속성을 추가하면, 직관적으로 수평분할 가능. HTML 문서의 기본 스타일이 레이아웃 잡는 데 방해가 되기도 한다.
사례1. 박스의 시작을 (0,0)에서 하고 싶은데, <body>
요소 기본 스타일에 여백이 있음
사례2. width
, height
계산이 여백을 포함하지 않아서 계산하기 어려움
사례3. 브라우저마다 기본 스타일이 다름
-> 이러한 문제를 몇 줄의 코드로 기본 스타일링을 제거할 수 있음.
* {
box-sizing: border-box;
}
body {
margin: 0;
padding: 0;
}
[코드] 기본 스타일링을 제거하는 CSS 코드 예시
display: flex;
를 자식 요소가 아닌 부모 요소에 적용해야 함을 이해한다.flex-direction
을 이용하여 요소를 정렬할 방향을 결정할 수 있다.justify-content
와 align-items
를 이용하여 수평-수직 정렬을 결정할 수 있다.flex-grow
를 이용하여 요소를 얼마나 늘릴 것인지 결정할 수 있다.flex-basis
를 이용하여 요소의 기본 크기를 결정할 수 있다.flex(flexible) "잘 구부러지는, 유연한"
Flexbox로 레이아웃을 구성한다 = 박스를 유연하게 늘리거나 줄여 레이아웃을 잡는 방법.
display: flex
부모 박스 요소에 적용해, 자식 박스의 방향과 크기를 결정하는 레이아웃 구성 방법
flex-direction
'부모 요소'에 설정해주는 속성으로, 자식 요소들을 정렬할 정렬 축을 정함. row
, column
, row-reverse
, column-reverse
main {
display: flex;
**flex-direction : row;**
}
/* 부모 요소인 main에 작성하여 자식 요소인 div들을 정렬할 축을 정합니다. */
flex-wrap
하위 요소들의 크기 > 상위 요소의 크기를 넘으면, 자동 줄 바꿈을 할 것인지 정함main {
display: flex;
**flex-wrap : nowrap;**
}
/* 부모 요소인 main에 작성하여 자식 요소인 div들의 줄 바꿈을 어떻게 할지 정합니다. */
justify-content
자식 요소들을 축의 수평 방향으로 어떻게 정렬할 것인지 정함flex-start
,flex-end
,center
,space-between
,space-around
이 있다.align-items
자식 요소들을 축의 수직방향으로 어떻게 정렬할 것인지 정함stretch
, flex-start
, flex-end
, center
, baseline
stretch
, flex-start
, flex-end
, center
, baseline
1. flex:
<grow(팽창지수)> : 요소의 크기가 늘어나야 할 때 얼마나 늘어날 것인지
<shrink(수축지수)> : 줄어들어야 할 때 얼마나 줄어들 것인지
<basis(기본크기)> : 늘어나고 줄어드는 것과 상관없이 요소의 기본 크기는 얼마인지
자식 요소에 flex
속성 따로 설정하지 않으면 아래와 같은 기본값이 적용됨. 왼쪽->오른쪽으로 콘텐츠 크기만큼 배치된다.
felx: 0 1 auto;
이 순서와 기본값 반드시 기억할 것.
flex: grow shrink basis
, flex: 0 1 auto
한번에 세가지 설정할 필요 없이 따로 지정도 가능.
flex-grow: 0;
flex-shrink: 1;
flex-basis: auto;
grow(팽창 지수)
요소의 크기가 늘어나야 할 때 얼마나 늘어날 것인지자식 요소의 grow값
/ 자식 요소들의 grow값의 총합
의 비율로 빈 공간을 가져감Shrink(수축 지수)
설정한 비율만큼 박스 크기가 작아짐. 비율이 클수록 더 많이 줄어듦flex-grow
속성과 함께 사용하는 건 비추grow
속성에 변화를 주는 방식을 권장flex-grow
속성 or flex: <grow> 1 auto
flex-shrink
속성은 width
나 flex-basis
속성에 따른 비율이므로 실제 크기를 예측하기 어렵기 때문임.flex-grow
로 비율을 변경할 경우, flex-shrink
는 기본값인 1로 두어도 무방.basis(기본 크기)
는 자식 박스가 위의 속성에 의해 늘어나거나 줄어들기 전에 가지는 기본 크기다. flex-grow
속성 값이 0일 때 basis
크기를 지정하면 그 크기는 유지되어 다른 box들 처럼 늘어나거나 줄어들지 않음basis
로 설정된 크기가 항상 유지되는 건 아님!flex-grow
속성 값이 양수일 경우, 늘어나면서 flex-basis
속성에 적용한 값보다 커질 수 있음. +)
width
와 flex-basis
를 동시에 적용하면, flex-basis
가 우선됨Width
가 정확한 크기를 보장하지 않음flex-basis
사용 안한다면) 콘텐츠가 많아 자식 박스가 넘치는 경우를 대비해, width
대신 max-width
사용가능