Bomb Kirby Running

CSS

grid 알아보기

^. ̫ .^ 2023. 3. 1. 17:45

728x90

gird를 왜 사용하는가?

전 글에서 flex와 마찬가지로 앞으로 활용도가 높아질 것을 대비해 간단히 사용법을 알려드리려고 합니다.

 

grid layout

비교적 지관적이여서 다른 레이아웃보다 사전지식이 덜 필요합니다.

행과 열의 크기, 셀 간격, 정렬 등을 원하는 대로 설정할 수 있습니다.

미디어 쿼리를 사용하여 화면 크기에 따라 그리드의 구성을 다르게 설정 하여 반응형 레이아웃을 쉽게 구현할 수 있습니다.

그리드를 사용하면 HTML 요소의 구조를 더욱 간결하게 표현할 수 있습니다.

 

다음은 그리드 사용 예시를 들어보겠습니다.

 

예시

만약 다음과 같은 레이아웃형태를 만든다고 하면

만들고 싶은 레이아웃 형태

<body>
    <div id="wrap">
        <header id="header"></header>
        <nav id="nav"></nav>
        <aside id="aisde"></aside>
        <article id="article1"></article>
        <article id="article2"></article>
        <article id="article3"></article>
        <footer id="footer"></footer>
    </div>
</body>

저는 바디 부분을 이렇게 만들었습니다.

grid를 사용하기  때문에 div요소를 줄여쓸 수 있습니다.

 

#header {
            grid-area: header;
            background-color: #B3E5FC;
        }
#nav {
    grid-area: nav;
    background-color: #81D4FA;
}
#aisde {
    grid-area: aisde;
    background-color: #4FC3F7;
}
#article1 {
    grid-area: article1;
    background-color: #29B6F6;
}
#article2 {
    grid-area: article2;
    background-color: #03A9F4;
}
#article3 {
    grid-area: article3;
    background-color: #039BE5;
}
#footer {
    grid-area: footer;
    background-color: #0288D1;
}

그 다음 스타일 선언을 하고  각각 gird-area를 설정해줍니다.

 

#wrap {
            width: 1200px;
            margin: 0 auto;
            display: grid;
            grid-template-areas: 
            "header header"
            "nav nav"
            "aisde article1"
            "aisde article2"
            "aisde article3"
            "footer footer"
            ;
            grid-template-columns: 300px 900px;
            grid-template-rows: 100px 100px 260px 260px 260px 100px;
        }

그 다음 전체를 감싸주는 부모 요소에 해당하는 wrap부분에 display: gird;를 설정해줍니다.

예시를 보면 aside부분과 article부분이 크게 두 부분으로 나눠지므로  위에부터 두 부분으로 나눠 합쳐진다고 생각하면 됩니다. 그러므로, grid-template-areas를 두 부분으로 나눠 각각 요소 이름을 기입합니다.

grid-template-columns은 그리드의 열 수와 각 열의 너비를 정의합니다.(width값이라고 생각하면 됩니다.)

가운데 부분이 1200px에서 300px와 900로 나눠지므로 너비를 300px와 900px로 설정합니다.

grid-template-rows 속성은 행(row)의 크기를 정의합니다.(height 값이라고 생각하면 됩니다)

각각의 값을 설정해주면 위의 레이아웃이 나오게 됩니다!

 

이상 grid 사용법을 알아봤습니다.