CSS

flex 레이아웃 방식을 알아 봅시다.

이미사용 2023. 3. 1. 19:19
명언
-
728x90
반응형

flex 레이아웃

요소들이 포함된 부모 박스에 display: flex 를 선언하고, 안에 있는 요소들에게 유연하게 배치하는 속성들을 부여하여 레이아웃을 잡는 것입니다. 

다음 display: flex가 들어간 코딩으로 간단한 레이아웃을 만들어 보았습니다.

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>레이아웃 flex 유형</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        body {
            background-color: #FFF3E0;
        }
        #wrap {
            width: 1200px;
            margin: 0 auto;
            display: flex;     //부모 박스에 display: flex를넣어 자연스럽게만들었다. 
            flex-wrap: wrap;
        }
        #header {
            width: 1200px;
            height: 100px;
            background-color: #FFE0B2;
        }
        #nav {
            width: 1200px;
            height: 100px;
            background-color: #FFCC80;
        }
        #aside {
            width: 400px;
            height: 780px;
            background-color: #FFB74D;
        }
        #section {
            width: 800px;
            height: 780px;
            background-color: #FFA726;
        }
        
        #footer {
            width: 1200px;
            height: 100px;
            background-color: #FF9800;
        }
    </style>
</head>
<body>
    <div id="wrap">
        <header id="header"></header>
        <nav id="nav"></nav>
        <aside id="aside"></aside>
        <section id="section"></section>
        <footer id="footer"></footer>
    </div>
    
</body>
</html>

display: flex가 없을때 와 있을때

 

 

 속성 

flex

flex는 세개의 요소 가 섞여 있습니다.

flex-grow

자식 요소가 적거나 그 크기가 작아 공간이 남을 때 항목의 크기를 늘려 채워 주는 방법을 정의 합니다.

0 (기본값)
1 항목들이 모두 1이면  같은 크기임
양수 값을 높게 줄수록 더 늘어남
공간이 부족할 때는 어떤 값도 무의미

flex-shrink

자식 요소가 많거나 그 크기가 커서 공간이 부족할때 항목의 크기를 줄여 채워주는 방법을 정의 합니다.

0 공간이 부족해도 항목의 크기를 줄일 수 없음
1 (기본값) - 자식 요소들이 많아서 컨테이너가 넘치면 알아서 좁아짐
양수 값을 높게 줄수록 더 좁아짐.(내부적으로 수축지수가 자동계산됨) 공간이 남을 때는 어떤 값도 무의미

flex-basis

flex 자식 요소들의 초기 길이를 지정하는 속성입니다.

auto (기본값)
50px,100px,... 원하는 가로 크기를 부여함

flex: <flex-grow> <flex-shrink>  <flex-basis>의 생략

flex:none; 모두 생략 flex: 0 0 auto
flex:1; flex-shrink, flex-basis 생략 flex: 1 1 0;과같음
flex:100px flex-grow, flex-shrink 생략 flex: 1 1 100px;과같음
flex:1 1; flex-basis 생략 flex: 1 1 0;과같음
flex:1 100px flex-shrink 생략 flex: 1 1 100px;과같음

flex-direction

자식 요소를 나열하는 방향을 지정하는 속성입니다. 부모 요소에게 지정합니다.

column 위에서 아래로 나열
column-reverse 아래서 위로 나열
row(기본값) 좌측에서 우측으로 나열
row-reverse 우측에서 좌측으로 나열

 


justify-content 

공간이 남을 때, 즉 flex-grow:0일 때 자식 요소들을 가로 정렬하는 속성입니다.

flex-start 시작쪽으로 정렬 (보통 왼쪽,flex-direction: row-reverse일 때는 오른쪽)
flex-end 끝쪽으로 정렬 (보통 오른쪽,flex-direction: row-reverse일 때는 왼쪽)
center 중앙으로 정렬
space-between 양쪽 정렬
space-around 요소 좌우 동일 간격

 


flex-wrap

flex 자식 요소들의 줄바꿈 방식을 지정하는 속성입니다.

wrap 자식 요소들이 많으면 다음 줄로 넘침
nowrap(기본) 자식 요소들이 많아도 한줄 안에 배치됨
wrap-reverse 자식 요소들이 많으면 다음 위 줄로 넘침

align-items 

자식 요소들을 세로 정렬하는 속성입니다.

flex-start 시작쪽으로 정렬 (보통 위쪽,flex-direction: row-reverse일 때는 아래쪽)
flex-end 끝쪽으로 정렬 (보통 아래쪽,flex-direction: row-reverse일 때는 위쪽)
center 세로 정렬
baseline 글자의 baselin 기준으로 정렬
stretch(기본값) 부모 요소의 세로 크기를 따라 확장됨

 

align-self 

자식 요소 중 선택된 항목에 대해서만 세로로 다시 정렬하는 속성 입니다. 속성들은 align-items의 속성들 과같습니다.


order 

자식 요소들의 순서를 바꿔주는 속성입니다. 몇 번째에 배치할지 순서를 지정합니다.

0(기본값) 순서바꾸지 않음
양수 원하는순서를지정
음수 좌측으로 자리를 바꾸는 횟수

 

 

 

자료 출처:Responsive Web Publishing 반응형 웹 실전 프로젝트 가이드 책