whatisthis?

CSS 그리드( grid ) 실습 예제 본문

WEB STUDY/HTML,CSS

CSS 그리드( grid ) 실습 예제

thisisyjin 2021. 8. 27. 22:28
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style>
      #grid{
        border:5px solid pink;
        display:grid;
        grid-template-columns: 2fr 1fr;
      }

      div{
        border:5px solid gray;
      }
    </style>
  </head>
  <body>
    <div id="grid">
      <div>NAVIGATION</div>
      <div>ARTICLE</div>
    </div>
  </body>
</html>

 

 

CSS 그리드 레이아웃(Grid Layout)은 페이지를 여러 주요 영역으로 나누거나,

크기와 위치 및 문서 계층 구조의 관점에서

HTML 기본 요소로 작성된 CONTROL 간의 관계를 정의하는 데 아주 탁월하다.

 

테이블과 마찬가지로 그리드 레이아웃은 세로 열과 가로 행을 기준으로 요소를 정렬할 수 있다.

하지만, 테이블과 달리 CSS 그리드는 다양한 레이아웃을 훨씬 더 쉽게 구현할 수 있다.

 

예를 들어, 그리드 컨테이너 속 자식 요소를, 마치 CSS로 일일이 위치를 지정해 준 것처럼,

실제로 겹치게 층을 지면서 자리를 잡도록 각 요소의 위치를 지정해 줄 수도 있다.

 

 

GRID 에서는 테이블이라 생각했을때, 가로 값이 column(열), 세로값이 row(행) 이 된다.

즉, grid-template-columns에서는 열의 값을 설정해 주는 것이다,

 

행은 ㅡ (가로로)   / 열은 세로로 읽음
ㅡ 1행                     ㅣ  ㅣ  ㅣ   
ㅡ 2행                   A열 B열 C열 
ㅡ 3행

따라서, 한 행은 가로로 되어있으므로 column값은 가로 길이가 된다.

반대로, row는 세로로 되어있으므로 한 row의 값은 세로 길이가 된다,

 

이는 table에서 width(너비, 즉 가로) /  height(높이, 즉 세로)를 설정해 주는 것과 같다.

 

 

 

<div class="wrapper"> 
   <div class="one">One</div> 
   <div class="two">Two</div> 
   <div class="three">Three</div> 
   <div class="four">Four</div> 
   <div class="five">Five</div> 
   <div class="six">Six</div>
</div>

 

grid를 사용할 떄는 부모요소 div와 자식요소 div들이 필요하다,이때 자식요소들을 감싸는 wrapper역할을 하는 div에 display: grid를 적용해준다.

 

 

 grid-template-columns
 grid-gap
 grid-auto-rows 등 다양한 속성을 적용할 수 있다.

 

이때 사용하는 단위인 fr단위에 대해서 알아보자.

 

만약,  grid-template-columns: 1fr 1fr로 적용하였다면?

두 자식요소인 div는 1:1 비율로 화면에 꽉 차도록 되어있을 것이다.

 

추가로, 예제에서와 같이 grid-template-columns: 2fr 1fr 로 적용했다면

2:1 비율로 (그러나 화면에 꽉 차게 맞춤으로) 되어있을 것이다.

 

 

 

예제 파일 실행 결과

 

 

<div class="wrapper"> 
   <div class="one">One</div> 
   <div class="two">Two</div> 
   <div class="three">Three</div> 
   <div class="four">Four</div> 
   <div class="five">Five</div> 
   <div class="six">Six</div>
</div>

위에서 언급한 예시에서는, 자식 요소 div가 무려 6개나 있다.

이때, columns(열)을 3개로 하고 싶다면, 

다음과 같이 설정하면 된다.

 

grid-template-columns: 1fr 1fr 1fr (1:1:1비율로 설정됨)

이를 조금 간략하게 작성해보면

 

grid-template-columns: repeat(3, 1fr); 이 된다.

 

 

 

 

+) GRID 활용 예제

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style>
      #wrapper{
        border:5px solid blue;
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        grid-gap: 10px;
        grid-auto-rows: minmax(100px, auto);

      }
      .one{
        border:5px solid gray;
        grid-column: 1 / 3;
        grid-row: 1;
      }
      .two{
        border:5px solid gray;

        grid-column: 2 / 4;
        grid-row: 1 / 3;
      }
      .three{
        border:5px solid gray;

        grid-column: 1;
        grid-row: 2 / 5;
      }
      .four{
        border:5px solid gray;

        grid-column: 3;
        grid-row: 3;
      }
      .five{
        border:5px solid gray;

        grid-column: 2;
        grid-row: 4;
      }
      .six{
        border:5px solid gray;

        grid-column: 3;
        grid-row: 4;
      }
    </style>
  </head>
  <body>
    <div id="wrapper">
      <div class="one">One</div>
      <div class="two">Two</div>
      <div class="three">Three</div>
      <div class="four">Four</div>
      <div class="five">Five</div>
      <div class="six">Six</div>
    </div>
  </body>
</html>

 

 

 

grid.html
0.00MB