728x90
Flexbox
행과 열을 이용하여 항목을 배치하는 레이아웃 메소드이다.
display : flexbox;
Flexbox는 부모 박스 요소를 통해서 자식 박스의 크기 등을 결정한다.
위 코드를 부모 박스에 선언함으로써 실행이 가능하다.
<link rel="stylesheet" href=".idea/layout.css">
<main>
<div id="box1">box1</div>
<div id="box2">box2</div>
<div id="box3">box3</div>
</main>
HTML 코드
<main>이라는 부모 박스 안에 세 개의 <div> 자식 박스가 있다.
main{
display : flex;
border : 1px dotted red;
}
div {
border : 1px solid green;
}
* {
margin : 10px;
padding : 10px;
}
위의 HTML 코드에 연결된 CSS 코드에 display : flex를 추가한다.
Flexbox의 속성
Flexbox에는 부모 요소에 적용해야하는 속성과 자식요소에 적용해야하는 속성이 나뉘어져 있다.
부모 요소에 적용하는 속성
flex-direction
자식 요소들을 정렬하는 정렬 축을 정함
기본 설정은 가로 정렬
main{
display : flex;
flex-direction : row; 가로 정렬
flex-direction : column; 세로 정렬
flex-direction : row-reverse; 가로 정렬(오른쪽에서 왼쪽)
flex-direction : column-reverse; 세로 정렬(아래에서 위)
}
flex-wrap
하위 요소의 크기가 상위 요소의 크기보다 크면 자동으로 줄바꿈을 해줌
main{
display : flex;
flex-wrap : nowrap; 기본값
flex-wrap : wrap; 자동 줄바꿈
flex-wrap : wrap-reverse; 아래에서 위로 줄바꿈
}
justify-content
자식 요소들을 축의 수평 방향으로 정렬함
main{
justify-content : flex-start; 왼쪽 정렬
justify-content : flex-end; 오른쪽 정렬
justify-content : center; 가운데 정렬
justify-content : space-between; 요소 간 정렬
justify-content : space-around; 공간 기준 정렬
}
- flex-direction : column일 경우, 좌우 정렬에서 상하 정렬로 바뀜
- flex-direction : row-reverse일 경우, flex-start가 오른쪽 정렬, flex-end가 왼쪽 정렬
align-items
자식 요소들을 축의 수직 방향으로 정렬함
main{
display : flexbox;
align-items : stretch; 자식 요소의 높이를 컨테이너 높이와 같게 만들고 배치
align-items : flex-start; 위로 정렬
align-items : flex-end; 아래로 정렬
align-items : center; 가운데 정렬
align-items : baseline; 자식 요소를 컨테이너의 기준선에 배치
}
- flex-direction : column일 경우, strech는 길이 → 넓이, 상하 → 좌우, 가로 기준선 → 세로 기준선
- flex-direction : row-reverse일 경우, flex-start가 아래로 정렬, flex-end가 위로 정렬
자식 요소에 적용하는 속성
flex 속성의 값
flex : <grow(팽창 지수)> <shrink(수축 지수)> <basis(기본 크기)> 기본 순서
flex : 0 1 auto 기본값
flex-grow : 0;
flex-shrink : 1;
flex-basis : auto; 이 방식으로도 표현 가능
맨위의 HTML 문서에 아래의 CSS코드를 연결해보자.
main{
display : flex;
border : 1px dotted red;
}
div {
border : 1px solid green;
}
* {
margin : 10px;
padding : 10px;
}
#box1 {
flex : 1 1 auto;
}
#box2 {
flex : 0 1 auto;
}
#box3 {
flex : 0 1 auto;
}
box1의 grow 값만 1로 설정했다.
#box1 {
flex : 3 1 auto;
}
#box2 {
flex : 2 1 auto;
}
#box3 {
flex : 1 1 auto;
}
이번에는 box1의 grow 값을 3, box2는 2, box1은 1로 설정해보았다.
flex-basis
위 CSS 코드의 box1, 2, 3에 속성값으로 0을 주게 되면 absolute flex item이 되어 상위 container를 기준으로 크기가 결정된다. 따라서 완벽한 1 : 1 : 1 비율이 된다.
그러나, auto로 두게 되면 콘텐츠의 크기에 사이즈가 결정되므로 언제나 완벽한 1 : 1 : 1의 비율이 되지 않는다.
728x90
'[FrontEnd] > CSS' 카테고리의 다른 글
페이지 레이아웃 (0) | 2022.08.24 |
---|---|
CSS 박스 모델 (0) | 2022.08.23 |
CSS의 셀렉터 정리 (0) | 2022.08.23 |
CSS의 코드를 보며 기본 구조를 알아보자. (0) | 2022.08.23 |
CSS란? (0) | 2022.08.23 |