안녕하세요~!! 오늘은 레이아웃 구성 유형의 마지막, grid 유형을 공부해볼게요~!

grid 유형을 사실상 많이 쓴다고 합니다. ㅎㅎ 

그러니까 잘 알아둬야 하겠죵~~?

 

grid

css grid는 기존의 display:flex를 대체할 수 있는 새로운 display property라고 생각하시면 됩니다.

flex와 grid의 가장 큰 차이점은 flex는 1차원 레이아웃인 반면, grid는 2차원 레이아웃이라는 점입니다.

2차원 레이아웃을 지원하기 때문에 행과 열 모두에서 요소를 정렬하고 이동하는 데 사용할 수 있는 많은 도구를 제공합니다. grid는 flex에 비해 더 다양하고 고차원적인 레이아웃이 가능해진다는 장점이 있습니다. 

 

display: grid;

 

#️⃣grid 속성

속성 속성 설명
grid grid속성은 그리드 레이아웃을 정의
grid-auto-columns 열의 크기를 설정
grid-auto-flow 자동 배치 방식을 설정
grid-auto-rows 행의 크기를 설정
grid-row 그리드 아이템의 단축 속성을 설정
grid-row-end 그리드 아이템 행의 끝 위치를 설정
grid-row-gap 그리드 아이템 행의 간격을 설정
grid-row-start 그리드 아이템 행의 시작 위치를 설정
grid-template-columns 열의 크기를 설정

 

그럼 예제를 통해 또 살펴봅시다!

 

레이아웃 grid유형 코드_(grid 적용하기 전)

<!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>레이아웃01 - grid 유형</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        body {
            background-color: #FFF3E0;
        }
        #wrap {
            width: 1200px;
            height: 1080px;
            margin: auto;
        }
        #header {
            width: 1200px;
            height: 100px;
            background-color: #FFE0B2;
        }
        #nav {
            width: 1200px;
            height: 100px;
            background-color: #FFCC80;
        }
        #side {
            width: 400px;
            height: 780px;
            background-color: #FFB74D;
        }
        #contents {
            width: 800px;
            height: 780px;
            background-color: #FFA726;
        }
        #footer {
            width: 1200px;
            height: 100px;
            background-color: #FF9800;
        }
    </style>
</head>
<body>
    <div id="wrap">
        <div id="header"></div>
        <div id="nav"></div>
        <div id="side"></div>
        <div id="contents"></div>
        <div id="footer"></div>
    </div>
</body>
</html>

이렇게 grid쓰기 전 출력을 해보면 이렇게 블록 요소 때문에 세로로 정렬이 되죠~

 

grid를 써서 작업해보도록 할게요!

 

<!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>레이아웃1 - grid방식</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        body {
            background-color: #FFF3E0;
        }
        #wrap {
            width: 1200px;
            margin: 0 auto;
            display: grid;
            grid-template-areas: 
                "header header"
                "nav nav"
                "aside section"
                "footer footer"
            ;
            grid-template-columns: 400px 800px;
            grid-template-rows: 100px 100px 780px 100px;
        }
        #header {
            background-color: #FFE0B2;
            grid-area: header;
        }
        #nav {
            background-color: #FFCC80;
            grid-area: nav;
        }
        #aside {
            background-color: #FFB74D;
            grid-area: aside;
        }
        #section {
            background-color: #FFA726;
            grid-area: section;
        }
        #footer {
            background-color: #FF9800;
            grid-area: footer;
        } 
    </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: grid;를 선언해줍니다.

grid-area를 사용해 영역의 이름을 지정해줍니다.
grid-template-areas 속성을 사용해 각 영역의 이름을 할당하고 그리드 영역을 정의합니다.

grid-template-rows와 grid-template-columns를 사용해 각 구역의 width값과 height값을 적어줍니다.

width값과 height값을 썼기 때문에 기존에 자식에게 있던 width값과 height값은 따로 쓰지 않습니다.

 

그럼 이렇게 레이아웃 화면이 예쁘게 잘 구성이 되었죠?!

grid 유형을 잘 익혀두어 레이아웃 짤 때 활용하면 참 좋을 거 같아요 ㅎ__ㅎ

 

유용하게 잘 봤다고 생각하시면 

공감과 댓글!!!! 부탁드립니당 ヾ(@⌒ー⌒@)ノ

728x90
반응형
다쭐◠‿◠